Systems and methods for voice-based activation of custom device actions
The data processing system facilitates efficient voice-based interactions with client devices by mapping device actions to executable commands and sending them in response to voice inquiries, addressing the challenges of integrating with diverse device models and third-party applications.
Patent Information
- Application Number
- JP2022133277
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2018-03-07
- Filing Date
- 2022-08-24
- Publication Date
- 2025-03-28
- Estimated Expiration
- 2038-05-07
AI Technical Summary
Existing digital virtual assistants (DVAs) face challenges in enabling seamless voice-based interactions with client devices, particularly in integrating with diverse device models and third-party applications without requiring significant modifications to the operating system or maintaining a cloud presence.
A data processing system comprising a communications interface, memory, device action customization components, and a natural language processor component, which receives device action data and identifiers from client devices, maps device actions to executable commands, and sends these commands to perform device actions in response to voice-based inquiries.
Enables efficient voice-based interaction with client devices by accurately identifying device actions and executing corresponding commands, thereby enhancing user experience and allowing for hands-free interaction without the need for extensive OS modifications or cloud infrastructure.
Smart Images

Figure 0007653396000001 
Figure 0007653396000002 
Figure 0007653396000003
Abstract
Description
[Technical field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of and priority to U.S. Provisional Patent Application No. 62 / 640,007, entitled "DISTRIBUTED IDENTIFICATION IN NETWORKED SYSTEM," filed March 7, 2018, which is incorporated by reference in its entirety. [Background technology]
[0002] A digital virtual assistant (DVA) can interact with a client device. For example, a user of a client device can initiate an online task, such as an online search or online transaction, via a voice-based or chat-based inquiry. The DVA can enable hands-free interaction with the client device. Summary of the Invention [Means for solving the problem]
[0003] According to at least one aspect of the present disclosure, a data processing system for enabling voice-based interaction with a client device may include a communication interface, a memory, a device action customization component, and a natural language processor component. The communication interface may receive device action data and an identifier associated with the device action data from a computing device. The device action data may indicate a plurality of device actions supported by the plurality of client devices and a plurality of device executable commands. Each device executable command of the plurality of device executable commands may be configured to trigger execution of a corresponding device action of the plurality of device actions. The memory may store the device action data. The device action customization component may map the device action data to the identifier. The communication interface may receive an audio signal and an identifier from a client device of the plurality of client devices. The audio signal may be acquired by the client device in response to a voice-based query. The natural language processor component may identify a device action of the plurality of device actions supported by the plurality of client devices using the identifier and content associated with the audio signal. The device action customization component may identify a device executable command of the plurality of device executable commands that corresponds to the device action. The communications interface can send device executable commands to the client device for execution in response to the voice-based query to accomplish a device action.
[0004] At least one aspect of the present disclosure relates to a method for enabling voice-based interaction with a client device. The method can include a receiving data processing system receiving device action data and an identifier associated with the device action data from a computing device. The device action data can indicate a plurality of device actions supported by the plurality of client devices and a plurality of device executable commands. Each device executable command of the plurality of device executable commands can trigger execution of a corresponding device action of the plurality of device actions. The method can include the data processing system storing the device action data in a memory. The method can include the data processing system mapping the device action data to the identifier. The method can include the data processing system receiving an audio signal and an identifier from a client device of the plurality of client devices. The audio signal can be obtained by the client device in response to a voice-based query. The method can include the data processing system identifying a device action of the plurality of device actions supported by the plurality of client devices using the identifier and content associated with the audio signal. The method can include the data processing system identifying a device executable command of the plurality of device executable commands that corresponds to the device action. The method may include the data processing system sending a device executable command to the client device for execution in response to the voice-based query to perform a device action.
[0005] According to at least one aspect of the present disclosure, an electronic device for supporting voice-based interaction is provided. The electronic device may include an audio receiver, a communication interface, and a command execution component. The audio receiver may generate an audio signal corresponding to an input voice-based query. The electronic device may be associated with device action data maintained by a remote data processing system and an identifier of the device action data. The device action data may include a plurality of device actions and a plurality of device executable commands supported by the electronic device associated with the device action data. Each device executable command may be configured to trigger execution of a corresponding device action of the plurality of device actions. The communication interface may transmit the identifier and the audio signal to the remote data processing system in response to the voice-based query. The remote data processing system may maintain one or more data structures that map the identifier to the plurality of device actions and the plurality of device executable commands. The communication interface may receive a device executable command of the plurality of device executable commands from the remote data processing system in response to transmitting the audio signal. The device executable command may be identified by the data processing system based on the identifier, the audio signal, and the one or more data structures. The command execution component may be configured to execute the device executable command to perform the device action.
[0006] According to at least one aspect of the present disclosure, a method for supporting voice-based interaction is provided. The method can include an electronic device generating an audio signal corresponding to an input voice-based query. The electronic device can be associated with device action data maintained by a remote data processing system and an identifier of the device action data. The device action data can include a plurality of device actions and a plurality of device executable commands supported by the electronic device associated with the device action data. Each device executable command can be configured to trigger execution of a corresponding device action of the plurality of device actions. The method can include the electronic device transmitting the identifier and the audio signal to the remote data processing system in response to the voice-based query. The remote data processing system can maintain one or more data structures mapping the identifier to the plurality of device actions and the plurality of device executable commands. The method can include the electronic device receiving a device executable command of the plurality of device executable commands from the remote data processing system in response to transmitting the audio signal. The device executable command can be identified by the data processing system based on the identifier, the audio signal, and the one or more data structures. The method can include the electronic device executing the device executable command to perform the device action.
[0007] According to at least one aspect of the present disclosure, a data processing system for providing content in response to a voice-based interaction is provided. The data processing system may include a memory, a device action customization component, a communication interface, and a natural language processor component, as well as a content selector component. The memory may store device action data including a plurality of device action command pairs supported by a plurality of electronic devices. Each device action command pair may include a respective device action of the plurality of device actions, and a respective device executable command of the plurality of device executable commands for triggering performance of the respective device action. The device action customization component may map an identifier to each of the plurality of device action command pairs supported by the plurality of electronic devices. The communication interface may receive the identifier and a signal obtained by the electronic device in response to the voice-based query from the electronic device. The natural language processor component may use the content associated with the audio signal and the identifier to identify a device action command pair of the plurality of device action command pairs. The device action customization component may identify a context of the voice-based query based on the device action data or the device command pair. The content selector component may select a digital component based on the context of the voice-based query. The communications interface can transmit the digital component and a device executable command associated with the device action command pair to the electronic device that, when executed, can cause a device action associated with the device action command pair to be performed and the digital component can be presented (i.e., rendered) by the electronic device.
[0008] According to at least one aspect of the present disclosure, a method of providing content in response to a voice-based interaction is provided. The method can include a data processing system storing in a memory device action data including a plurality of device action command pairs supported by a plurality of electronic devices. Each device action command pair can include a respective device action of the plurality of device actions and a respective device executable command of the plurality of device executable commands for triggering performance of the respective device action. The method can include the data processing system mapping an identifier to each of the plurality of device action command pairs supported by the plurality of electronic devices. The method can include the data processing system receiving from the electronic device the identifier and an audio signal acquired by the electronic device in response to the voice-based query. The method can include the data processing system using the content associated with the audio signal and the identifier to identify a device action command pair of the plurality of device action command pairs. The method can include the data processing system identifying a context of the voice-based query based on the device action data or the device command pair. The method can include the data processing system selecting a digital component based on the context of the voice-based query. The method can include the data processing system transmitting to the electronic device the digital component and the device executable command associated with the device action command pair. A device executable command for performing a device action may be associated with the device action command pair so that the digital component may be rendered by the electronic device.
[0009] These and other aspects and implementations are described in detail below. The above information and the following detailed description include illustrative examples of the various aspects and implementations and provide an overview or framework for understanding the nature and character of the claimed aspects and implementations. The drawings provide illustration and a further understanding of the various aspects and implementations and are incorporated in and constitute a part of this specification.
[0010] The accompanying drawings are not drawn to scale. Like reference numbers and designations in the various drawings indicate like elements. For clarity, not every component may be labeled in every drawing. [Brief description of the drawings]
[0011] [Figure 1] FIG. 1 illustrates an exemplary system for enabling electronic devices with voice-based interaction capabilities and customized digital virtual assistant (DVA) functionality. [Diagram 2] FIG. 1 is a flow diagram of an example method for enabling voice-based interaction in an electronic device. [Diagram 3] FIG. 1 is a block diagram of an electronic device that supports voice-based interaction. [Figure 4] FIG. 1 is a flow diagram of an example method for enabling an electronic device to support voice-based interaction. [Diagram 5] 1 is a flow diagram of an example method for providing content to an electronic device in response to a voice-based interaction. [Figure 6] FIG. 1 is a block diagram showing a general architecture for a computer system that may be employed to implement elements of the systems and methods described and illustrated herein. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0012] Following below is a more detailed description of various concepts related to, and implementations of, methods, apparatus, and systems for enabling audio-based (or chat-based) interaction with a second party device, a third party application, or a combination thereof. The various concepts introduced above and described in further detail below may be implemented in any of numerous ways.
[0013] A digital virtual assistant (DVA) may be integrated into an online platform to enable voice-based (audio-based) or chat-based interaction with a client device associated with the online platform. For example, a user of the client device may initiate an online task, e.g., an online search or online transaction, via a voice-based or chat-based inquiry. The DVA may interpret the voice-based or chat-based inquiry and initiate an online action requested in the voice-based or chat-based inquiry. Generally, a client device having DVA capabilities may also engage in an audio conversation with a respective user to fulfill the user's inquiry. The DVA's ability to conduct a meaningful conversation with the user and accurately service the user's voice-based inquiry adds significant value to the corresponding client device, as it significantly enhances the user experience. In particular, the DVA enables hands-free interaction with the client device. In addition, with accurate interpretation of voice-based or chat-based inputs and meaningful responses, the DVA humanizes the user's interaction with the client device by enabling a perceptible user-device conversation.
[0014] A DVA may be integrated into an online platform and a corresponding client device to enable chat-based or voice-based interaction with the corresponding client device. For example, a DVA client (or DVA software agent) may be integrated into an operating system (OS) of a mobile device or smart home device capable of communicating with one or more remote servers implementing the DVA functionality. The OS and one or more servers implementing the DVA functionality may be provided by the same entity or provider, referred to herein as a first party provider. Such an integration approach implies that a second party device provider (e.g., an original equipment manufacturer (OEM), device manufacturer, or device vendor) different from the first party provider offering the DVA may either implement its own DVA or adopt an OS with a DVA agent integrated therein to enable respective second party devices to support DVA-related functions and services. Both options impose limitations or barriers to the expansion of DVA across a wide range of second party devices. These limitations and barriers also apply to extending the use of DVA to enable voice-based interactions with a third party application (e.g., a mobile application or client application) implemented by a third party provider (e.g., different from the first party provider or second party provider) to operate on a first party device or a second party device.
[0015] For second party device providers, modifying an existing OS or adopting a new OS to integrate a DVA client can be problematic, technically burdensome, and costly. Even if no changes are made to the OS, using the existing DVA of the respective first party provider may require the second party device provider to maintain a cloud presence (e.g., via a cloud server) to communicate with its DVA platform or DVA server and serve the respective second party device. Also, using the existing DVA of the respective first party provider gives the second party device provider little, if any, customization flexibility to differentiate voice-based interactions with their devices or provide customers with a more differentiated experience than competitors. For example, the range and domain of vocabulary used in voice-based interactions with a given second party device may be relatively narrow and specific (e.g., compared to the range and domain of vocabulary used in voice-based interactions with other devices). In particular, each device (e.g., of a given type or model) may support a corresponding specific set of device actions that may differ from device actions supported by other devices. Because user interaction with a device typically involves triggering a corresponding device action, using a narrow vocabulary range that specifies device actions supported by a given type or model of device can help a DVA system to better service a given type or model of device. A DAV system can improve its accuracy in interpreting voice-based queries and providing perceptible responses to such queries. As used herein, a DVA system refers to a data processing system that provides server-side DVA functionality.
[0016] Similar limitations and barriers apply with respect to extending the use of DVA-based services or capabilities (e.g., voice-based or chat-based interactions) to third party applications. Third party applications may include mobile applications, client applications, or other applications developed by third party developers. As used herein, a third party is an entity (e.g., an application developer) that is different from the entity providing the DVA system (also referred to herein as the first party) and the entity providing the device on which the application may run or operate (also referred to herein as the second party). Third party applications may not be initially installed on the device during the manufacturing or development phase, but rather may be downloaded and installed (or even developed) after the device is sold in the market. Even if a device supports a DVA client, third party applications running on the device may not be able to employ DVA functionality, for example, to enable voice-based interactions with the third party application or its content.
[0017] In the present disclosure, a self-service approach may allow a second party device provider or a third party application provider to enable voice-based (or chat-based) interaction to trigger respective custom actions. A second party device provider may build or define a bundle (or action package) of custom device actions supported by a respective group of devices (e.g., devices of a given type, category, or model) and provide the bundle (or action package) to the DVA system. Each bundle of custom device actions may include (or specify) one or more device actions supported by the respective group of devices and one or more corresponding device executable commands. Each device action in a bundle of custom device actions may be associated with a corresponding device executable command for executing (or causing to be accomplished) the device action on any device of the respective group of devices. The bundle of custom device actions may also include (or specify) for each device action, a corresponding response (e.g., an audio response, a visual response, or an audiovisual response) to be provided for presentation on any device of the respective group of devices upon execution of the device action.
[0018] The DVA system can maintain each bundle of custom device actions in association with a respective identifier. The identifier can be a device model identifier (ID) indicating the device model of the group of devices associated with the bundle of custom device actions, an identifier of the second party device provider, a bundle ID, a directory ID of a directory under which the bundle of custom device actions is maintained, or a combination thereof. The second party device provider can provide the identifier along with the bundle of custom device actions to the DVA system. The process of providing the bundle of custom device actions and the identifier to the DVA system can be seen as registering the devices (or corresponding device models) of the corresponding device group with the DVA system. Registering a device model (or group of devices) may also include providing an indication of the nature, characteristics, features, or capabilities of the group of devices (e.g., associated with the device model), other metadata associated with the group of devices or device model, or a combination thereof. The DVA system (or its first party provider) can enable the second party device provider to register the device model (or group of devices) with the DVA system, for example, via a user interface (UI), a web interface, or a RESTful application programming interface (API). A first party provider or DVA system may validate (or certify) a device model (or group of devices) upon, for example, successfully testing device executable commands provided in a bundle of custom device actions.
[0019] Similarly, third party application providers can build or define bundles (or packages) of custom application actions supported by their respective applications and can provide the bundles (or packages) to the DVA system. A bundle of custom application actions can include one or more actions supported by the application and one or more corresponding application executable commands. Each custom application action can be associated with a corresponding application executable command for causing the application to perform the custom application action. Similar to bundles of custom device actions, the DVA system can keep each bundle of custom application actions in association with a respective identifier. The identifier can be an application ID, a third party application provider ID, a bundle ID, or a directory ID indicating the directory (or project) under which the bundle of custom application actions is kept.
[0020] A first party provider or a DVA system can provide one or more software development kits (SDKs) for integration of a second party device or a third party application to enable voice-based user interaction. A first party provider can provide separate SDKs for second party devices and third party applications. When integrated into a second party device or a third party application, the SDK can provide software tools for activating an audio receiver (e.g., a microphone), initiating a conversation, initiating a communication session with the DVA system, sending requests and receiving responses from the DVA system, parsing responses received from the DVA system, or combinations thereof. A second party device provider or a third party application provider can also build on-device action handlers for performing on-device execution of device-executable commands or application-executable commands.
[0021] A second party device (e.g., associated with a registered device group or device model) can receive a voice-based query from a respective user and generate an audio signal corresponding to the voice-based query. The second party device can transmit the audio signal along with an identifier (e.g., device model ID) associated with a respective action package to the DVA system. The DVA system can identify a device action among the device actions listed in the respective action packages of the custom device action based on the audio signal and the identifier. In identifying the device action, the DVA system can assign different weights to expressions or query patterns indicative of the actions listed in the respective action packages. The DVA system can apply a contextual device action matching and ranking mechanism with a contextual voice bias to query patterns indicative of device actions supported by the device model. For example, in matching a received audio signal to a query pattern of a plurality of query patterns, the DVA system can apply a bias to query patterns associated with (or indicative of) device actions supported by the device model.
[0022] The DVA system can retrieve a device executable command associated with the identified device action and send the device executable command to the second party device for execution. The DVA system can also retrieve a response associated with the identified device action and send an audio version of the response to the second party device for presentation (or playback) to the user before, during, or after the execution of the device action requested in the voice-based query. When the second party device receives the device executable command, an on-device action handler can extract or retrieve the device executable command from the communication received from the DVA system and cause the second party device to execute the device executable command to execute the device action requested in the voice-based query. The second party device can play any audio, visual, or audiovisual response (received from the DVA system) before, during, or after the execution of the device action.
[0023] A third party application (e.g., having an SDK integrated therein and operating on the device) can provide interactive user interface (UI) components for presentation on a display of the device. A user of the device can interact with the interactive UI components (e.g., by clicking, touching, or swiping) to, for example, initiate a conversation with the third party application. Upon receiving a voice-based query from the user, the application can generate an audio signal corresponding to the voice-based query and can transmit the audio signal along with an identifier (e.g., application ID, action package ID, directory ID) associated with the respective action package to the DVA system. The DVA system can identify an application action among the custom application actions listed in the respective action packages based on the audio signal and the identifier. In identifying device actions, the DVA system can assign different weights to expressions or query patterns indicative of actions listed in the respective action packages. The DVA system can apply a contextual device action matching and ranking mechanism with a contextual voice bias to query patterns indicative of application actions supported by the third party application. The DVA system can identify a command associated with the application action and can transmit the command to the device for execution by the third party application.
[0024] The DVA system can also use the identifier, the identified device or application action, the device's identifier, or a combination thereof to identify the context of the voice-based query. Identifying the context of the voice-based query can include identifying the user intent behind the voice-based query. The DVA system can select a digital component, such as a third party digital component (e.g., an advertisement), based on the context of the voice-based query and send the digital component to the device for presentation. The digital component can include audio or audiovisual content. The digital component can include promotional content to suggest or offer a service or product to the user. The device can seamlessly present the digital component in a way that feels or appears to the user as part of a natural response to the voice-based query.
[0025] According to an exemplary embodiment of the present disclosure, the systems, methods, and devices described herein enable voice-based interaction with a second party device or a third party application by employing an on-device execution model of device actions without the second party device provider or the third party application provider having a cloud point to communicate with a DVA system associated with the first party provider. The DVA system can receive an audio query from the second party device and can perform voice recognition and smart natural language processing to identify the requested device or application action. The DVA system can provide a response, e.g., a JSON response, to the second party device indicating a device executable command that triggers the second party device to perform the requested device action. Also, according to an exemplary embodiment of the present disclosure, a user may make a voice-based query to request the performance of a specific device action or a specific application action without explicitly asking the device to call or speak to an agent.
[0026] In the following, a device action may refer to a custom device action or a custom application action. In effect, both custom device actions and custom application actions are executed by an electronic (or client) device. Also, an electronic (or client) device or system may refer to a device or system that has electronic (or processing) capabilities to execute instructions or commands.
[0027] FIG. 1 illustrates an exemplary system 100 for enabling electronic devices and third party applications with voice-based interaction capabilities and customized digital virtual assistant (DVA) functionality. The system 100 can include a data processing system 102 and a number of client devices 104 communicatively coupled to the data processing system 102 via a communication network 106. The data processing system 102 and the client devices 104 can be associated with different or separate providers. The system 100 can include one or more computing devices 108 associated with a provider of the client devices 104 or a provider of third party applications executable on the client devices 104 (e.g., second party devices). As used herein, a device provider can include a device manufacturer or another entity that provides the client devices 104 to customers or users. A third party application provider can include an application developer or another entity that offers applications for consumption. The one or more computing devices 108 can be communicatively coupled to the data processing system 102 through the communication network 106. The communications network 106 may include the Internet, a wireless cellular network, a wired network, a local area network, a wide area network, a public network, a private network, or a combination thereof.
[0028] The data processing system 102 may include a memory 110 for storing data or computer code instructions, one or more processors 112 for executing computer code instructions, and a communication interface 114 for communicating with other systems or devices, such as the client device 104 or the computing device 108. The data processing system 102 may include a data repository 116 for storing one or more action packages (or bundles) 118. The data processing system 102 may include an action customization component 120 for managing the storage, access, or processing of the action packages 118 or corresponding data. The data processing system 102 may include a speech recognition component 122 for converting audio signals to text, and a natural language processor (NLP) component 124 for determining the structure and meaning of text, such as the text output provided by the speech recognition component 122. The data processing system 102 may include an audio signal generator component for converting text to a corresponding audio (or audible) signal. The data processing system 102 may include a content selector component 128 for selecting content or digital components (also referred to herein as content items) for presentation on the client device 104 .
[0029] The data processing system 102 may include one or more computer servers (not shown in FIG. 1). For example, the data processing system 102 may include multiple servers (not shown in FIG. 1) that are logically grouped to facilitate distributed computing techniques. A logical group of servers may be referred to as a data center, a server farm, or a machine farm. The servers may be geographically distributed. A data center or a machine farm may be managed as a single entity, or a machine farm may include multiple machine farms. The servers in each machine farm may be heterogeneous, with one or more of the servers or machines operating according to one or more types of operating system platforms. The data processing system 102 may include servers in a data center that are stored in one or more high-density rack systems, for example, with associated storage systems located in an enterprise data center. A data processing system 102 having integrated servers in this manner may improve system manageability, data security, system physical security, and system performance by arranging the servers and high-performance storage systems in a localized high-performance network. Centralization of all or some of the data processing system 102 components, including servers and storage systems, and coupling them with advanced system management tools, allows for more efficient use of server resources, which conserves power and processing requirements and reduces bandwidth usage.
[0030] The client device 104 may include a set of second party devices, e.g., having (or associated with) a device model defined by a provider of the set of second party devices. In general, the data processing system 102 may serve (or be communicatively coupled to) multiple sets of second party devices, with each set of second party devices having (or associated with) a respective device model or device type. The client device 104 may include a first party device or a second party device on which a third party application is installed. The client (or electronic) device 104 may include a robot, an automobile or other vehicle, an appliance, a home security system, a lighting control system, a cable box, a smart television, a media player, a radio device, a smart alarm clock, a smart watch, a mobile or handheld device (e.g., a tablet, a smartphone, or a handheld media player), a video game console, a medical imaging device, a fitness and exercise device, or other device having processing capabilities to execute instructions or commands and communication capabilities to communicate with the data processing system 102, e.g., via the network 106. A device model may be defined (or specified) by a device provider to define a set or group of the provider's devices sharing a respective set of functions, properties, characteristics, or capabilities. Examples of device models may include an automobile (or other vehicle model), an appliance model (refrigerator model or stove model), a home security system model, a lighting control system model, a cable box model, a smart television model, a media player model, a radio device model, a smart alarm clock model, a smart watch model, a smartphone model, a tablet model, a laptop model, a video game console model, a medical imaging device model, or a fitness and exercise device model.A device model may include a device model identifier (e.g., a device model name, a device model serial number, or a device model code). Second party devices having a given device model may have device identifiers that share a common portion. The common portion of the device identifiers may serve as an identifier or indicator of the device model. A device provider may have multiple sets (or groups) of devices 104, with each set or group associated with a corresponding device model.
[0031] A second party device associated with a given device model (or device type or device category) may support a respective number of device actions. Each number of device actions may represent actions that may be performed by a second party device having a given device model and may be triggered by a user of the second party device. For example, device actions associated with a robot of a given robot model may include, for example, move left, move right, move forward, move backward, or combinations thereof. Device actions supported by a home security system of a given security system model may include, for example, activate an away mode, activate a stay mode, switch to a particular camera (e.g., of a particular camera number), activate an alarm, deactivate an alarm, or combinations thereof. Device actions supported by a fitness and exercise device (e.g., a treadmill) of a given fitness and exercise device model may include, for example, activate / switch a cardio mode, activate / switch a fat burn mode, set speed to a particular speed value, set height to a particular elevation angle, or combinations thereof. Each device action for a given device model may be associated with a corresponding command (ie, a device executable command) that triggers a second party device having the given device model to perform that device action.
[0032] Third party applications may also support respective device actions. Each device action may represent an action that may be performed by a client device 104 on which the third party application is installed and may be triggered by a user of the third party application or the client device. For example, a device (or application) action associated with an application for connecting drivers with passengers may include searching for a ride from a first location to a second location, selecting a ride from a list of rides, checking the driver's current location, or a combination thereof. A device (or application) action of a social network application may include opening a page (e.g., a friend's page), playing a media file shared by a friend, sharing a content item, replying to a friend's post with input content, or a combination thereof. A device (or application) action of a navigation application may include providing driving directions (or a route) from a first location to a second location, providing traffic information along the route, searching for facilities (e.g., gas stations, rest areas, or restaurants) along the route, switching to an alternative route, or a combination thereof.
[0033] A third party application provider or a second party device provider can generate an action package 118 (e.g., a device action file or a device action script) that specifies device actions supported by the third party application (or a client device 104 that installs the third party application) or the client device 104 (e.g., a second party device) associated with the device model, respectively. For each device action, the action package 118 can enumerate one or more query patterns for triggering the device action on the client device 104. For example, for a robot of a given robot model, the query patterns can include "move left" and "go left" for a left movement action, "move right" and "go right" for a right movement action, "move forward" and "go forward" for a forward movement action, "move backward" and "go backward" for a backward movement action, or combinations thereof. For a home security system of a given security system model, the query pattern may include "activate away mode" and "switch to away mode" for an action to activate an away security mode, "activate stay mode" and "switch to stay mode" for an action to activate a stay security mode, "switch to camera CAMERA_NUMBER" for an action to switch to video content from a particular camera, "activate alarm" for an action to activate an alarm, "deactivate alarm" for an action to deactivate an alarm, or combinations thereof. For a fitness and exercise device (e.g., a treadmill) of a given fitness and exercise device model, the query pattern may include, for example, "activate cardiac mode" and "switch to cardiac mode" for an action to activate a cardiovascular mode, and "activate fat burn mode" and "switch to fat burn mode" for an action to activate a fat burn mode.For mobile devices, example query patterns can include "open settings," "open email," "show me my reminders," or combinations thereof. For an application for connecting drivers with passengers, example queries can include "need a ride from LOCATION1 to LOCATION2," "go for a RIDE," or "show me driver's location." Example queries for a social network application can include "open FRIEND page," "play video," "share video," or "comment on POST with CONTENT." For a navigation application, corresponding queries can include "show me driving directions from LOCATION1 to LOCATION2," "show me traffic info," "show me FACILITIES," or "switch to a new route."
[0034] The action package 118 may include an action name for each device action. For each device action, the action package 118 may specify a respective device executable command (or application executable command) for triggering on-device execution of the device action. For each device action, the action package 118 may specify a response to be presented by the client device 104 upon execution of the device action. Each response may be written as a textual representation that may be converted to audio for presentation by the client device 104. The script below provides an example of an example script defining an action package for a smart cooking appliance. { "manifest":{...}, "actions":[ { "intent":{ "name":"com.smart_cooker.COOK_CAKE", "trigger":{ "queryPatterns":[ "bake a cake", "cook a cake" ] } }, "availability":{ "deviceAction":true }, "staticFulfillment":{ "textToSpeech":"Baking a cake", "deviceExecution":{ "command":"com.smart_cooker.command.COOK_CAKE" } } } ] } The script defines a single device action for cooking a cake, named "COOK_CAKE." The script also defines query patterns "bake a cake" and "cook a cake" associated with the device action. The script defines a device executable command "command.COOK_CAKE" for executing the device action. Additionally, the script may define a response, e.g., "Baking a cake," to be played in audio format by the client device 104 in response to, for example, the voice query "bake a cake" or "cook a cake."
[0035] A second party device provider or a third party application provider can use the computing device 108 to provide the corresponding action package and an identifier (ID) associated with the action package to the data processing system 102. For example, the second party device provider can register their respective device model with the data processing system 102 via the computing device 108. The computing device 108 can include a desktop, laptop, smartphone, handheld device, or other computing device. The computing device 108 can transmit the action package 118 and the device model data to the data processing system 102 as part of the registration of the device model. The device model data can include, for example, an indicator (or representation) of the device model (e.g., a device model identifier or device model name), an indication of the nature, characteristics, features, or capabilities of the device associated with the device model, the name of the corresponding second party device provider, a description of the device associated with the device model, and an indication of the device type, or a combination thereof. The third party application provider may also use the computing device 108 to provide the respective action packages (e.g., that define device actions supported by the application) and IDs associated with the action packages (e.g., application IDs, package IDs, directory IDs, or project IDs) to the data processing system 102. The data processing system 102 may provide a RESTful API or UI for use by the computing device 108 to send the action data, IDs, or other information to the data processing system 102. For example, the UI may be associated with a web page or application provided by the data processing system 102 or the first party provider.The computing device 108 may access a web page or application to, for example, allow filling of corresponding text entry slots in the UI with device action data, device model data, application information data, or a combination thereof. A RESTful API is an API that uses HTTP requests (e.g., GET, PUT, POST, or DELETE) to request, transfer, or delete data.
[0036] The script below provides an illustrative example of data that may be provided by the computing device 108 to the data processing system 102 as part of registering a second party device. This data pertains to the smart cooking appliances described with respect to the example action package provided above. { "project_id":"my-smart-cooker", "device_model_id":"smart-cooker-v1", "manifest":{ "manufacturer":"Smart Cooker Inc", "product_name":"Smart Cooker", "device_description":"Smart device for cooking" }, "device_type":"action.devices.types.OTHER", "actionConfig":{ "supportedIntents":[ "com.smart_cooker.intent.COOK_CAKE" ] } } The data in the above script specifies the device model ID, manufacturer name, product name, device description, device type, and a reference (e.g., "com.smart_cooker.intent.COOK_CAKE") to an action package (e.g., the action package associated with the first script above). The computing device 108 can also send the action package, identifier, and other information associated with the second party device (or third party application) to the data processing system 102, either separately or together.
[0037] The components of data processing system 102 are described in further detail below with respect to FIGS.
[0038] 2 illustrates a flow diagram of an example method 200 for enabling voice-based interaction with a client (or electronic) device. The method 200 may include receiving device action data and a respective identifier (ACT 202). The method 200 may include storing the device action data in a memory (ACT 204). The method 200 may include mapping the identifier to the device action data (ACT 206). The method 200 may include receiving an identifier and an audio signal from the client device (ACT 208). The method 200 may include identifying a device action based on the identifier and the audio signal (ACT 210). The method 200 may include identifying a device executable command corresponding to the device action (ACT 212). The method 200 may include sending the device executable command to the client device (ACT 214).
[0039] 1 and 2, the method 200 may include the data processing system 102 receiving (ACT 202) device action data and a corresponding identifier from a corresponding computing device 108. The computing device 108 may be associated with a second party device provider or a third party application provider. The identifier may include a device model ID (e.g., a device model name, a device model code, or a combination thereof), a device type ID, a project ID, a directory ID, an application ID, an action package ID, a provider ID, or a combination thereof. The project ID may identify a project that enables a set of second party devices or third party applications using voice-based interaction. The project may refer to a collection of software tools and / or data provided to the data processing system 102 by the second party device provider or the third party application provider. The directory ID may identify a directory used by the data processing system 102 to store the action data. The device action data may include an indication of a number of device actions supported by the second party device (e.g., associated with the device model ID or device type ID) or by the third party application (e.g., associated with the application ID or project ID). The device action data may also include a plurality of device executable commands, each of which may be associated with a corresponding device action of the plurality of device actions, and for each device action, the corresponding device executable command may trigger the execution of the device action on one or more client devices 104.The data processing system 102 may also receive information including an indication of the device type, an identifier or name of the second party device provider, an identifier or name of the third party application provider, a device model or description of the corresponding second party device, a description of the third party application, a version of the third party application, or a combination thereof.
[0040] The communications interface 114 may also receive a plurality of responses for presentation by the client device 104 regarding the execution of the device action. Each response of the plurality of responses may be associated with a corresponding device action and provided to the client device 104 for presentation regarding the execution of the corresponding device action. For example, a response may be played in audio format by the client device 104 to inform a user of the initiation, progress, or completion of the execution of the corresponding device action.
[0041] The method 200 may include storing device action data in a memory (ACT 204). The memory 110 or the device action customization component 120 may allocate a data repository 116 for storing device action data for different device models, different third party applications, or a combination thereof. The device action customization component 120 may store device action data associated with separate device models or separate third party applications separately, e.g., as separate action packages 118. Each action package 118 may include one or more corresponding data structures, one or more corresponding data files, or a combination thereof, that list a plurality of device actions and corresponding device executable commands, e.g., associated with the device model or third party application.
[0042] The method 200 may include mapping the identifier to the device action data (ACT 206). The device action customization component 120 may configure the device action data such that the identifier is mapped or linked to each of a plurality of device actions in a corresponding action package 118. For example, the action package 118 as stored by the data processing system 102 may be identified by a corresponding identifier. For example, the device action customization component 120 may assign a name to the action package 118 that includes the identifier, or may store the action package 118 in a directory with a name that includes the identifier. The device action customization component 120 may also map or link each device action to a corresponding device executable command. The device action customization component 114 may also map or link each device action to a corresponding response, if any. For example, the device action customization component 120 may store the device actions, device executable commands, and responses in a table with each device action sharing the same row (or the same column) with the corresponding device executable command and the corresponding response.
[0043] For second party devices associated with a device model, the device action customization component 120 may also activate or authenticate the device model before servicing the second party device associated with that device model. For example, upon successful testing of device executable commands (e.g., on a prototype or actual second party device), the device action customization component 120 may activate or authenticate the device model by setting (or creating a parameter) in the corresponding action package 118 to indicate that the action package 118 is active. Second party devices associated with inactive action packages may not be serviced by the data processing system 102.
[0044] The method 200 may include receiving an identifier and an audio signal from a client device (ACT 208). The communication interface 114 may receive an audio signal and an identifier from the client device 104 (e.g., associated with the action package 118) in response to a voice-based query from a user of the client device 104. For example, for a second party device, a respective user may make a voice-based query to the second party device, which may record an audio signal corresponding to the query and send it to the data processing system 102 along with the identifier. For a third party application, the application may provide an interactive UI component for initiating a conversation with the client device 104 on which the application is installed. Upon interacting with the interactive UI component, the application may cause the client device 104 to, for example, activate an audio receiver (e.g., a microphone), establish a communication session with the data processing system 102, or both. When a user makes a voice-based query, the application may cause the client device 104 to record an audio signal representing the query and send it to the data processing system 102 along with the identifier. The client device 104 may specify another audio source, different from the audio receiver, for receiving audio input from it for sending to the data processing system 102 .
[0045] The method 200 may include identifying a device action based on the identifier and the audio signal (ACT 210). The device action customization component 120 may use the received identifier to identify a corresponding action package 118 from among the action packages 118 maintained by (or accessible to) the data processing system 102. The device action customization component 120 may retrieve a query pattern associated with each of the device actions listed in the action package 118. The speech recognition component 122 may convert the audio signal to a corresponding text. The NLP component 122 may use the text generated by the speech recognition component 122 and the retrieved query pattern to identify a device action from among the multiple device actions listed in the action package associated with the identifier. The NLP component 124 may apply a bias to the retrieved query pattern when matching the text generated by the speech recognition component to a corresponding meaning. For example, assuming the received audio signal is known to be provided by a second party device or third party application associated with an identifier or corresponding action package 118, the NLP component 124 may assign a zero alignment weight or a relatively small alignment weight (e.g., compared to the alignment weights for the meanings that correspond to the query patterns in the action package 118) to meanings that do not correspond to the query patterns listed in the action package 118. The NLP component 124 may use its machine learning process to determine an alignment score (e.g., based on the alignment weights) for each device action (or corresponding query pattern). The NLP component 124 may select the device action with the highest weight as matching the content of the received audio signal.
[0046] The method 200 may include identifying a device executable command corresponding to the device action (ACT 212). The device action customization component 120 may identify (or retrieve) a device executable command among a plurality of device executable commands in the action package 118 that corresponds to the device action identified by the NLP component 124. For example, the device action customization component 120 may retrieve a device executable action that is mapped or linked to the device action (identified by the NLP component 124) in the action package 118. The device action customization component 120 may also identify one or more parameters associated with the device executable command. For example, if the device action (or the corresponding device executable command) relates to a request for driving directions or a request for a ride, the corresponding parameters may include an indication of a starting location and a destination location. If the device action relates to opening resource information (e.g., a social network page or a web page), the parameters may include a name or address of the resource. For each device action, the corresponding query pattern may indicate whether the device action may be associated with any input parameters. For example, the query “need ride from LOCATION1 to LOCATION2” indicates that the parameters LOCATION1 and LOCATION2 should be provided by the user of the client device 104 .Also, in the query patterns "open FRIEND page," "go with RIDE," "show me FACILITIES," and "comment to POST with CONTENT," the parameters FRIEND, RIDE, FACILITIES, POST, and CONTENT should be provided by the user. The NLP component 124 can parse the text corresponding to the received audio signal and identify values, if any, of the device action parameters. The device action customization component 120 can attach the identified parameters to the device executable command corresponding to the device action before sending the device executable command to the client device 104.
[0047] The device action customization component 120 may also retrieve responses that are mapped or linked to the device action (identified by the NLP component 124) in the corresponding action package 118. The audio signal generator 126 can convert the response to an audio format (e.g., an audio signal) if the response is originally in a text format. If the response associated with the device action is in an audio, visual, or audiovisual format, the device action customization component 120 can provide the response to the communication interface 114 for sending to the second party device 104.
[0048] The method 200 may include sending a device executable command to the second party device (ACT 214). The communication interface 114 may send the device executable command, along with corresponding parameters, if any, to the client device 104 for execution in response to the voice-based query. The executable command, when executed, may cause the client device 104 to perform the device action identified by the NLP component 124. The communication interface 114 may also send a response, if any, (in audio, visual, or audiovisual format) to the client device 104 for rendering.
[0049] 3 shows a block diagram of a client (or electronic) device 104 supporting voice-based interaction. The client device 104 may include an audio receiver 302 for receiving voice-based queries, and a communication interface 304 for communicating with other devices or systems, such as the data processing system 102. The client device 104 may include a command execution component 306 for executing (or causing to be executed) device-executable commands, and a speaker 308 for generating audio waves based on an audio signal (e.g., an audio signal received from the data processing system 102). The client device 104 may include a controller 310 for managing communications with the data processing system 102. These components of the second party device are further described below with respect to FIG. 4.
[0050] 4 illustrates a flow diagram of an example method 400 for enabling a client device to support voice-based interaction. The method 400 may include generating an audio signal in response to a voice-based query (ACT 402). The method 400 may include transmitting the audio signal and an identifier to a remote data processing system (ACT 404). The method 400 may include receiving a device-executable command (ACT 406) and executing the device-executable command (ACT 408).
[0051] 3 and 4, the method 400 may include generating an audio signal in response to a voice-based inquiry (ACT 402). A user of the client device 104 may initiate a conversation with the client device or a third party application installed thereon. The client device 104 or the third party application may provide an interactive UI component, a button, or other input mechanism to signal the user's intent to initiate a conversation to the client device 104. Upon interacting with the interactive UI component (or upon other input), the client device 104 or the third party application may activate an audio receiver 302 (e.g., a microphone) for recording the audio input, establish a communication session with the data processing system 102, or both. The audio receiver 302 may generate an audio signal corresponding to the voice-based inquiry from the user of the client device 104. The audio receiver 302 may, for example, convert sound waves corresponding to the voice-based inquiry into an electrical audio signal. The client device 104 may also store (e.g., in a corresponding memory) an identifier (e.g., a device model ID, an application ID, a project ID, a directory ID, or a combination thereof) associated with an action package that defines device actions supported by the client device 104 or a third party application. The client device 104 (or a third party application) may specify another audio source, different from the audio receiver, for receiving audio input therefrom for sending to the data processing system 102. The client device 104 or a third party application may activate the specified audio source upon interacting with an interactive UI component.
[0052] The method 400 may include transmitting the identifier and the audio signal to the remote data processing system (ACT 404). The controller 310 may cause the communication interface 304 to transmit the identifier and the audio signal to the data processing system 102 in response to the voice-based query. The controller 310 may generate a request to send to the data processing system 102 that includes the audio signal and the identifier. The request may be viewed as a request to interpret the content of the voice-based query. The controller 310 may cause the communication interface 304 to transmit the request to the data processing system 102. As described above with respect to FIGS. 1 and 2, the data processing system 102 may use the identifier to identify an action package 118 from among a plurality of action packages 118 maintained by the data processing system, and may use the audio signal to determine a device action (or a corresponding query pattern) from among device actions or query patterns enumerated in the action package 118 that corresponds to the content of the voice-based query. The data processing system 102 may determine a device executable command, if any, that corresponds to a device action that matches the content of the audio signal.
[0053] The method 400 may include receiving a device-executable command (ACT 406). In response to transmitting the audio signal and the identifier, the communication interface 304 may receive a response message from the data processing system including a device-executable command corresponding to a device action aligned with the content of the audio signal. The device-executable command may be identified by the data processing system 102 upon identifying a device action corresponding to the content of the voice-based query (or audio signal). Receiving the device-executable command may include receiving (e.g., in the response message) one or more parameters associated with the command and provided by the user in the voice-based query. The communication interface 304 may also receive an audio response from the data processing system 102. The controller 310 may parse the received message to identify the device-executable command, any parameters associated with the command, a media response to be rendered by the client device 104, or a combination thereof.
[0054] The method 400 may include executing (ACT 408) the device executable command. The controller 310 may provide the device executable command and any parameters thereof to the command execution component 306 for execution. The command execution component 306 may execute the device executable command to cause the client device 104 to perform a device action corresponding to the received device executable command. Executing the command may include the client device 104 (or an application stored thereon) generating a search query (or search request) and sending it to an online server (e.g., a server associated with a third party application). For example, the application or the client device 104 may generate a request for a ride from a first location to a second location based on the received executable command and corresponding parameters. The client device 104 may send the search query or search request to the online server. Upon receiving a response from the online server, the client device 104 may present the information in a response to the user.
[0055] The controller 310 or the command execution component 306 may include (or implement) a device action handler to extract device-executable commands and any corresponding parameters from communications (or messages) received from the data processing system 102 and to execute the extracted commands. The following script represents an illustrative example of a device action handler: .h namespace assistant_client{ class SmartCookerHandler:public DeviceActionHandler{ public: void Execute(const std::string&request_json)override; };} .cc namespace assistant_client{ void SmartCookerHandler::Execute(const std::string&device_request_json){ / / Extract the command / / Start cake cooking } ============================================================ namespace chromecast{ / / static assistant_client::DeviceActionHandler* CastAssistantShlib::CreateDeviceActionHandler(const std::string&action_type){ if(action_type == "device_control"){ return new assistant_client::SmartCookerHandler(); } }} / / namespace chromecast
[0056] The controller 310 can provide any media responses to a corresponding media player for rendering by the client device 104. For example, the controller 310 can provide an audio response received from the data processing system 102 to an audio player to play the audio response through the speaker 308 upon execution of the device-executable command. The controller 310 can cause the audio response to be rendered before, during, or after execution of the device-executable command. The audio player and speaker may also play any additional audio content received from the data processing system 102. If a visual or audiovisual response is received, the controller can cause an audiovisual player (e.g., an image player, animation player, or video player) to render the visual or audiovisual response on the display of the client device 104.
[0057] The action packages, device actions, and corresponding device executable commands described with respect to Figures 3 and 4 are similar to those described above with respect to Figures 1 and 2. Also, while the description of Figures 3 and 4 focuses on processes and acts performed by client device 104, these processes and acts interrelate with the processes and acts performed by data processing system 102 and described with respect to Figures 1 and 2.
[0058] FIG. 5 illustrates a flow diagram of an example method 500 for providing content in response to a voice-based interaction to trigger a device action. The method 500 may include storing device action data in a memory (ACT 502). The method 500 may include mapping an identifier to the device action data (ACT 504). The method 500 may include receiving an identifier and an audio signal from a client device (ACT 506). The method 500 may include identifying a device action command pair based on the identifier and the audio signal (ACT 508). The method 500 may include identifying a context of a voice-based query associated with the audio signal (ACT 510). The method 500 may include selecting a digital component based on a context of a voice-based query associated with the audio signal (ACT 512). The method 500 may include transmitting the digital component and a device executable command corresponding to the device action command pair to the client device 104 (ACT 514).
[0059] The data processing system 102 (or components thereof) may perform ACTs 502-508 of the method 500 in a similar manner (similar to ACTs 202-208 of FIG. 2) as described above with respect to FIGs. 1 and 2. The device action data may include device action packages 118 that define custom device actions supported, for example, by a second party device associated with the device model or by a third party application installed on (or capable of operating) one or more client devices 104.
[0060] The method 500 may include identifying a context of a voice-based query associated with the audio signal (ACT 510). The action customization component 120 may determine a context of a voice-based query corresponding to the received audio signal based on factors associated with, for example, the content of the audio signal, the content of the action package 118 (or device action data) associated with the identifier, or both. For example, each device action in the action package 118 (or device action data) associated with the identifier may be associated with one or more keywords (e.g., provided by a second party device provider or a third party application provider, or generated by a data processing system based on collected historical data). The keywords may indicate a common context of queries aligned with that device action. The action customization component 120 may use the keywords associated with the device action when describing the context of the device action.
[0061] The action customization component 120 can identify the context (or attributes thereof) of the voice-based query based on information associated with the action package that describes, for example, a second party device associated with the device model (e.g., if the identifier is a device model ID) or describes a third party application associated with the action package. For example, if the application is a gaming application, the context (or context attribute) of the voice-based query will be gaming. And, if the second party device is a fitness device, the context (or context attribute) of the voice-based query will be fitness and exercise.
[0062] The action customization component 120 can identify the context (or attributes thereof) of the voice-based query based on information associated with the action package that describes, for example, a second party device associated with the device model (e.g., if the identifier is a device model ID) or describes a third party application associated with the action package. For example, if the application is a gaming application, the context (or context attribute) of the voice-based query will be gaming. And, if the second party device is a fitness device, the context (or context attribute) of the voice-based query will be fitness and exercise.
[0063] The action customization component 120 can identify the context of the speech-based query (or attributes thereof) based on information (or parameters) provided in the speech-based query and extracted by the NLP component 124. For example, the action customization component 120 can use an extracted parameter indicating a geographic location to determine a geographic context of the speech-based query. The action customization component 120 can use an extracted parameter indicating a type of business (e.g., a gas station or a restaurant) to determine a user intent (e.g., to fill up with gas or to have a meal).
[0064] The device action customization component 120 can map the device action identified by the NLP component 124 to one or more corresponding predefined sequences of device actions. For example, the device action customization component 120 can collect statistical data (e.g., repetition or frequency) of sequences of device actions requested by users of second party devices or users of third party applications associated with the device model. Given an identified device action, the device action customization component 120 can determine one or more most likely device action sequences that include the identified device action. The device action customization component 120 can identify (or predict) one or more other device actions to follow the identified device action. For example, in the case of a smart TV or cable box, if the currently identified action is an action to switch to an on-demand channel, the subsequent device actions that will most likely be requested include requesting a video listing or on-demand content listing, ordering a video or media content for streaming. The context in this case can be, for example, "movie streaming" or "entertainment content streaming."
[0065] The action customization component 120 can use a combination of various factors to identify the context of a voice-based query. For example, the action customization component 120 can use any combination of device or application descriptions, parameters extracted from the voice-based content, and keywords associated with the query patterns in the action package 118. The action customization component 120 can employ data collected over time and machine learning methods to expand the factors (or information) used to determine the context of a voice-based query.
[0066] The method 500 may include selecting a digital component based on a context of the voice-based query associated with the audio signal (ACT 512). The content selector component 128 may use keywords (or attributes) describing the context of the voice-based query to select one or more digital components (or content items). For example, when the content selector component 128 determines that the context is related to media content streaming, the content selector component 128 may select a digital component (e.g., an advertisement) related to a video (or other media content) for streaming. In selecting a digital component, the content selector component 128 may conduct an auction or send a request to a content delivery system that includes the keywords associated with the context. The content selector component 128 may have an audio signal generator or other component of the data processing system 102 convert the digital component from a first format to a second format (e.g., from text to audio). For example, the content selector component 128 or the device action customization component 120 may format the digital component as an audio extension to an audio response associated with an identified device action. In such cases, the digital component may be perceived (by a user of the client device 104) as being part of the audio response.
[0067] The method 500 may include sending the digital component and a device-executable command corresponding to the device action command pair to the client device (ACT 512). The communication interface 114 may send the device-executable command (along with any corresponding parameters), the digital component, and the response (if any) to the second party device 104. The client device 104 may execute the device-executable command and play (or present) the response and / or digital component to a user, for example, as described with respect to FIG. 4 above.
[0068] 1-5, the identifiers are described as being provided by the second party device provider or third party application provider, other embodiments contemplated by this disclosure include a data processing system 102 that generates and provides the identifiers to the second party device provider or third party application provider in response to uploading respective device action data. The data processing system can assign or map the generated identifiers to the device action data.
[0069] 6 is a block diagram of an exemplary computer system 600. The computer system or computing device 600 may include or be used to implement the system 100, or components thereof, such as the data processing system 102 (or device or component thereof), the client device 104, or the device provider computing device 108. The computing system 600 includes a bus 605 or other communication component for communicating information, and a processor 610 or processing circuit coupled to the bus 605 for processing information. The computing system 600 may also include one or more processors 610 or processing circuits coupled to the bus for processing information. The computing system 600 also includes a primary memory 615, such as a random access memory (RAM) or other dynamic storage device, coupled to the bus 605 for storing information and instructions to be executed by the processor 610. The primary memory 615 may be or include the data repository 116. The primary memory 615 may also be used to store temporary variables or other intermediate information during execution of instructions by the processor 610. Computing system 600 may further include a read-only memory (ROM) 620 or other static storage device coupled to bus 605 for storing static information and instructions for processor 610. A storage device 625, such as a solid-state device, magnetic disk, or optical disk, may be coupled to bus 605 for persistently storing information and instructions. The storage device 625 may include or be part of the data repository 116.
[0070] Computing system 600 may be coupled via bus 605 to a display 635, such as a liquid crystal display or active matrix display, for displaying information to a user. An input device 630, such as a keyboard including alphanumeric and other keys, may be coupled to bus 605 for communicating information and command selections to processor 610. Input device 630 may include a touch screen display 635. Input device 630 may also include a cursor control device, such as a mouse, trackball, or cursor direction keys, for communicating directional information and command selections to processor 610 and for controlling cursor movement on display 635. Display 635 may be part of data processing system 102, client computing device 104, or other component of FIG. 1, for example.
[0071] The processes, systems, and methods described herein may be implemented by computing system 600 in response to processor 610 executing an arrangement of instructions contained in primary memory 615. Such instructions may be read into primary memory 615 from another computer-readable medium, such as storage device 625. Execution of the arrangement of instructions contained in primary memory 615 causes computing system 600 to perform the exemplary processes described herein. One or more processors in a multi-processing arrangement may also be employed to execute the instructions contained in primary memory 615. Hardwired circuitry may be used in place of or in combination with software instructions with the systems and methods described herein. The systems and methods described herein are not limited to any specific combination of hardware circuitry and software.
[0072] Although an exemplary computing system is illustrated in FIG. 6, the subject matter including the operations described herein may be implemented in other types of digital electronic circuitry, including the structures disclosed herein, or in computer software, firmware, or hardware, and structural equivalents thereof, or in combinations of one or more of them.
[0073] For situations in which the systems described herein may collect or utilize personal information about a user, the user may be provided with an opportunity to control whether a program or function may collect personal information (e.g., information about the user's social network, social behavior or activity, the user's preferences, or the user's location) or to control whether or how to receive content from a content server or other data processing system that may be more important to the user. In addition, some data may be anonymized in one or more ways before being stored or used, such that personally identifiable information is removed when generating parameters. For example, the user's identification information may be anonymized such that personally identifiable information cannot be determined for the user, or the user's geographic location may be generalized (such as to the city, zip code, or state level) where the location information is obtained such that the user's specific location cannot be determined. Thus, the user may have control over how information is collected about him or her and used by the content server.
[0074] The subject matter and operations described herein may be implemented in digital electronic circuitry, including structures disclosed herein, or computer software, firmware, or hardware, and structural equivalents thereof, or any combination of one or more of them. The subject matter described herein may be implemented as one or more computer programs, e.g., one or more circuits of computer program instructions encoded on one or more computer storage media for execution by or for controlling the operation of a data processing device. Alternatively or additionally, the program instructions may be encoded on an artificially generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to a suitable receiver device for execution by a data processing device. The computer storage medium may be or be included in a computer readable storage device, a computer readable storage substrate, a random or serial access memory array or device, or any combination of one or more of them. Although the computer storage medium is not a propagating signal, the computer storage medium may be a source or destination of computer program instructions encoded in an artificially generated propagated signal. A computer storage medium may also be, or may be contained within, one or more separate components or media (e.g., multiple CDs, disks, or other storage devices). The operations described herein may be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.
[0075] The terms "data processing system," "computing device," "component," or "data processing apparatus" encompass various apparatuses, devices, and machines for processing data, including, by way of example, a programmable processor, a computer, a system on a chip, or a combination of a plurality of the above. An apparatus may include dedicated logic circuitry, such as a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC). In addition to hardware, an apparatus may also include code that creates an execution environment for the computer program in question, such as code that configures a processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or one or more combinations thereof. The apparatus and execution environment may implement a variety of different computing model infrastructures, such as a web services infrastructure, a distributed computing infrastructure, and a grid computing infrastructure. The device action customization component 120, the speech recognition component 122, the NLP component 124, the audio signal generator component 126, or the content selector component 128 of the data processing system 102 may include or share one or more data processing apparatuses, systems, computing devices, or processors.
[0076] A computer program (also referred to as a program, software, software application, app, script, or code) can be written in any type of programming language, including compiled or interpreted languages, declarative or procedural languages, and can be deployed in any form, including a standalone program, or a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program can correspond to a file in a file system. A computer program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program, or in multiple cooperating files (e.g., files that store one or more modules, subprograms, or portions of code). A computer program can be deployed to be executed on one computer, or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
[0077] The processes and logic flows described herein may be executed by one or more programmable processors executing one or more computer programs (e.g., components of data processing system 102) to perform actions by operating on input data and generating output. The processes and logic flows may also be executed by, and apparatus may be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). Devices suitable for storing computer program instructions and data include all forms of, by way of example, semiconductor memory devices, e.g., non-volatile memory including EPROM, EEPROM, and flash memory devices, media and memory devices, magnetic disks, e.g., internal hard disks or removable disks, magneto-optical disks, and CD ROM and DVD-ROM disks. The processor and memory may be augmented by or incorporated in special purpose logic circuitry.
[0078] The subject matter described herein may be implemented in a computing system that includes back-end components, e.g., as data servers, or includes middleware components, e.g., application servers, or includes front-end components, e.g., client computers having a graphical user interface or web browser through which a user can interact with an implementation of the subject matter described herein, or a combination of one or more such back-end, middleware, or front-end components. The components of the system may be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include local area networks ("LANs") and wide area networks ("WANs"), internetworks (e.g., the Internet), and peer-to-peer networks (e.g., ad-hoc peer-to-peer networks).
[0079] The computing systems described herein as such may include clients and servers. Clients and servers are generally remote from each other and typically interact through a communications network (e.g., network 106). The relationship of client and server emerges by computer programs running on the respective computers and having a client-server relationship to each other. In some implementations, the server sends data (e.g., data packets representing digital components) to the client computing devices (e.g., to display data to and receive user input from users interacting with the client computing devices). Data generated at the client computing devices (e.g., results of user interactions) may be received at the server from the client computing devices (e.g., may be received by the data processing system 102 or its servers).
[0080] Although the figures show acts in a particular order, such acts are not required to be performed in the particular order or sequence shown, and not all acts shown must be performed. Actions described herein may be performed in different orders.
[0081] The separation of various system components may not require separation in all implementations, and the described program components may be included within a single hardware or software product. For example, any combination of the device action customization component 120, the speech recognition component 122, the NLP component 124, the audio signal generator component 126, and the content selector component 128 may be part of a single component, application, program, or logical device having one or more processing circuits, or one or more servers of the data processing system 102.
[0082] Although several exemplary implementations are described herein, it is clear that the above are presented as examples and not as limitations. In particular, while many of the examples presented herein involve specific combinations of method acts or system elements, those acts and those elements may be combined in other ways to achieve the same purpose. Acts, elements, and functions described with respect to one implementation are not excluded from similar roles or implementations in other implementations.
[0083] The phraseology and terminology used herein are for purposes of description and should not be considered limiting. The use of "including," "comprising," "having," "containing," "involving," "characterized by," "characterized in," and variations thereof herein are meant to encompass the items listed thereafter, equivalents thereof, and additional items, as well as alternative implementations consisting of the items listed thereafter exclusively. In one implementation, the systems and methods described herein consist of one, each combination of two or more of the described elements, acts, or components, or all of them.
[0084] Any reference herein to implementations or elements or acts of systems and methods referred to in the singular may also encompass implementations that include a plurality of those elements, and any reference herein to any implementation, element, or act in the plural may also encompass implementations that include only a single element. References in the singular or plural do not limit the disclosed systems or methods, their components, acts, or elements to a single or multiple configuration. References to any act or element that is based on any information, act, or element may include implementations in which the act or element is based at least in part on any information, act, or element.
[0085] Any implementation disclosed herein may be combined with any other implementation or embodiment, and references to "implementations," "several implementations," "an implementation," etc. are not necessarily mutually exclusive and are intended to indicate that a particular feature, structure, or characteristic described with respect to an implementation may be included in at least one implementation or embodiment. Terms as used herein do not necessarily all refer to the same implementation. Any implementation may be combined inclusively or exclusively with any other implementation in any manner not inconsistent with the aspects and implementations disclosed herein.
[0086] References to "or" may be construed as inclusive, such that any term described using "or" may indicate any of one, more than one, and all of the described terms. For example, a reference to "at least one of 'A' and 'B'" can include only 'A', only 'B', and both 'A' and 'B'. Such references used with "comprising" or other open terminology can include additional items.
[0087] When a reference sign follows a technical feature in a drawing, a description, or any claim, the reference sign is included to facilitate comprehension of the drawing, the description, and the claim, and thus neither the reference sign nor the absence of a reference sign has any limiting effect on the scope of any claim element.
[0088] The systems and methods described herein may be embodied in other specific forms without departing from their characteristics. The above implementations are illustrative rather than limiting of the described systems and methods. Thus, the scope of the systems and methods described herein is indicated by the appended claims rather than the above description, and changes that come within the meaning and range of equivalence of the claims are intended to be embraced therein. [Explanation of symbols]
[0089] 100 Systems 102 Data Processing System 104 client devices 106 Communication Network 108 Device Provider Computing Devices 110 Memory 112 processors 114 Communication Interface 116 Data Repositories 118 Action Package 120 Device Action Customization Components 122 Speech Recognition Components 124 Natural Language Processor Components 126 Audio Signal Generator Components 128 Content Selector Component 302 Audio Receiver 304 Communication Interface 306 Command Execution Component 308 Speaker 310 Controller 600 Computer Systems 605 Bus 610 Processor 615 Main storage 620 Read-only memory 625 Storage Devices 630 Input Devices 635 Display
Claims
1. 1. A data processing system for enabling voice-based interaction with a client device, comprising: a communications interface for receiving an audio signal and a device model identifier defining a device model from a client device of a plurality of client devices associated with the device model, the audio signal being obtained by the client device in response to a voice-based query; and a natural language processor component for identifying a device action from among a plurality of device actions supported by the plurality of client devices associated with the device model using the device model identifier and content associated with the audio signal, where identifying a device action from among a plurality of device actions is based on a corresponding weight value for matching the content of the received audio signal with a query pattern indicative of a device action from among a plurality of device actions supported by the plurality of client devices associated with the device model; a device action customization component for identifying a device executable command corresponding to the device action and for identifying an audio or visual response corresponding to the device action; the communications interface for sending the device executable commands to the client device for execution in response to the voice-based query to effect the device action, and for sending the audio or visual response to the client device for rendering on the client device related to and based on the device action; A data processing system comprising:
2. 2. The data processing system of claim 1, further comprising a speech recognition component for converting the audio signal received from the client device into corresponding text, the natural language processor component using the corresponding text to identify the device action.
3. determining, for each first device action of the plurality of device actions, a corresponding weighting value for aligning the content of the received audio signal with the first device action; and identifying the device action based on the weight value.
10. The data processing system of claim 1 comprising said natural language processor component.
4. 2. The data processing system of claim 1, further comprising: the device action customization component for enabling the device model prior to interacting with the plurality of client devices associated with the device model and upon successful testing of each of a plurality of device executable commands supported by the plurality of client devices associated with the device model.
5. 2. The data processing system of claim 1, further comprising: the device action customization component for providing a user interface for enabling a computing device to provide device action data indicative of the device model identifier and the plurality of device actions supported by the plurality of client devices associated with the device model.
6. 2. The data processing system of claim 1, further comprising: the device action customization component for providing a RESTful application programming interface (API) to enable transmission of the device model identifier to the data processing system and device action data indicating the device actions supported by the client devices associated with the device model.
7. 2. The data processing system of claim 1, wherein the device model identifier is an identifier associated with applications installed on the plurality of client devices, the plurality of device actions are device actions supported by the applications, and the device executable commands are executable commands specific to the applications.
8. the device action customization component for identifying one or more parameters associated with the device executable command; the communication interface for transmitting the one or more parameters to the client device; 8. The data processing system of claim 7, comprising:
9. 1. A method for enabling voice-based interaction with a client device, comprising: receiving an audio signal and a device model identifier defining a device model from a client device of a plurality of client devices associated with the device model, the audio signal being obtained by the client device in response to a voice-based query; identifying a device action from among a plurality of device actions supported by the plurality of client devices associated with the device model using the device model identifier and content associated with the audio signal, where identifying a device action from among a plurality of device actions is based on a corresponding weight value for matching the content of the received audio signal with a query pattern indicative of a device action from among a plurality of device actions supported by the plurality of client devices associated with the device model; identifying a device executable command corresponding to the device action, and identifying an audio or visual response corresponding to the device action; sending the device executable command to the client device for execution in response to the voice-based query to accomplish the device action, and sending the audio or visual response to the client device for rendering on the client device related to and based on the device action; A method for providing the above.
10. 10. The method of claim 9, further comprising converting the audio signal received from the client device into corresponding text, wherein a natural language processor component uses the corresponding text to identify the device action.
11. determining, for each first device action of the plurality of device actions, a corresponding weighting value for aligning the content of the received audio signal with the first device action; identifying the device action based on the weight value; The method of claim 9 comprising:
12. 10. The method of claim 9, further comprising: enabling the device model before interacting with the client devices associated with the device model and upon successful testing of each of a plurality of device executable commands supported by the client devices associated with the device model.
13. 10. The method of claim 9, comprising providing a user interface to enable a computing device to provide the device model identifier and device action data indicative of the device actions supported by the client devices associated with the device model.
14. 10. The method of claim 9, further comprising: a device action customization component providing a RESTful application programming interface (API) for use by a computing device to transmit device action data indicating the device actions supported by the client devices associated with the device model identifier and the device model.
15. 10. The method of claim 9, wherein the device model identifier is an identifier associated with applications installed on the plurality of client devices, the plurality of device actions are device actions supported by the applications, and the device executable commands are executable commands specific to the applications.
16. identifying one or more parameters associated with the device-executable command; transmitting the one or more parameters to the client device; The method of claim 15 comprising:
17. The method of claim 9 , wherein sending the device-executable command to the client device includes sending the device-executable command in a JSON response provided to the client device.
18. 10. The method of claim 9, wherein sending the audio or visual response to the client device includes sending the audio or visual response to the client device to be rendered by the client device by converting a textual representation into audio.
Citation Information
Patent Citations
Network system, and server and device for network system
JP2001014134A
Voice recognition control system and voice recognition control method
JP2001042884A
Equipment control system
JP2005031856A
Multitask system and method of mobile terminal device with voice recognition function
JP2006221270A
Imaging device, voice recognition method, and program
JP2014122978A