Warm-word arbitration between automated assistant devices
Warm word arbitration optimizes resource allocation among multiple automated assistant devices by disabling redundant detection, addressing inefficiencies and enhancing detection capabilities.
Patent Information
- Application Number
- JP2024535987
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2022-01-11
- Filing Date
- 2022-12-08
- Publication Date
- 2024-12-20
- Estimated Expiration
- 2042-12-08
AI Technical Summary
In environments with multiple automated assistant devices, resource constraints can lead to inefficient utilization of processing and memory resources due to simultaneous detection of the same warm words by multiple devices, resulting in wasted computing resources and limited detection capabilities.
Implementing warm word arbitration methods that determine which devices detect specific warm words, enabling efficient resource allocation by disabling redundant detection and optimizing the set of activated warm words across devices.
This approach reduces processing costs and enhances resource utilization, allowing for a larger set of warm words to be detected across multiple devices, improving overall performance and efficiency.
Smart Images

Figure 0007603891000001 
Figure 0007603891000002 
Figure 0007603891000003
Abstract
Description
[Background technology]
[0001] Humans can use interactive software applications, referred to herein as "automated assistants" (also referred to as "digital assistants," "digital agents," "interactive personal assistants," "intelligent personal assistants," "assistant applications," "conversational agents," etc.) to engage in human-computer interactions. For example, a human (who may be referred to as a "user" when interacting with an automated assistant) can provide commands and / or requests to an automated assistant using natural language input via voice (i.e., speech), which may be converted to text and then processed by providing natural language input via text (e.g., typing) and / or by touch and / or non-speech physical movement(s) (e.g., hand gesture(s), gaze, facial movements, etc.). An automated assistant typically responds to requests by providing responsive user interface output (e.g., audible and / or visual user interface output), by controlling one or more smart devices, and / or by controlling one or more function(s) of the device implementing the automated assistant (e.g., controlling other application(s) on the device).
[0002] The automated assistant may be a software application running on a client device, which may be a smart appliance such as a standalone interactive speaker, a standalone interactive display device (which may also include a speaker and / or a camera), a smart TV (or a standard TV with a network-connected dongle with automated assistant functionality), a desktop computing device, a laptop computing device, a tablet computing device, a mobile phone computing device, a computing device in a user's vehicle (e.g., an in-vehicle communication system, an in-vehicle entertainment system, an in-vehicle navigation system), and / or a user's wearable device that includes a computing device (e.g., a user's watch with a computing device, a user's glasses with a computing device, a virtual or augmented reality computing device).
[0003] Automated assistants typically rely on a pipeline of components in processing user requests. For example, a hotword detection engine can be used to process audio data by monitoring for spoken occurrences of hotwords (wake words) (e.g., "OK Assistant") and trigger processing by other component(s) in response to detecting the occurrence. As another example, an automatic speech recognition (ASR) engine can be used to process audio data including the speech and generate a transcription of the user's speech (i.e., a sequence of words(s) and / or a sequence of other token(s)). The ASR engine can process the audio data based on subsequent spoken occurrences of hotwords as detected by the hotword detection engine and / or in response to other invocation(s) of the automated assistant. As another example, a natural language understanding (NLU) engine can be used to process the text of the request (e.g., text converted from the speech using ASR) and generate a symbolic representation or belief state that is a semantic representation of the text. For example, the belief state may include an intent(s) corresponding to the text and, optionally, a parameter(s) (e.g., slot values) of the intent(s). Once a belief state is fully formed (e.g., once all required parameters have been resolved) through one or more dialog turns, it represents the action(s) to be performed in response to the utterance. A separate executive component can then utilize the fully formed belief state to perform the action(s) corresponding to the belief state.
[0004] The automated assistant may also include one or more warm word detection engines that can be used to process audio data by monitoring the occurrence of a particular voiced warm word (e.g., "stop," "volume up," "volume down," or "next") and execute a command mapped to the particular warm word upon detecting the occurrence of the particular warm word. An environment (e.g., a particular location such as a room in a user's home) may include multiple client devices (i.e., automated assistant devices) running automated assistants in close proximity. In an environment, multiple automated assistant devices may each detect the same utterance from a user (e.g., via microphone(s)) as a result of their proximity. For a particular warm word, multiple automated assistant devices in the environment may be able to detect the particular warm word. Thus, in an environment, two or more automated assistant devices may be able to respond to an utterance that includes a particular warm word.
[0005] Due to resource constraints (e.g., memory constraints, processing constraints, etc.), a particular automated assistant may only be able to utilize a limited number of warm word detection engines and / or may only be able to detect a limited number of warm words at any given time. This may be particularly true for older and / or less resourceful devices, which may (a) lack the processing power and / or memory capacity to execute the various component(s) and / or utilize the associated model(s) and / or (b) lack the disk space to store the various associated model(s). Furthermore, computing resources may be wasted when two or more automated assistant devices each detect the same utterance and each detect a particular warm word in the utterance and / or each respond to execute a command mapped to the particular warm word. Summary of the Invention
[0006] Some embodiments disclosed herein relate to warm word arbitration between automated assistant devices. As described in more detail herein, two or more automated assistant devices located in close proximity in an environment can perform warm word arbitration to determine the warm words detected by each automated assistant device in the environment. The embodiments can reduce overall processing costs by reducing or avoiding the occurrence of two or more automated assistant devices detecting the same warm word. Furthermore, by more efficiently utilizing memory and processing resources across multiple automated assistant devices in a particular environment, the embodiments can enable a larger set of warm words to be detected across multiple automated assistant devices.
[0007] In various embodiments, a method implemented by one or more processors may include determining that warm word arbitration is initiated between a first assistant device and one or more additional assistant devices, the one or more additional assistant devices including a second assistant device, and the first assistant device and the one or more additional assistant devices being included in a group of assistant devices; and performing warm word arbitration in response to determining that warm word arbitration is initiated, the warm word arbitration including broadcasting, by the first assistant device, a set of activated warm words of the first assistant device to one or more additional assistant devices in the group of assistant devices; receiving, for each one or more additional assistant devices in the group of assistant devices, a set of activated warm words of the additional assistant devices from the additional assistant devices; identifying a matching warm word based on the matching warm word being included in the set of activated warm words of the first assistant device and being included in the set of activated warm words of the second assistant device; and enabling or disabling detection of the matching warm word by the first assistant device in response to identifying the matching warm word.
[0008] In some embodiments, the method may further include discovering additional assistant devices in the group of assistant devices using a wireless protocol. In some embodiments, determining that warm word arbitration is initiated may be based on the discovery of a new assistant device in the group of assistant devices. In some embodiments, determining that warm word arbitration is initiated may be based on the addition of a warm word or the deletion of a warm word in the set of activated warm words of the first assistant device. In some embodiments, determining that warm word arbitration is initiated may be based on a change in an ambient condition detected by the first assistant device. In some embodiments, determining that warm word arbitration is initiated may be based on determining that an assistant device has been removed from the group of assistant devices.
[0009] In some implementations, the method may further include broadcasting, by the first assistant device, to one or more additional assistant devices in the group of assistant devices, a warm word affinity score for each warm word in the set of activated warm words of the first assistant device, and receiving, for each of the one or more additional assistant devices in the group of assistant devices, from the additional assistant device, a warm word affinity score for each warm word in the set of activated warm words of the additional assistant device. In some implementations, enabling or disabling detection of the matching warm word by the first assistant device in response to identifying the matching warm word may be based on the affinity score of the matching warm word of the first assistant device and the affinity score of the matching warm word of the second assistant device.
[0010] In some implementations, for each warm word in the set of activated warm words of the first assistant device, an affinity score for the warm word may be determined based on the frequency of detection of the warm word by the first assistant device, and for each of one or more additional assistant devices, an affinity score for the warm word may be determined for each warm word in the set of activated warm words of the additional assistant device based on the frequency of detection of the warm word by the additional assistant device.
[0011] In some implementations, for each warm word in the set of activated warm words of the first assistant device, an affinity score for the warm word may be determined based on the time the warm word was most recently detected by the first assistant device, and for each of one or more additional assistant devices, an affinity score for the warm word may be determined for each warm word in the set of activated warm words of the additional assistant device based on the time the warm word was most recently detected by the additional assistant device.
[0012] In some implementations, for each warm word in the set of activated warm words of the first assistant device, an affinity score for the warm word may be determined based on device characteristics of the first assistant device, and for each of one or more additional assistant devices, an affinity score for the warm word may be determined for each warm word in the set of activated warm words of the additional assistant device based on device characteristics of the additional assistant device.
[0013] In some embodiments, when enabling or disabling detection of a matching warm word by the first assistant device, the first assistant device can disable detection of the warm word. In some embodiments, the method can further include adding a new warm word to a set of activated warm words of the first assistant device in response to disabling detection of the warm word by the first assistant device. In some embodiments, the method can further include repeating the warm word arbitration process until no matching warm words are detected in an iteration of the warm word arbitration process.
[0014] In some implementations, the method may further include detecting speech via a microphone of the first assistant device, identifying, by the first assistant device, an occurrence of the matching warm word in the speech using an on-device warm word detection model of the matching warm word, determining that the second assistant device is a target of a command mapped to the matching warm word based on performing automatic speech recognition on at least a portion of the speech preceding or following the matching warm word, and sending the command mapped to the matching warm word to the second assistant device in response to determining that the second assistant device is a target of the command mapped to the matching warm word.
[0015] In some implementations, the method may further include determining to include the first assistant device and the one or more additional assistant devices in a group of assistant devices based on determining that the first assistant device and the one or more additional assistant devices are located in close proximity. In some implementations, the method may further include determining that the group of assistant devices includes the first assistant device and the one or more additional assistant devices based on the first assistant device and the one or more additional assistant devices each detecting the same utterance.
[0016] In some additional or alternative embodiments, the computer program product may include one or more computer-readable storage media with program instructions collectively stored in the one or more computer-readable storage media. The program instructions may be executable to identify a first set of on-device warm word detection models active on a first assistant device and a second set of on-device warm word detection models active on a second assistant device, where the first assistant device and the second assistant device are located in close proximity, identify overlapping on-device warm word detection models included in both the first set of on-device warm word detection models and the second set of on-device warm word detection models, and disable the overlapping on-device warm word detection models of either the first assistant device or the second assistant device in response to identifying the overlapping on-device warm word detection models and based on determining that the first assistant device and the second assistant device are located in close proximity.
[0017] In some implementations, it may be determined that the first assistant device and the second assistant device are located in close proximity based on the first assistant device and the second assistant device each detecting the same utterance.
[0018] In some implementations, the program instructions may be further executable to identify, for each of the first assistant device and the second assistant device, a warm word affinity score associated with the overlapping on-device warm word detection model. In some implementations, disabling the overlapping on-device warm word detection model of either the first assistant device or the second assistant device may be based on the affinity score.
[0019] In some implementations, the affinity scores of warm words associated with overlapping on-device warm word detection models may be determined based on the frequency of detection of the warm words. In some implementations, the affinity scores of warm words associated with overlapping on-device warm word detection models may be determined based on the time the warm words were most recently detected.
[0020] In some additional or alternative embodiments, the system may include a processor, a computer-readable medium, one or more computer-readable storage media, and program instructions collectively stored on the one or more computer-readable storage media. The program instructions may be executable to determine that warm word arbitration is initiated between a first assistant device and one or more additional assistant devices, the one or more additional assistant devices including a second assistant device, and the first assistant device and the one or more additional assistant devices being included in a group of assistant devices, and to perform warm word arbitration in response to determining that warm word arbitration is initiated, the warm word arbitration including: broadcasting, by the first assistant device, a set of activated warm words of the first assistant device to one or more additional assistant devices in the group of assistant devices; receiving, for each one or more additional assistant devices in the group of assistant devices, a set of activated warm words of the additional assistant devices from the additional assistant devices; identifying a matching warm word based on the matching warm word being included in the set of activated warm words of the first assistant device and being included in the set of activated warm words of the second assistant device; and enabling or disabling detection of the matching warm word by the first assistant device in response to identifying the matching warm word.
[0021] Utilizing one or more techniques described herein can reduce processing costs across multiple automated assistant devices in an environment and more efficiently utilize memory and processing resources across multiple automated assistant devices, thereby enabling a larger set of warm words to be detected across multiple automated assistant devices, improving performance.
[0022] The above description is provided as a summary of some embodiments of the present disclosure. The details of these and other embodiments are described in more detail below.
[0023] Various embodiments may include a non-transitory computer-readable storage medium storing instructions executable by one or more processors (e.g., central processing unit (CPU)(s), graphics processing unit (GPU)(s), digital signal processor (DSP)(s), and / or tensor processing unit (TPU)(s)) to perform methods, such as one or more of the methods described herein. Other embodiments may include an automated assistant client device (e.g., a client device including at least an automated assistant interface for interfacing with a cloud-based automated assistant component(s)) including a processor(s) operable to execute the stored instructions to perform methods, such as one or more of the methods described herein. Still other embodiments may include a system of one or more servers including one or more processors operable to execute the stored instructions to perform methods, such as one or more of the methods described herein. [Brief description of the drawings]
[0024] [Figure 1] FIG. 1 illustrates a schematic diagram of an exemplary environment in which selected aspects of the present disclosure may be implemented, according to various embodiments. [Diagram 2] 1 is a flow chart illustrating an exemplary method for practicing selected aspects of the present disclosure. [Diagram 3] 4 is another flow chart illustrating an exemplary method for practicing selected aspects of the present disclosure. [Figure 4] FIG. 1 illustrates an example architecture of a computing device. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0025] A user can utilize an automated assistant using any of a number of automated assistant devices. For example, some users may have a coordinated "ecosystem" of automated assistant devices that can receive user input directed to the automated assistant and / or be controlled by the automated assistant. In particular, the assistant devices may be one or more smartphones, one or more tablet computers, one or more vehicle computing systems, one or more wearable computing devices, one or more smart televisions, one or more interactive standalone speakers, one or more interactive standalone speakers with displays, one or more IoT devices, etc.
[0026] A user can use any of these assistant devices to engage in human-computer interaction with an automated assistant (assuming the automated assistant client is installed and the assistant device is capable of receiving input). In some cases, these automated assistant devices may be scattered around the user's primary residence, secondary residence, workplace, and / or other buildings. For example, mobile assistant devices such as smartphones, tablets, and smartwatches may be in the user's belongings and / or where the user last left them. Other automated assistant devices such as traditional desktop computers, smart TVs, interactive standalone speakers, and IoT devices may be more fixed but may be located in various locations (e.g., rooms) within the user's home or workplace.
[0027] FIG. 1 illustrates generally an example environment 100 in which selected aspects of the disclosure may be implemented, according to various embodiments. Any computing device illustrated in FIG. 1 or other parts of the figure may include logic such as one or more microprocessors (e.g., central processing units or "CPUs", graphic processing units or "GPUs") that execute computer-readable instructions stored in memory, or other types of logic such as application specific integrated circuits ("ASICs"), field programmable gate arrays ("FPGAs"), etc. Some of the system illustrated in FIG. 1, such as the cloud-based automated assistant component(s) 140, may, but need not, be implemented using one or more server computing devices that form what is sometimes referred to as a "cloud infrastructure."
[0028] In an embodiment, the environment 100 may include an automated assistant ecosystem including, for example, a first assistant device 110A, a second assistant device 110B, a third assistant device 110C, and a fourth assistant device 110D. The assistant devices 110A-110D may all be located in a home, a workplace, or other environment. In an embodiment, the assistant devices 110A-110D may be located in close proximity in the environment 100. In particular, the physical locations of the assistant devices 110A-110D in the environment 100 may be such that, for example, each assistant device 110A-110D can detect the same speech from a user (e.g., via a microphone(s)) when the user's physical location is near the assistant devices 110A-110D. For example, each of the assistant devices 110A-110D can be physically located in the same room (and / or the same area of the room) in a home, workplace, or other environment, and when a user is also in the same room and speaks, the microphone(s) of each of the assistant devices 110A-110D can detect the speech. In another example, each of the assistant devices 110A-110D can be physically located in different rooms in a home, workplace, or other environment, but are located close enough to each other that when a user speaks detected by the microphone(s) of one of the assistant devices 110A-110D, the microphone(s) of the other assistant devices 110A-110D also detects the same speech.
[0029] Furthermore, all of the assistant devices 110A-110D can be linked or associated with each other in one or more data structures. For example, all four assistant devices 110A-110D can be registered to the same user account, registered to the same set of user accounts, registered to a particular structure, and / or assigned to a particular structure in the device topology representation. The device topology representation can include corresponding unique identifier(s) for each assistant device 110A-110D, and can optionally include corresponding unique identifier(s) for other device(s) that are not assistant devices (but can interact through assistant devices), such as IoT device(s) that do not include an assistant interface. Furthermore, the device topology representation can specify device attribute(s) associated with each assistant device 110A-110D. The device attributes of a given assistant device may indicate, for example, one or more input and / or output modalities supported by each assistant device, the processing capabilities of each assistant device, the manufacturer, model, and / or unique identifier (such as a serial number) of each assistant device (based on which the processing capabilities can be determined), and other attribute(s). As another example, the assistant devices 110A-110D may all be linked or associated with each other as a function of being connected to the same wireless network, such as a secure access wireless network, and / or as a function of being in peer-to-peer communication with each other (e.g., after pairing(s) via Bluetooth). In other words, in some implementations, multiple assistant devices may be considered to be linked as a function of being in a secure network connection with each other, without necessarily being associated with each other in any data structure.
[0030] As a non-limiting example, the first assistant device 110A may be a first type of assistant device, such as a particular model of an interactive standalone speaker with a display and a camera. The second assistant device 110B may be a second type of assistant device, such as a second model of an interactive standalone speaker without a display or a camera. Each of the assistant devices 110C and 110D may be a third type of assistant device, such as a third model of an interactive standalone speaker without a display. The third type (assistant devices 110C and 110D) may have less processing power than the second type (assistant device 110B). For example, the third type may have a processor(s) with less processing power than the processor(s) of the second type. For example, the processor(s) of the third type may not have a GPU, while the processor(s) of the second type have a GPU(s). Also, for example, the processor(s) of the third type may have a smaller cache and / or a lower operating frequency than the processor(s) of the second type. As another example, the size of the on-device memory of the third type may be smaller than the size of the on-device memory of the second type (e.g., 1 GB versus 2 GB). As yet another example, the available disk capacity of the third type may be smaller than the available disk capacity of the first type. The available disk capacity may differ from the currently available disk capacity. For example, the available disk capacity may be determined as the sum of the currently available disk capacity and the disk capacity currently occupied by one or more on-device model(s). As another example, the available disk capacity may be the total disk capacity minus the capacity occupied by the operating system and / or other specific software. Continuing with the example, the first type and the second type may have the same processing capabilities.
[0031] In addition to being linked to one another in a data structure(s), two or more (e.g., all) of the assistant devices 110A-110D also communicate with one another at least selectively via local area network (LAN) 108. The LAN 108(s) can include wireless network(s) using Wi-Fi, direct peer-to-peer network(s) using Bluetooth, and / or other communication topologies using other communication protocol(s).
[0032] Assistant device 110A includes assistant client 120A, which may be a standalone application on an operating system or may form all or part of the operating system of assistant device 110A. Assistant client 120A of FIG. 1 includes wake / paging (hot word) engine 121A1 and one or more associated on-device wake / paging (hot word) models 131A1. Wake / paging engine 121A1 can monitor the occurrence of one or more wake or paging cues (such as hot words) and can invoke one or more previously inactive features of assistant client 120A upon detection of one or more cues. For example, invoking assistant client 120A can include ASR engine 122A1, NLU engine 123A1, and / or other engine(s) being activated. For example, ASR engine 122A1 can be caused to process additional audio data frames following a wake or paging queue (no additional processing of audio data frames had occurred prior to the paging), and / or assistant client 120A can be caused to send additional audio data frames and / or other data to be sent to cloud-based assistant component(s) 140 for processing (e.g., processing of the audio data frames by a remote ASR engine of cloud-based assistant component(s) 140).
[0033] In some implementations, the wake cue(s) engine 121A can continuously process a stream of audio data frames based on the output from one or more microphones of the assistant device 110A (e.g., when not in “inactive” mode) and monitor for the occurrence of a spoken wake word(s) or invocation phrase(s) (e.g., “OK Assistant”, “Hey Assistant”). The processing can be performed by the wake cue(s) engine 121A using one or more wake models 131A1. For example, one of the wake models 131A1 may be a neural network model trained to process frames of audio data and generate an output indicating whether one or more wake words are present in the audio data. The wake cue(s) engine 121 discards audio data frames that do not include the wake word(s) while monitoring for the occurrence of the wake word(s) (e.g., after temporarily storing them in a buffer). In addition to or instead of monitoring the occurrence of the wake word(s), wake cue(s) engine 121A1 can monitor the occurrence of other call cue(s). For example, wake cue(s) engine 121A1 can also monitor the pressing of a call hardware button and / or a call software button. As another example, and continuing with the embodiment, when assistant device 110A includes a camera, wake cue(s) engine 121A1 can also optionally process image frame(s) from the camera to monitor the occurrence of a call gesture(s), such as waving while the user's gaze is directed toward the camera, and / or the occurrence of other call cue(s), such as an indication that the user's gaze is directed toward the camera or that the user is speaking.
[0034] The assistant client 120A of FIG. 1 also includes an automatic speech recognition (ASR) engine 122A1 and one or more associated on-device ASR models 132A1. The ASR engine 122A1 can be used to process audio data including speech and generate a transcription of the user's speech (i.e., a sequence of words(s) and / or a sequence of other tokens(s)). The ASR engine 122A1 can utilize on-device ASR model(s) 132A1 to process the audio data. The on-device ASR model(s) 132A1 can include a two-pass ASR model, e.g., a neural network model, used by the ASR engine 122A1 to generate a sequence of probabilities on the tokens (and the probabilities used to generate the transcript). As another example, the on-device ASR model(s) 132A1 can include an acoustic model, e.g., a neural network model, and a language model including a mapping of phoneme sequences to words. The ASR engine 122A1 may process the audio data using an acoustic model to generate a sequence of phonemes and may map the sequence of phonemes to a particular word using a language model. Additional or alternative ASR models may also be utilized.
[0035] Assistant client 120A of FIG. 1 also includes natural language understanding (NLU) engine 123A1 and one or more associated on-device NLU models 133A1. NLU engine 123A1 can generate symbolic representations or belief states that are semantic representations of natural language text, such as the text of a transcription generated by ASR engine 122A1 or entered text (e.g., text entered using a virtual keyboard of assistant device 110A). For example, the belief state may include intent(s) corresponding to the text and, optionally, parameter(s) (e.g., slot values) of the intent(s). Once fully formed through one or more dialog turns (e.g., all required parameters are resolved), the belief state represents the action(s) to be performed in response to the utterance. In generating the symbolic representation, NLU engine 123A1 can utilize one or more on-device NLU models 133A1. The NLU model(s) 133A1 may include one or more neural network models trained to process text and generate output indicative of the intent(s) expressed by the text and / or an indication of which portion(s) of the text correspond to which parameter(s) of the intent. The NLU model(s) may additionally or alternatively include one or more models that include a mapping of text and / or templates to corresponding symbolic representation(s). For example, the mapping may include mapping the text "What time is it?" to an intent "Current time" with a parameter "Current location". As another example, the mapping may include mapping the template "Add [item(s)] to shopping list" to an intent "Insert into shopping list" using a parameter(s) of the item(s) in the actual natural language that corresponds to the [item(s)] in the template.
[0036] The assistant client 120A of FIG. 1 also includes a fulfillment engine 124A1 and one or more associated on-device fulfillment models 134A1. The fulfillment engine 124A1 can utilize the fully formed symbolic representation from the NLU engine 123A1 to perform or cause the execution of an action(s) corresponding to the symbolic representation. The action(s) can include providing responsive user interface output (e.g., audible and / or visual user interface output), controlling smart device(s), and performing other action(s). In performing or causing the execution of the action(s), the fulfillment engine 124A1 can utilize the fulfillment model(s) 134A1. As an example, for an intent "turn on" with parameter(s) specifying a particular smart light(s), the fulfillment engine 124A1 can use the fulfillment model(s) 134A1 to identify the network address(es) of the particular smart light(s) and / or the command(s) to send to transition the particular smart light(s) to the "on" state. As another example, for an intent "now" with a parameter "current location", the fulfillment engine 124A1 can use the fulfillment model(s) 134A1 to identify that the current time of the assistant device 110A should be obtained and audibly rendered (using the TTS engine 125A1).
[0037] Assistant client 120A of FIG. 1 also includes text-to-speech (TTS) engine 125A1 and one or more associated on-device TTS models 135A1. TTS engine 125A1 can process text (or a phonetic representation thereof) using on-device TTS model(s) 135A1 to generate synthetic speech. The synthetic speech can be rendered audibly via speaker(s) of assistant device 110A's local text-to-speech (TTS) engine (converts text to speech). The synthetic speech can be generated and rendered (e.g., coordinated by NLU engine 123A1 and / or another dialog state engine) as all or part of a response from an automated assistant and / or to prompt the user to define and / or clarify parameter(s) and / or intent(s).
[0038] The assistant client 120A of FIG. 1 also includes an authentication engine 126A1 and one or more associated on-device authentication models 136A1. The authentication engine 126A1 can utilize one or more authentication techniques(s) to verify which of multiple registered users is interacting with the assistant device 110. Or, if only one user is registered with the assistant device 110, it can verify whether a registered user (or alternatively a guest / unregistered user) is interacting with the assistant device 110. As an example, a text-dependent speaker verification(s) (TD-SV) can be generated and stored for each registered user with the permission of the associated user(s) (e.g., in association with a corresponding user profile). When generating the corresponding TD-SV and / or when processing the corresponding portion of the audio data TD-SV, the authentication engine 126A1 can utilize the TD-SV model(s) of the on-device authentication model(s) 136A1 to generate a corresponding current TD-SV, which can then be compared to the stored TD-SV to determine whether there is a match. As another example, the authentication engine 126A1 may additionally or alternatively utilize text-independent speaker verification (TI-SV) technology, speaker verification technology, face verification technology, and / or other verification technology(s) (such as PIN entry), as well as corresponding on-device authentication model(s) 136A1 in authenticating a particular user.
[0039] The assistant client 120A of FIG. 1 also includes a warm word(s) engine 127A1 and one or more associated on-device warm word(s) model(s) 137A1. The warm word(s) engine 127A1 can at least selectively monitor the occurrence of one or more warm word(s) or other warm cue(s) and can cause a particular action to be performed by the assistant client 120A in response to the detection of one or more warm word(s) or other warm cue(s). The warm word(s) can be added to any wake word(s) or other wake cue(s), and each warm word(s) can be at least selectively activated (e.g., enabled). In particular, upon detection of the occurrence of a warm cue, a particular action is performed even if the detected occurrence is not preceded by any wake cue. Thus, when the warm cue is a particular word(s), the user does not need to provide any wake cue(s) but can simply speak the word(s) to cause the corresponding particular action to be performed.
[0040] As an example, the warm word "stop" can be activated (e.g., enabled) at least when a timer or alarm is audibly rendered at assistant device 110A via assistant client 120A. In such a case, for example, warm word(s) engine 127A can continuously (or at least when VAD engine 128A1 detects voice activity) process a stream of audio data frames based on output from one or more microphones of assistant device 110A to monitor the occurrence of "stop," "pause," or a limited set of other specific warm word(s). The processing can be performed by warm word(s) engine 127A using one of warm word(s) model(s) 137A1, such as a neural network model trained to process frames of audio data and generate an output indicating whether an utterance of "stop" is present in the audio data. In response to detecting the occurrence of "stop," warm word(s) engine 127A can cause a command to be executed to clear a timer or alarm that is audibly sounding. In such a case, the warm word(s) engine 127A can process the image stream from the camera of the assistant device 110A continuously (or at least when the presence sensor detects presence) to monitor the occurrence of the hand in a "stop" pose. The processing can be performed by the warm word(s) engine 127A using one of the warm word(s) models 137A1(s), such as a neural network model trained to process frames of visual data and generate an output indicating whether the hand is in a "stop" pose. In response to detecting the occurrence of a "stop" pose, the warm cue(s) engine 127A can cause a command to be executed to clear a timer or alarm that is sounding audibly.
[0041] As another example, warm word(s) such as "volume up," "volume down," and "next" can be activated (e.g., enabled) at least when music or other media content is being audibly rendered at assistant device 110A via assistant client 120A. For example, in such a case, warm word(s) engine 127A can continuously process a stream of audio data frames that are based on output from one or more microphones of assistant device 110A. The processing can include monitoring for occurrences of "volume up" using first warm word(s) model(s) 137A1, monitoring for occurrences of "volume down" using second warm word(s) model(s) 137A1, and monitoring for occurrences of "next" using third warm word(s) model(s) 137A1. In some implementations, the different warm word(s) model(s) 137A1 can be loaded into memory from a storage device of the assistant device 110A or downloaded by the assistant device 110A from a local model repository 150 accessible through interaction with the cloud-based assistant component(s) 140. In response to detecting the occurrence of "Turn up the volume", the warm word(s) engine 127A can cause a command to be executed to increase the volume of the music being rendered, in response to detecting the occurrence of "Turn down the volume", the warm word(s) engine can cause a command to be executed to decrease the volume of the music, and in response to detecting the occurrence of "Next", the warm word(s) engine can cause a command to be executed to render the next track instead of the current music track.
[0042] Continuing the example, when music is not being audibly rendered on assistant device 110A via assistant client 120A, warm word(s) "volume up", "volume down", and "next" may be inactive (e.g., disabled), and warm word(s) engine 127A may not monitor occurrences of said warm words. In particular, first warm word(s) model(s) 137A1(s) used to monitor occurrences of "volume up", second warm word(s) model(s) 137A1(s) used to monitor occurrences of "volume down", and third warm word(s) model(s) 137A1(s) used to monitor occurrences of "next" may not be loaded into memory by assistant client 120A.
[0043] In some implementations, the set of warm words detected by assistant device 110A using warm word(s) model(s) 137A can be set by the user and / or automatically selected based on the current context and / or capabilities of assistant device 110A.
[0044] In another example, the assistant client 120A can enable detection of new warm words by the warm word(s) engine 127A by loading new warm word(s) model(s) 137A1 into memory, for example from a storage device of the assistant device 110A or from a download from a local model repository 150 accessible via interaction with the cloud-based assistant component(s) 140. The assistant client 120A can disable detection of warm words by the warm word(s) engine 127A by not loading the warm word(s) model(s) 137A1 corresponding to the warm word into memory and / or by unloading the warm word(s) model(s) 137A1 corresponding to the warm word from memory. While unloaded from memory, the warm word(s) model(s) 137A1(s) remain stored in the storage device of the assistant device 110A and can be loaded or reloaded into memory at another time, for example, to detect the corresponding warm word. Alternatively, the assistant client 120A can disable the detection of the warm word(s) by the warm word(s) engine 127A by erasing the warm word(s) model(s) 137A1(s) from the assistant device 110A, for example, by unloading the warm word(s) model(s) 137A1(s) from memory and further deleting the warm word(s) model(s) 137A1(s) from the storage device of the assistant device 110A.
[0045] Assistant client 120A further includes a voice activity detector (VAD) engine 128A1 and one or more associated on-device VAD models 138A1. VAD engine 128A1 can at least selectively monitor for an occurrence of voice activity in the audio data and, in response to detecting the occurrence, can cause one or more functions to be performed by assistant client 120A. For example, VAD engine 128A1 can activate wake cue(s) engine 121A1 in response to detecting voice activity. As another example, VAD engine 128A1 can be used in a continuous listening mode to monitor for an occurrence of voice activity in the audio data and, in response to detecting the occurrence, activate ASR engine 122A1. VAD engine 128A1 can utilize VAD model(s) 138A1 to process the voice data in determining whether voice activity is present in the voice data.
[0046] With respect to assistant client 120A, certain engines and corresponding models have been described. However, it should be noted that some engines may be omitted and / or additional engine(s) may be included. It should also be noted that assistant client 120A can fully process many assistant requests, such as many assistant requests provided as utterances, through various on-device engines and corresponding models. However, because assistant device 110A is relatively constrained in terms of processing capabilities, there are still many assistant requests that cannot be fully processed locally on assistant device 110A. For example, NLU engine 123A1 and / or corresponding NLU model 133A1 may cover only a subset of all intents and / or parameters available via the automated assistant. As another example, fulfillment engine 124A1 and / or corresponding fulfillment model(s) may cover only a subset of available fulfillments. As yet another example, ASR engine 122A1 and corresponding ASR model(s) 132A1 may not be robust and / or accurate enough to correctly transcribe various utterances.
[0047] Considering these and other considerations, the cloud-based assistant component(s) 140 may still be at least selectively utilized in performing at least some processing of the assistant request received at the assistant device 110A. The cloud-based automated assistant component 140 may include engines and / or models (and / or additional or alternative) corresponding to the assistant device 110A. However, because the cloud-based automated assistant component 140 may leverage the virtually unlimited resources of the cloud, one or more cloud-based counterparts may be more robust and / or accurate than those of the assistant client 120A. As an example, in response to an utterance that calls for the execution of an assistant action(s) not supported by the local NLU engine 123A1 and / or the local fulfillment engine 124A1, the assistant client 120A may send audio data of the utterance and / or a transcription thereof generated by the ASR engine 122A1 to the cloud-based automated assistant component 140. The cloud-based automated assistant component 140 (e.g., an NLU engine and / or its fulfillment engine) can perform more robust processing of such data, allowing for resolution and / or execution of assistant action(s). Transmission of data to the cloud-based automated assistant component 140 occurs over one or more wider area network(s) (WAN) 109, such as the Internet or a private WAN.
[0048] The second assistant device 110B includes an assistant client 120B, which may be a standalone application on an operating system and may form all or part of the operating system of the assistant device 110B. Similar to assistant client 120A, assistant client 120B includes wake / paging engine 121B1 and one or more associated on-device wake / paging models 131B1, ASR engine 122B1 and one or more associated on-device ASR models 132B1, NLU engine 123B1 and one or more associated on-device NLU models 133B1, fulfillment engine 124B1 and one or more associated on-device fulfillment models 134B1, TTS engine 125B1 and one or more associated on-device TTS models 135B1, authentication engine 126B1 and one or more associated on-device authentication models 136B1, warm word(s) engine 127B1 and one or more associated on-device warm word(s) models 137B1, VAD engine 128B1 and one or more associated on-device VAD models 138B1.
[0049] Some or all of the engines and / or models of assistant client 120B may be the same as those of assistant client 120A, and some or all of the engines and / or models may be different. For example, wake cue(s) engine 121B1 may lack the capability to detect wake cue(s) in image(s), and / or wake model 131B1 may lack model(s) for processing image(s) for detection of wake cue(s), while wake cue(s) engine 121A1 includes such capability and wake model(s) 131B1 includes such model(s). This may be because, for example, assistant device 110A includes a camera and assistant device 110B does not include a camera. As another example, ASR model(s) 131B1 used by ASR engine 122B1 may be different from ASR model(s) 131A1 used by ASR engine 122A1. This may be due, for example, to different models optimized for different processor and / or memory capabilities between assistant device 110A and assistant device 110B.
[0050] With respect to assistant client 120B, specific engines and corresponding models have been described. However, it should be noted that some engines may be omitted and / or additional engine(s) may be included. It should also be noted that assistant client 120B can fully process many assistant requests, such as many assistant requests provided as speech, through various on-device engines and corresponding models. However, because client device 110B is relatively constrained in terms of processing capabilities, there are still many assistant requests that cannot be fully processed locally on assistant device 110B. In view of these and other considerations, cloud-based assistant component(s) 140 may still be at least selectively utilized in performing processing of at least some of the assistant requests received at assistant device 110B.
[0051] Assistant device 110C includes assistant client 120C, which may be a standalone application on an operating system and may form all or part of the operating system of assistant device 110C. Similar to assistant client 120A and assistant client 120B, assistant client 120C includes wake / paging engine 121C1 and one or more associated on-device wake / paging models 131C1, authentication engine 126C1 and one or more associated on-device authentication models 136C1, warm word(s) engine 127C1 and one or more associated on-device warm word(s) models 137C1, and VAD engine 128C1 and one or more associated on-device VAD models 138C1. Some or all of the engines and / or models of assistant client 120C may be the same as those of assistant client 120A and / or assistant client 120B, and / or some or all of the engines and / or models may be different.
[0052] However, unlike assistant client 120A and assistant client 120B, assistant client 120C does not include any ASR engine or related model, any NLU engine or related model, any fulfillment engine or related model, and any TTS engine or related model. Furthermore, assistant client 120B can only fully process certain assistant request(s) (i.e., those that conform to the warm word(s) detected by warm word(s) engine 127C1) through various on-device engines and corresponding models, and cannot process many assistant requests, such as assistant requests that are provided as speech and do not conform to the warm queue. In view of these and other considerations, cloud-based assistant component(s) 140 can still be at least selectively utilized in performing processing of at least a portion of the assistant requests received at assistant device 110C.
[0053] The fourth assistant device 110D includes an assistant client 120D, which may be a standalone application on an operating system and may form all or part of the operating system of the assistant device 110D. Similar to assistant client 120A, assistant client 120B, and assistant client 120C, assistant client 120D includes a wake / paging engine 121D1 and one or more associated on-device wake / paging models 131D1, an authentication engine 126D1 and one or more associated on-device authentication models 136D1, a warm word(s) engine 127D1 and one or more associated on-device warm word(s) models 137D1, and a VAD engine 128D1 and one or more associated on-device VAD models 138D1. Some or all of the engines and / or models of assistant client 120C may be the same as those of assistant client 120A, assistant client 120B, and / or assistant client 120C, and / or some or all of the engines and / or models may be different.
[0054] However, unlike assistant client 120A and assistant client 120B, and similar to assistant client 120C, assistant client 120D does not include any ASR engine or related model, any NLU engine or related model, any fulfillment engine or related model, and any TTS engine or related model. Furthermore, it should be noted that assistant client 120D can only fully process certain assistant request(s) (i.e., those that conform to the warm cue(s) detected by warm word(s) engine 127D1) through various on-device engines and corresponding models, and cannot process many assistant requests, such as assistant requests that are provided as utterances and do not conform to the warm cue. In view of these and other considerations, cloud-based assistant component(s) 140 may still be at least selectively utilized in performing processing of at least a portion of the assistant requests received at assistant device 110D.
[0055] 2 is a flow chart illustrating an example method 200 for warm word arbitration between automated assistant devices, according to embodiments disclosed herein. For convenience, the operations of the flow chart are described with reference to a system that performs the operations. The system may include various components of various computer systems, such as one or more components of assistant devices 110A-110D. Additionally, although the operations of method 200 are shown in a particular order, this is not meant to be limiting. One or more operations may be reordered, omitted, or added.
[0056] In block 205, the system uses a wireless protocol to discover one or more additional assistant devices in the group of assistant devices by the first assistant device. In an embodiment, in block 205, the assistant client 120A running on the first assistant device (e.g., assistant device 110A) uses a wireless protocol (e.g., Bluetooth, Wi-Fi, ultrasonic audio, etc.) to discover one or more additional assistant devices (e.g., assistant devices 110B-110D) in the group of assistant devices (e.g., a group of assistant devices 110A-110D located in close proximity in the environment 100). In some embodiments, the one or more additional assistant devices include a second assistant device (e.g., assistant device 110B).
[0057] In block 210, the system determines to include the first assistant device and the one or more additional assistant devices in the group of assistant devices. In an embodiment, in block 210, the assistant client 120A running on the assistant device 110A determines to include the first assistant device (e.g., assistant device 110A) and the one or more additional assistant devices (e.g., assistant devices 110B-110D) discovered in block 205 in the group of assistant devices. In some embodiments, determining to include the first assistant device and the one or more additional assistant devices in the group of assistant devices is based on determining that the first assistant device and the one or more additional assistant devices are located in close proximity. In other embodiments, determining that the group of assistant devices includes the first assistant device and the one or more additional assistant devices is based on the first assistant device and the one or more additional assistant devices each detecting the same utterance. In some embodiments, determining to include the first assistant device and the one or more additional assistant devices in the group of assistant devices may be further based on the first assistant device and the one or more additional assistant devices all being registered to the same user account and the same set of user account(s).
[0058] With continued reference to block 210, in some implementations, assistant devices may be determined to be located in close proximity based on occurrence(s) of detecting the same speech(es) at at least a threshold "volume" and / or a threshold signal-to-noise (SNR) ratio and similar volume and / or SNR ratios between assistant devices for the occurrence(s). In other words, two or more assistant devices may be determined to be located in close proximity based on all assistant devices clearly detecting the same speech(es). In other implementations, two or more assistant devices may be determined to be located in close proximity based on being assigned to the same room in the home graph. In yet other embodiments, a first assistant device may emit a sound through a speaker (optionally at a frequency inaudible to humans) and request that the other assistant devices listen using a microphone(s) and report back on whether the sound was detected and / or the characteristics of the detected sound (e.g., volume, SNR, timestamp of detection, etc.). This information on whether the sound was detected and / or the characteristics of the detected sound may be used by the assistant device to determine which assistant devices are located nearby. In yet other implementations, near field communication (NFC) can be used to determine which assistant devices are nearby.
[0059] In block 215, the system determines that warm word arbitration is to be initiated between the first assistant device and one or more additional assistant devices. In an embodiment, in block 215, the assistant client 120A running on the assistant device 110A determines that warm word arbitration is to be initiated between the first assistant device (e.g., assistant device 110A) and one or more additional assistant devices (e.g., assistant devices 110B-110D). In response to determining that warm word arbitration is to be initiated in block 215, the system performs warm word arbitration according to blocks 220 to 235.
[0060] With continued reference to block 215, in some embodiments, the determination that warm word arbitration is initiated is based on the discovery of a new assistant device in the assistant device group (e.g., when a new assistant device is added to the environment 100 near the assistant devices 110A-110D) and / or based on the determination that an assistant device has been removed from the group of assistant devices (e.g., when an assistant device is no longer detected in the environment 100 near the assistant devices 110A-110D). In other embodiments, the determination that warm word arbitration is initiated is based on the addition or removal of a warm word in the set of activated warm words of the first assistant device (e.g., assistant device 110A), for example, based on a configuration change requested by a user. In yet other embodiments, the determination that warm word arbitration is initiated is based on a change in the surroundings detected by the first assistant device (e.g., assistant device 110A), for example, a new user entering the space in which the first assistant device is located, and / or a user starting a new activity, such as cooking. In some embodiments, any of the assistant devices 110A-110D in the environment 100 may initiate arbitration.
[0061] In block 220, the system broadcasts the set of activated warm words of the first assistant device by the first assistant device to one or more additional assistant devices in the group of assistant devices. In an embodiment, in block 220, assistant client 120A running on assistant device 110A broadcasts the set of activated warm words of assistant device 110A to one or more additional assistant devices (e.g., assistant devices 110B-110D) in the group of assistant devices.
[0062] Continuing to refer to block 220, in some embodiments, the system broadcasts, by the first assistant device (e.g., assistant device 110A), to one or more additional assistant devices (e.g., assistant devices 110B-110D) in the group of assistant devices, a warm word affinity score for each warm word in the set of activated warm words of the first assistant device. The affinity scores can be comparable between the assistant devices 110A-110D and determined based on shared measurements. In some embodiments, for each warm word in the set of activated warm words of the first assistant device, a warm word affinity score is determined based on the frequency of detection of the warm word by the first assistant device. In other embodiments, for each warm word in the set of activated warm words of the first assistant device, a warm word affinity score is determined based on the time the warm word was most recently detected by the first assistant device. The affinity score may also be determined taking into account explicit user signals from the current context and / or past interactions. In other implementations, the affinity scores of the warm words are determined taking into account the accuracy of the particular warm word model used by the assistant device (e.g., assistant device 110A). For example, a device with more resources may have a more accurate version of the warm word model loaded on the device, so the affinity scores of the warm words of the device with more resources may be higher than the affinity scores of the warm words of the device with fewer resources.
[0063] With continued reference to block 220, in yet other embodiments, for each warm word in the set of activated warm words of the first assistant device, an affinity score for the warm word may be determined based on device characteristics of the first assistant device. The affinity score may further be determined based on user characteristics and / or warm word embeddings. The affinity score may be determined taking into account warm words that may be semantically related (e.g., "play" and "pause") and / or phonetically similar and may be more relevant to a particular assistant device, for example, based on the user's preferred media device. In some embodiments, the affinity score may be determined based on the output of a machine learning model.
[0064] In block 225, for each of one or more additional assistant devices in the group of assistant devices, the system receives from the additional assistant device a set of activated warm words for the additional assistant device. In an embodiment, in block 225, for each of one or more additional assistant devices in the group of assistant devices (e.g., assistant devices 110B-110D), assistant client 120A running on assistant device 110A receives from the additional assistant device a set of activated warm words for the additional assistant device.
[0065] Continuing to refer to block 225, in some embodiments, for each of one or more additional assistant devices in the group of assistant devices, the system receives from the additional assistant device a warm word affinity score for each warm word in the set of activated warm words of the additional assistant device. In some embodiments, for each of one or more additional assistant devices, a warm word affinity score is determined for each warm word in the set of activated warm words of the additional assistant device based on the frequency of detection of the warm word by the additional assistant device. In other embodiments, for each of one or more additional assistant devices, a warm word affinity score is determined for each warm word in the set of activated warm words of the additional assistant device based on the time when the warm word was most recently detected by the additional assistant device. In yet other embodiments, for each of one or more additional assistant devices, a warm word affinity score is determined for each warm word in the set of activated warm words of the additional assistant device based on the device characteristics of the additional assistant device.
[0066] In block 230, the system determines whether a matching warm word is identified based on the matching warm word being included in the set of activated warm words of the first assistant device and being included in the set of activated warm words of the second assistant device. In an embodiment, in block 230, the assistant client 120A running on the assistant device 110A determines whether a matching warm word is identified based on the matching warm word being included in the set of activated warm words of the first assistant device (e.g., assistant device 110A) received in block 225 and being included in the set of activated warm words of the second assistant device (e.g., assistant device 110B).
[0067] Continuing to refer to block 230, in response to the assistant client 120A determining that a matching warm word is identified based on the matching warm word being included in the set of activated warm words of the first assistant device (e.g., assistant device 110A) and being included in the set of activated warm words of the second assistant device (e.g., assistant device 110B), the flow proceeds to block 235. On the other hand, in response to the assistant client 120A determining that a matching warm word is not identified, the flow proceeds to block 240.
[0068] In block 235, the system enables or disables detection of matching warm words by the first assistant device in response to identifying a matching warm word. In an embodiment, in block 235, assistant client 120A running on assistant device 110A enables or disables detection of matching warm words by the first assistant device (e.g., assistant device 110A) in response to identifying a matching warm word in block 230. Flow then returns to block 220, where warm word arbitration is repeated until no matching warm words are detected in block 230 in an iteration of the warm word arbitration process.
[0069] With continued reference to block 235, in some implementations, the assistant client 120A can enable detection of new warm words by the warm word(s) engine 127A by loading new warm word(s) model(s) 137A1 into memory, for example from a storage device of the assistant device 110A or from a download from a local model repository 150 accessible via interaction with the cloud-based assistant component(s) 140. In some implementations, the assistant client 120A can disable detection of warm words by the warm word(s) engine 127A by not loading the warm word(s) model(s) 137A1 corresponding to the warm word into memory and / or by unloading the warm word(s) model(s) 137A1 corresponding to the warm word from memory. While unloaded from memory, the warm word(s) model(s) 137A1(s) remain stored in the storage device of the assistant device 110A and can be loaded or reloaded into memory at another time, for example, to detect the corresponding warm word. Alternatively, the assistant client 120A can disable the detection of the warm word(s) by the warm word(s) engine 127A by erasing the warm word(s) model(s) 137A1(s) from the assistant device 110A, for example, by unloading the warm word(s) model(s) 137A1(s) from memory and further deleting the warm word(s) model(s) 137A1(s) from the storage device of the assistant device 110A.
[0070] With continued reference to block 235, in some implementations, in response to identifying the matching warm word, enabling or disabling the detection of the matching warm word by the first assistant device (e.g., assistant device 110A) is based on the affinity score of the matching warm word of the first assistant device (e.g., assistant device 110A) and the affinity score of the matching warm word of the second assistant device (e.g., assistant device 110B). In particular, in some implementations, if the affinity score of the matching warm word of the first assistant device (e.g., assistant device 110A) is higher than the affinity score of the matching warm word of one or more additional assistant devices, including the second assistant device (e.g., assistant device 110B), the assistant client 120A running on the assistant device 110A can enable the detection of the matching warm word. On the other hand, if the affinity score of the matching warm word of the first assistant device (e.g., assistant device 110A) is not higher than the affinity score of the matching warm word of one or more additional assistant devices, including the second assistant device (e.g., assistant device 110B), assistant client 120A running on assistant device 110A can disable detection of the matching warm word.
[0071] With continued reference to block 235, in some implementations, in response to disabling detection of a warm word by the first assistant device (e.g., assistant device 110A), the first assistant device adds a new warm word to the set of activated warm words of the first assistant device. In some implementations, the new warm word may be selected (e.g., by assistant client 120A) based on the new warm word having the next highest affinity score to the first assistant device (e.g., assistant device 110A). In other implementations, the new warm word may be selected (e.g., by assistant client 120A) based on the relationship of the new warm word to an existing warm word or set of warm words for which detection is enabled on the first assistant device. For example, if the set of existing warm words includes "volume up," "volume down," and "next track," the new warm word "previous track" may be added based on the set of existing warm words associated with "previous track" and controlling music playback.
[0072] With continued reference to block 235, in some implementations, the system can provide an indication to the user (e.g., on a user interface displayed on the display of assistant device 110A) as to which warm words are activated and on which devices. For example, assistant device 110A can display a list of available warm words with device icons to indicate which of assistant devices 110A-110D processes each warm word.
[0073] In block 240, the system detects speech through the microphone of the first assistant device. In an embodiment, in block 240, assistant client 120A running on assistant device 110A detects speech through the microphone of assistant device 110A. For example, assistant client 120A can detect the utterance "Set a timer for 3 minutes on my phone." In this example, the user's phone can be assistant device 110B.
[0074] In block 245, the system uses the on-device warm word detection model of the matching warm word by the first assistant device to identify occurrences of the matching warm word in the utterance. In an embodiment, in block 245, assistant client 120A uses on-device warm word(s) model 137A of the matching warm word to identify occurrences of the matching warm word in the utterance detected in block 240. For example, assistant client 120A can identify "set timer" as an occurrence of the matching warm word.
[0075] In block 250, the system determines that the second assistant device is the target of the command mapped to the matching warm word based on performing automatic speech recognition on at least a portion of the utterance preceding or following the matching warm word. In an embodiment, in block 250, the assistant client 120A determines that the device name provided in the utterance does not match the name of the processing device (assistant device 110A) based on performing automatic speech recognition (e.g., using ASR engine 122A1) on at least a portion of the utterance preceding or following the matching warm word (detected in block 240), and instead, the second assistant device (e.g., assistant device 110B) is the target of the command mapped to the matching warm word. In the above example, the assistant client 120A determines that "my phone" (i.e., assistant device 110B) is the target of the command mapped to the matching warm word ("set timer").
[0076] With continued reference to block 250, in some implementations, in addition to modifying the processing of the current utterance, the user may explicitly assign another device as the target of the command mapped to the matching warm word to modify the ongoing processing of the command mapped to the matching warm word. For example, the device specified in the utterance may be assigned to execute the command mapped to the matching warm word in the future, at least for a period of time. In this case, assistant client 120A may disable detection of the matching warm word, and assistant client 120B may enable detection of the matching warm word. Assistant client 120A may enable another warm word in place of the disabled matching warm word. In some implementations, this modification may be effective for a specific time (e.g., n hours, or the remainder of the day) or for the duration of the current user activity.
[0077] In block 255, in response to determining that the second assistant device is the target of the command mapped to the matching warm word, the system sends the command mapped to the matching warm word to the second assistant device. In an embodiment, in block 255, in response to determining that the second assistant device is the target of the command mapped to the matching warm word in block 250, the assistant client 120A sends the command mapped to the matching warm word to the second assistant device (e.g., assistant device 110B). In this example, the assistant client 120A sends the command mapped to the matching warm word ("set timer") to the user's phone (assistant device 110B).
[0078] 3 is a flow chart illustrating an example method 300 for warm word arbitration between automated assistant devices, according to embodiments disclosed herein. For convenience, the operations of the flow chart are described with reference to a system that performs the operations. The system may include various components of various computer systems, such as one or more components of assistant devices 110A-110D. Additionally, although the operations of method 300 are shown in a particular order, this is not meant to be limiting. One or more operations may be reordered, omitted, or added.
[0079] In block 310, the system determines that the first assistant device and the second assistant device are located in close proximity. In an embodiment, in block 310, the cloud-based assistant component 140(s) determines that the first assistant device (e.g., assistant device 110A) and the second assistant device (e.g., assistant device 110B) are located in close proximity based on the first assistant device and the second assistant device respectively detecting the same speech.
[0080] With continued reference to block 310, in some implementations, assistant devices may be determined to be located in close proximity based on occurrence(s) of detecting the same speech(es) at at least a threshold "volume" and / or a threshold signal-to-noise (SNR) ratio and similar volume and / or SNR ratios between assistant devices for the occurrence(s). In other words, two or more assistant devices may be determined to be located in close proximity based on all assistant devices clearly detecting the same speech(es). In other implementations, two or more assistant devices may be determined to be located in close proximity based on being assigned to the same room in the home graph. In yet other embodiments, a first assistant device may emit a sound via a speaker (optionally at a frequency inaudible to humans) and request that other assistant devices listen using a microphone(s) and report back on whether the sound was detected and / or characteristics of the detected sound (e.g., volume, SNR, timestamp of detection, etc.). This information on whether the sound was detected and / or characteristics of the detected sound may be used by the assistant device to determine which assistant devices are located nearby. In yet other implementations, near field communication (NFC) can be used to determine which assistant devices are nearby.
[0081] In block 320, the system identifies a first set of on-device warm word detection models active on the first assistant device and a second set of on-device warm word detection models active on the second assistant device. In an embodiment, in block 320, the cloud-based assistant component 140(s) identifies a first set of on-device warm word detection models (e.g., on-device warm word(s) model 137A1) active on the first assistant device (e.g., assistant device 110A) and a second set of on-device warm word detection models (e.g., on-device warm word(s) model 137B1) active on the second assistant device (e.g., assistant device 110B), and in block 310, it is determined that the first assistant device and the second assistant device are located in close proximity.
[0082] At block 330, the system identifies overlapping on-device warm word detection models included in both the first set of on-device warm word detection models and the second set of on-device warm word detection models. In an embodiment, at block 330, the cloud-based assistant component(s) 140 identifies overlapping on-device warm word detection models included in both the first set of on-device warm word detection models (e.g., on-device warm word(s) model 137A1) and the second set of on-device warm word detection models (e.g., on-device warm word(s) model 137B1).
[0083] Continuing to refer to block 330, in some implementations, for each of the first assistant device and the second assistant device, the system identifies affinity scores for warm words associated with overlapping on-device warm word detection models. In some implementations, the affinity scores for warm words associated with overlapping on-device warm word detection models are determined based on the frequency of detection of the warm words. In other implementations, the affinity scores for warm words associated with overlapping on-device warm word detection models are determined based on the time when the warm words were most recently detected.
[0084] In block 340, the system disables the overlapping on-device warm word detection model of either the first assistant device or the second assistant device in response to identifying the overlapping on-device warm word detection model and based on determining that the first assistant device and the second assistant device are located in close proximity. In an embodiment, in block 340, the cloud-based assistant component 140(s) disables the overlapping on-device warm word detection model identified in block 330 of either the first assistant device (e.g., assistant device 110A) or the second assistant device (e.g., assistant device 110B) in response to identifying the overlapping on-device warm word detection model in block 330 and based on determining that the first assistant device and the second assistant device are located in close proximity in block 310.
[0085] 4 is a block diagram of an example computing device 410 that may be optionally utilized to perform one or more aspects of the techniques described herein. In some implementations, one or more of the client device, the cloud-based automated assistant component(s), and / or other component(s) may configure one or more components of the example computing device 410.
[0086] Computing device 410 typically includes at least one processor 414 that communicates with a number of peripheral devices via a bus subsystem 412. These peripheral devices may include, for example, a storage subsystem 424 including a memory subsystem 425 and a file storage subsystem 426, user interface output devices 420, user interface input devices 422, and a network interface subsystem 416. The input and output devices enable user interaction with computing device 410. The network interface subsystem 416 provides an interface to external networks and is coupled to corresponding interface devices in other computing devices.
[0087] The user interface input devices 422 may include pointing devices such as a keyboard, a mouse, a trackball, a touchpad, a graphics tablet, a scanner, a touch screen integrated into a display, an audio input device such as a voice recognition system, a microphone, and / or other types of input devices. In general, use of the term "input device" is intended to include all possible types of devices and methods for inputting information into the computing device 410 or a communications network.
[0088] The user interface output devices 420 may include a display subsystem, a printer, a fax machine, or a non-visual display such as an audio output device. The display subsystem may include a flat panel device such as a cathode ray tube (CRT), a liquid crystal display (LCD), a projection device, or other mechanism for creating a visible image. The display subsystem may also provide a non-visual display, such as via an audio output device. In general, use of the term "output device" is intended to include all possible types of devices and methods for outputting information from the computing device 410 to a user or to another machine or computing device.
[0089] Storage subsystem 424 stores programming and data structures that provide the functionality of some or all of the modules described herein. For example, storage subsystem 424 may include logic to perform selected aspects of the methods disclosed herein, as well as logic to implement the various components illustrated in FIG.
[0090] These software modules are typically executed by the processor 414 alone or in combination with other processors. The storage subsystem 424 includes a memory subsystem 425 that can include a main random access memory (RAM) 430 for storing instructions and data during program execution, and a number of memories, such as a read-only memory (ROM) 432 in which fixed instructions are stored. The file storage subsystem 426 can provide persistent storage of program files and data files, and can include a hard disk drive, a floppy disk drive with associated removable media, a CD-ROM drive, an optical drive, or a removable media cartridge. Modules that implement the functionality of an embodiment may be stored by the file storage subsystem 426 in the storage subsystem 424 or on other machines accessible by the processor(s) 414.
[0091] Bus subsystem 412 provides a mechanism that allows the various components and subsystems of computing device 410 to communicate with each other as intended. Although bus subsystem 412 is shown generally as a single bus, alternative implementations of the bus subsystem may use multiple buses.
[0092] Computing device 410 can be of many different types, such as a workstation, a server, a computing cluster, a blade server, a server farm, or any other data processing system or computing device. Due to the ever-changing nature of computers and networks, the description of computing device 410 shown in FIG. 4 is intended only as a specific example to illustrate some implementations. Many other configurations of computing device 410 can have more or fewer components than the computing device shown in FIG.
[0093] Although several embodiments have been described and illustrated herein, various other means and / or structures can be utilized to perform the functions and / or obtain the results and / or one or more advantages described herein, and each such variation and / or modification is deemed to be within the scope of the embodiments described herein. More generally, all parameters, dimensions, materials, and configurations described herein are meant to be illustrative, and the actual parameters, dimensions, materials, and / or configurations will depend on the particular application(s) in which the teachings are used. Those skilled in the art will recognize or be able to ascertain using no more than routine experimentation many equivalents to the specific embodiments described herein. Thus, it is to be understood that the foregoing embodiments have been presented for illustrative purposes only, and that within the scope of the appended claims and equivalents thereof, embodiments may be practiced otherwise than as specifically described and claimed. The embodiments of the present disclosure refer to each individual feature, system, article, material, kit, and / or method described herein. Furthermore, any combination of two or more such features, systems, articles, materials, kits, and / or methods is within the scope of the disclosure, unless such features, systems, articles, materials, kits, and / or methods are mutually inconsistent.
Claims
1. 1. A method implemented by one or more processors, comprising: Determining that warm word arbitration is initiated between a first assistant device and one or more additional assistant devices, the one or more additional assistant devices including a second assistant device, and the first assistant device and the one or more additional assistant devices are included in a group of assistant devices; performing warm word arbitration in response to determining that the warm word arbitration is initiated; and The warm word arbitration includes: Broadcasting, by the first assistant device, a set of activated warm words of the first assistant device to the one or more additional assistant devices in the group of the assistant device; For each of the one or more additional assistant devices in the group of assistant devices, receiving from the additional assistant device a set of activated warm words for the additional assistant device; Identifying a matching warm word based on the matching warm word being included in the set of activated warm words of the first assistant device and being included in the set of activated warm words of the second assistant device; enabling or disabling detection of the matching warm word by the first assistant device in response to identifying the matching warm word; A method comprising:
2. The method of claim 1 , further comprising discovering the additional assistant devices in the group of assistant devices using a wireless protocol.
3. The method of claim 1 , wherein determining that the warm word arbitration is initiated is based on discovery of a new assistant device within the group of assistant devices.
4. The method of claim 1 , wherein determining that the warm word arbitration is initiated is based on determining that an assistant device has been removed from the group of assistant devices.
5. The method of claim 1 , wherein determining that warm word arbitration is initiated is based on the addition or removal of a warm word in the set of activated warm words of the first assistant device.
6. The method of claim 1 , wherein determining that the warm word arbitration is initiated is based on a change in an ambient condition detected by the first assistant device.
7. broadcasting, by the first assistant device, to the one or more additional assistant devices in the group of assistant devices, for each warm word in the set of activated warm words of the first assistant device, an affinity score of the warm word; For each of the one or more additional assistant devices in the group of assistant devices, receive from the additional assistant device, for each warm word in the set of activated warm words of the additional assistant device, an affinity score for the warm word; Further comprising:
2. The method of claim 1, wherein enabling or disabling detection of the matching warm word by the first assistant device in response to identifying the matching warm word is based on the affinity score of the matching warm word of the first assistant device and the affinity score of the matching warm word of the second assistant device.
8. For each warm word in the set of activated warm words of the first assistant device, an affinity score for the warm word is determined based on a frequency of detection of the warm word by the first assistant device; For each of the one or more additional assistant devices, For each warm word in the set of activated warm words of the additional assistant device, the affinity score of the warm word is determined based on a frequency of detection of the warm word by the additional assistant device. The method of claim 7.
9. For each warm word in the set of activated warm words of the first assistant device, the affinity score of the warm word is determined based on a time when the warm word was most recently detected by the first assistant device; For each of the one or more additional assistant devices, For each warm word in the set of activated warm words of the additional assistant device, the affinity score of the warm word is determined based on the time when the warm word was last detected by the additional assistant device. The method of claim 7.
10. For each warm word in the set of activated warm words of the first assistant device, an affinity score for the warm word is determined based on device characteristics of the first assistant device; For each of the one or more additional assistant devices, For each warm word of the set of activated warm words of the additional assistant device, the affinity score of the warm word is determined based on device characteristics of the additional assistant device. The method of claim 7.
11. When enabling or disabling the detection of the matching warm word by the first assistant device, the first assistant device disables the detection of the warm word; 2. The method of claim 1, further comprising adding a new warm word to the set of activated warm words of the first assistant device in response to disabling detection of the warm word by the first assistant device.
12. 2. The method of claim 1, further comprising repeating the warm word arbitration process until no matching warm words are found in any iteration of the warm word arbitration process.
13. Detecting speech via a microphone of the first assistant device; identifying, by the first assistant device, occurrences of the matching warm words in the utterance using an on-device warm word detection model of the matching warm words; determining that the second assistant device is a target of a command mapped to the matching warm word based on performing automatic speech recognition on at least a portion of the utterance preceding or following the matching warm word; In response to determining that the second assistant device is the target of the command mapped to the matching warm word, sending the command mapped to the matching warm word to the second assistant device; The method of claim 1 further comprising:
14. The method of claim 1, further comprising: determining to include the first assistant device and the one or more additional assistant devices in the group of assistant devices based on a determination that the first assistant device and the one or more additional assistant devices are located in close proximity.
15. The method of claim 1, further comprising: determining that the group of assistant devices includes the first assistant device and the one or more additional assistant devices based on the first assistant device and the one or more additional assistant devices each detecting the same utterance.
16. 1. A method implemented by one or more processors, comprising: Identifying a first set of on-device warm word detection models active on a first assistant device and a second set of on-device warm word detection models active on a second assistant device, the first assistant device and the second assistant device being located in close proximity; identifying overlapping on-device warm word detection models included in both the first set of on-device warm word detection models and the second set of on-device warm word detection models; In response to identifying the overlapping on-device warm word detection model and based on determining that the first assistant device and the second assistant device are located in close proximity, disable the overlapping on-device warm word detection model of one of the first assistant device and the second assistant device; A method comprising:
17. 17. The method of claim 16, wherein the first assistant device and the second assistant device are determined to be located in close proximity based on the first assistant device and the second assistant device each detecting the same utterance.
18. and further comprising: identifying, for each of the first assistant device and the second assistant device, affinity scores for warm words associated with the overlapping on-device warm word detection models; The method of claim 16 , wherein disabling the overlapping on-device warm word detection models of either the first assistant device or the second assistant device is based on the affinity score.
19. The method of claim 18 , wherein the affinity scores of the warm words associated with the overlapping on-device warm word detection models are determined based on a detection frequency of the warm words.
20. A computer program comprising instructions which, when executed by one or more processors, cause said one or more processors to perform a method according to any one of claims 1 to 19.
21. A computer readable storage medium comprising instructions which, when executed by one or more processors, cause the one or more processors to perform the method of any one of claims 1 to 19.
22. A system comprising a processor, a computer readable memory, one or more computer readable storage media, and program instructions collectively stored on the one or more computer readable storage media, the program instructions being executable to perform the method of any one of claims 1 to 19.
Citation Information
Patent Citations
Hotword detection on multiple devices
JP2017227912A
Interaction method between smart voice apparatuses, device, apparatus, and storage medium
JP2019207710A
