Device arbitration for local execution of automatic speech recognition
By employing device arbitration techniques that allow multiple client devices to collaborate in generating textual representations of oral utterances, the system improves the accuracy and robustness of speech recognition, addressing the limitations of single-device ASR systems.
Patent Information
- Application Number
- JP2023536526
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-03-11
- Filing Date
- 2021-12-14
- Publication Date
- 2025-04-01
- Estimated Expiration
- 2041-12-14
Smart Images

Figure 0007654792000001 
Figure 0007654792000002 
Figure 0007654792000003
Abstract
Description
[Technical field]
[0001] This application relates to device arbitration for local performance of automatic speech recognition. [Background technology]
[0002] Automatic speech recognition (ASR) technology converts spoken natural language input into text. For example, audio data captured using a microphone can be converted into text. The ASR system can include an ASR model for use in generating a set of candidate recognitions. The ASR system can select the generated text from the set of candidate recognitions.
[0003] Humans can engage in human-to-computer interactions using interactive software applications referred to herein as "automated assistants" (also referred to as "digital agents," "chatbots," "conversational personal assistants," "intelligent personal assistants," "assistant applications," "conversational agents," etc.). 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 the automated assistant using verbal natural language input (i.e., speech), which in some cases can be converted to text (e.g., converted to text using ASR technology) and then processed. Summary of the Invention [Means for solving the problem]
[0004] Implementations described herein are directed to generating a text representation of a verbal utterance based on a candidate text representation of the verbal utterance generated at a given client device and / or based on one or more additional candidate text representations of the verbal utterance. Each of the additional candidate text representations of the verbal utterance is generated locally at a corresponding one of one or more additional client devices that are in a local environment including the given client device, in the same room as the given client device, communicating with the given client device using one or more local networks, within a defined range of the given client device, corresponding to the same user account, in an environment including the given client device in an additional or alternative manner, and / or combinations thereof. The candidate text representation of the verbal utterance can be generated by capturing the verbal utterance and processing the captured audio data at the given client device. The candidate text representation is generated using an automatic speech recognition (ASR) model stored locally at the given client device. The additional candidate text representations may be generated by the additional client device by processing the audio data at the additional client device using an ASR model stored locally at the additional client device. The audio data processed at the additional client device may be audio data captured at the given client device (e.g., the audio data may be transmitted from the given client device to the additional client device) or the audio data may be additional audio data captured via a microphone(s) of the additional client device.
[0005] As one illustrative example, audio data capturing a verbal utterance of "set the thermostat to 70 degrees" can be captured at a user's mobile phone, and a candidate text representation of the verbal utterance can be generated by processing the audio data with an ASR model stored locally at the user's mobile phone. In some implementations, the audio data capturing the verbal utterance can also be transmitted to additional client devices in an environment including the mobile phone, such as a laptop, an automated assistant smart speaker, and / or an automated assistant smart display. In those implementations, each of the additional client devices can generate a corresponding additional candidate text representation by processing the audio data with a corresponding additional locally stored ASR model. The additional candidate text representation can then be transmitted to the user's mobile phone, and the mobile phone can generate a text representation based on the candidate text representation (generated at the mobile phone) and the received additional candidate text representation(s) (each generated at a corresponding one of the additional client device(s)). For example, two additional candidate text representations, each generated by a corresponding additional client device, can be received at the mobile phone.
[0006] The mobile phone may then determine a final text representation based on the two additional candidate text representations and the candidate text representations. Various techniques may be utilized in determining the final text representation. For example, the candidate text representations may be generated with confidence measure(s) (e.g., corresponding measures for each word or other fragment), and each additional candidate representation may be received with a corresponding confidence measure(s), and the mobile phone may use the confidence measure(s) in determining the final text representation. For example, a given additional candidate representation may be generated as the final text representation based on the confidence measure(s) that indicates the highest confidence for that representation. As another example, the final text representation may be generated to include the most common word piece(s) among the candidate text representations and the additional candidate text representations. For example, assume that a candidate text representation is "get the thermostat to 70 degrees," a first additional candidate text representation is "set the thermostat to 7 degrees," and a second additional candidate text representation is "set the thermometer to 70 degrees." In such an instance, "set the thermostat to 70 degrees" may be generated as the final text representation, where two occurrences of "set" are selected over one occurrence of "get," two occurrences of "thermostat" are selected over one occurrence of "thermometer," and two occurrences of "70" are selected over one occurrence of "7."
[0007] The previous example describes a mobile phone sending locally captured audio data to an additional client device(s) for use by the additional client device(s) in performing local ASR. However, as previously described, in some implementations, one or more of the additional client device(s) may additionally or alternatively utilize locally captured audio data via a microphone of the additional client device in generating a corresponding candidate text representation. In some of those implementations, a given client device may optionally not send audio data captured at the given client device to any of the additional client device(s). Illustratively, continuing with the previous example, an additional candidate text representation of the spoken utterance "Hey Assistant, set the thermostat to 70 degrees" may be generated by the additional client device by processing the additional audio data with an ASR model stored locally at the additional client device. The additional audio data may capture the spoken utterance and may be captured via a microphone of the additional client device.
[0008] In some implementations, optionally, for each of the additional client device(s), a determination is made as to whether to send audio data from the given client device to the additional client device for use by the additional client device in performing local ASR. For example, the given client device (or other component(s) of the system) may determine whether to send audio data captured by using the given client device to the additional client device based on the hardware and / or software capabilities of the additional client device. The hardware and / or software capabilities of the additional client device may be ascertained from a home graph or other data stored locally at the given client device and / or based on data sent by the additional client device to the given client device. For example, the system may send audio data captured at the given client device to the additional client device if it is determined that the additional client device has a low-quality microphone. For example, the system may send audio data captured at a mobile phone to a smartwatch based on knowledge that the smartwatch has a low-quality microphone. Additionally or alternatively, the system may determine characteristics (e.g., signal-to-noise ratio) of audio data captured using a given device and may decide whether to transmit audio data to additional client devices based on the characteristics, and optionally based on characteristics (e.g., signal-to-noise ratio) of additional audio data captured at the additional client devices. For example, the system may decide not to transmit audio data captured at a given client device if the signal-to-noise ratio indicates that the captured audio data is of poor quality.As another example, the system may determine not to transmit audio data captured at a given client device if the characteristic(s) of the additional audio data indicate that the audio data is of high quality and / or that the audio data is of better quality than the audio data captured at the given client device. Additionally or alternatively, the system may determine not to transmit audio data based on the communication link between the given client device and the additional client device(s) (e.g., a wired connection between the devices, a wireless connection between the devices, etc.). For example, the system may determine not to transmit audio data if there is a low bandwidth connection between the given client device and the additional client device and / or if there is high latency on the connection between the given client device and the additional client device.
[0009] As yet another example, the system may determine whether to transmit audio data captured at a given client device to additional client devices based on historical instances of audio data at the given client device and / or the additional client devices. For example, the system may determine not to transmit audio data if the instances of audio data captured at the given client device have historically been of low quality and / or if the instances of audio data captured at the additional client devices have historically been of high quality. Similarly, the system may determine to transmit audio data if the instances of audio data captured at the given client device have historically been of high quality and / or if the instances of audio data captured at the additional client devices have historically been of low quality. As a further example, the system may determine whether to transmit audio data captured at a given client device to additional client devices based on whether the additional client devices are physically close to the given client device (e.g., determined using a stored home graph and / or active techniques to determine current proximity). For example, the system may decide to transmit audio data only if the additional client devices are not in the same room as the given client device (e.g., as determined based on a home graph) and / or are beyond a threshold distance from the given client device (e.g., as determined based on active techniques that determine the distance between the given client device and the additional client devices).As a further example, the system may determine whether to transmit audio data captured at a given client device to an additional client device based on whether the additional client device has locally detected voice activity (e.g., using a local voice activity detector). For example, the system may determine to transmit the audio data only if the additional client device does not locally detect voice activity.
[0010] In some additional or alternative implementations in which the additional client device receives audio data from a given client device, the additional client device may determine whether to utilize the audio data or, alternatively, utilize the locally captured additional audio data when performing local ASR. In some of those implementations, the additional client device may utilize one or more of the consideration(s) discussed above with respect to determining whether to transmit audio data when determining whether to utilize the audio data or the additional audio data. For example, the additional client device may compare a signal-to-noise ratio of the audio data to a signal-to-noise ratio of the additional audio data and utilize the audio data having a higher signal-to-noise ratio.
[0011] As mentioned above, in some implementations, a given client device can be in an environment that includes one or more additional client devices. For example, a given client device that is a mobile phone can be in an environment that includes a user's smart watch, a standalone interactive speaker, and a smart camera. In some of those implementations, the system can select one or more of the one or more additional client devices to use in generating one or more additional candidate textual representations of the spoken utterance. For example, the system can select one or more of the additional client devices based on historical interactions with the one or more client devices, hardware and / or software capabilities of the one or more additional client devices, etc. For example, the system can select the additional client device based on data indicating that the additional client device includes a locally stored ASR model used in ASR by the additional client device that is more robust, more accurate, and / or newer than the local ASR model of the given client device. Additionally or alternatively, the system can select the additional client device based on previous interactions between the user and the additional client device. For example, the system may select the additional client devices based on the fact that the additional client devices receive more queries from the user (and thus have more opportunities for the user to provide feedback to the ASR model). In some of these implementations, the ASR models in the additional client devices that are more frequently used by the user may be better tailored to the user's voice and may generate more accurate candidate text representations of the verbal utterance.
[0012] As mentioned above, in some implementations, a text representation of a spoken utterance may be generated based on a candidate text representation of the spoken utterance generated at a given client device and based on one or more additional candidate text representations of the spoken utterance generated at one or more corresponding additional client devices. For example, the system may randomly (or pseudo-randomly) select one or more of the candidate text representations of the verbal utterance as the text representation of the verbal utterance, the system may select the text representation of the verbal utterance based on historical interactions between a given client device and one or more additional client devices, the system may select the text representation of the verbal utterance based on a hardware and / or software configuration of the given client device and / or one or more additional client devices, the system may select the text representation based on whether additional or alternative conditions are met, the system may select the text representation of the verbal utterance based on the most frequent words and / or highest confidence among the candidate text representations, the system may select the text representation of the verbal utterance based on the highest confidence candidate text representation(s), and / or the system may do combinations thereof.
[0013] For example, the system may select a first additional candidate text representation generated using a first additional client device as the text representation of the spoken utterance based on historical interactions between a given client device and the first additional client device indicating that the first additional client device more frequently generates candidate text representations that are accurate. Additionally or alternatively, the system may select a second additional candidate text representation generated using a second additional client device as the text representation of the spoken utterance based on a quality metric and / or other metric(s) associated with an ASR model that is local to the second additional client device and utilized in generating the second additional candidate text representation.
[0014] Thus, various implementations present techniques for generating a text representation of a verbal utterance based on an instance of local speech recognition each performed by a corresponding one of multiple client devices in an environment. Using device arbitration techniques, a single client device in an environment including a user may be selected to generate a text representation of a verbal utterance spoken by the user. However, one or more additional client devices in the environment may generate a more accurate text representation of the verbal utterance. For example, a first additional client device may have a newer and / or more robust and / or more accurate version of an ASR model compared to the selected client device, a second additional client device may capture the verbal utterance in an instance of audio data containing less noise compared to the instance of audio data captured by the selected client device, and so on. Thus, implementations disclosed herein may at least selectively utilize the additional client device(s) in performing the local speech recognition and may at least selectively utilize at least a portion of the additional candidate text representation(s) generated from the local speech recognition(s) in generating a final text representation of the verbal utterance. These and other implementations can result in more accurate and / or more robust speech recognition. This allows for more efficient human / computer interaction, since the speech recognition is more likely to be accurate and downstream process(es) that rely on the recognition (e.g., natural language understanding) can be performed more accurately in light of the more accurate speech recognition. Thus, speech recognition failures that result in the user having to repeat the verbal utterance are reduced. This reduces the overall duration of the human / computer interaction, thereby reducing network and / or computational resources that would otherwise be required for a protracted interaction.
[0015] Various implementations disclosed herein are directed to selectively selecting one or more additional client devices in an environment including a given client device to generate one or more corresponding additional candidate text representations of a verbal utterance, where the text representation of the verbal utterance can be generated based on the candidate text representations generated using the given client device and the one or more candidate text representations generated using the corresponding one or more additional client devices. In other words, some implementations disclosed herein do not always utilize the additional client device(s) to generate the additional candidate text representation(s) and / or do not always utilize all available additional client device(s) to generate the additional candidate text representation(s). Instead, some implementations may only selectively utilize any additional client device(s) to generate the additional candidate text representation(s) and / or only some additional client device(s) to generate the additional candidate text representation(s). Those implementations may instead determine whether and / or which additional client device(s) to utilize based on one or more criteria. Consideration of such criteria may seek to balance the desire for more accurate speech recognition (and the resulting computational resource savings, network resource savings, and / or system latency) with the amount of computational and / or network resource usage required for more accurate speech recognition. In these and other manners, computational resources (e.g., battery power, power supply, processor cycles, memory, etc.) may be conserved by only selectively deciding to generate one or more additional candidate text representations of a verbal utterance.
[0016] As one example, a given client device may determine a hotword confidence score indicating the probability that the verbal utterance includes a hotword, and may utilize the hotword confidence score in determining whether and / or how many additional client device(s) for speech recognition to utilize. For example, a given client device may determine that the hotword confidence score meets a threshold required to invoke an automated assistant, but the hotword confidence score fails to meet a second threshold (e.g., exceeds the threshold by less than 5%). This may potentially indicate that a poor quality audio data stream is capturing the verbal utterance. In some of those implementations, the system may determine to generate one or more additional candidate text representations of the verbal utterance using one or more corresponding additional client devices based on the identified weaker confidence in the hotword. Utilizing the additional candidate text representations of the verbal utterance may increase the accuracy of the text representation of the verbal utterance. In some cases, this can prevent the system from generating an incorrect text representation of the verbal utterance, which can then prevent the user from having to repeat the verbal utterance.
[0017] As another example, in addition to determining that the hotword confidence score meets the threshold, the system can determine that a given client device can determine that the hotword confidence score indicates very strong confidence in the hotword (e.g., the confidence exceeds the threshold by 10% or more). For example, a given client device can determine that the hotword confidence score comfortably meets the threshold, which may indicate that a good quality audio data stream captures the verbal utterance. In some of these implementations, the system can not utilize any of the additional client devices to generate one or more corresponding additional candidate text representations of the verbal utterance. This selective use of one or more additional client devices to generate one or more corresponding additional candidate text representations of the verbal utterance can additionally or alternatively save computational resources required to generate one or more additional candidate text representations of the verbal utterance in situations where the system has confidence in the quality of the audio data stream capturing the verbal utterance.
[0018] The techniques described herein relate to generating a textual representation of a verbal utterance using an ASR model. However, this is not intended to be limiting. In some implementations, the techniques described herein can additionally or alternatively be used to determine the intent of the verbal utterance and / or to determine a parameter(s) related to the intent based on processing the textual representation of the verbal utterance using a local natural language understanding (NLU) model(s).
[0019] The above description is provided only as an overview of some implementations disclosed herein. These and other implementations of the present technology are disclosed in more detail below.
[0020] It should be understood that all combinations of the foregoing concepts, and additional concepts described in further detail herein, are contemplated as being part of the subject matter disclosed herein, for example, all combinations of claimed subject matter described at the end of this disclosure are contemplated as being part of the subject matter disclosed herein. [Brief description of the drawings]
[0021] [Figure 1] FIG. 2 illustrates an example of a user in an environment including multiple client devices in accordance with various implementations disclosed herein. [Diagram 2] A diagram illustrating an example of generating a text representation of a verbal utterance using a client device, a first additional client device, and a second additional client device in accordance with various implementations disclosed in this specification. [Diagram 3] FIG. 1 illustrates an example environment in which various implementations disclosed herein may be implemented. [Figure 4] 1 is a flowchart illustrating an example process for generating a textual representation of a spoken utterance, according to various implementations disclosed herein. [Diagram 5] 11 is a flowchart illustrating an example process for selecting a subset of one or more additional client devices, according to various implementations disclosed herein. [Figure 6] 1 is a flowchart illustrating an example process for generating additional candidate text representations of a spoken utterance, according to various implementations disclosed herein. [Figure 7] 1 is a flowchart illustrating another example process for generating a textual representation of a spoken utterance, according to various implementations disclosed herein. [Figure 8] FIG. 2 illustrates another example environment in which various implementations disclosed herein may be implemented. [Figure 9] FIG. 1 illustrates an example architecture of a computing device. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0022] 1 shows a user in an exemplary environment 100 including multiple client devices. In the illustrated example, a user 102 is in the environment 100 having a mobile phone 104, a smartwatch 106, an automated assistant 108 with a display, a Wi-Fi access point 110, a smart camera 112, and a laptop computer 114. The client devices in the environment 100 are merely exemplary, and a user may be in an environment including one or more additional and / or alternative client devices. For example, the environment may include one or more of a desktop computer, a laptop computer, a tablet computing device, a mobile phone, a smartwatch, one or more additional or alternative wearable computing devices, a standalone interactive speaker, an automated assistant with an embedded display, a Wi-Fi access point, a smart thermostat, a smart oven, a smart camera, one or more additional or alternative smart computing devices, one or more additional or alternative computing devices, and / or combinations thereof.
[0023] In some implementations, client devices in an environment that includes a user may run an instance of an automated assistant client. For example, a smart watch 106 may run an instance of an automated assistant client, a mobile phone 104 may run an instance of an automated assistant client, an automated assistant with a display 108 may run an instance of an automated assistant client, a Wi-Fi access point 110 may run an instance of an automated assistant client, a smart camera 112 may run an instance of an automated assistant client, and / or a laptop computer 114 may run an instance of an automated assistant client.
[0024] In some implementations, different client devices may each include different hardware and / or software configurations. For example, the microphone of the mobile phone 104 may be better than the microphone of the smart watch 106. This may lead to the mobile phone 104 capturing a higher quality audio data stream compared to the additional audio data stream captured using the smart watch 106. Additionally or alternatively, the ASR model of the laptop computer 114 may generate more accurate candidate text predictions compared to the ASR model of the smart camera 112.
[0025] As an illustrative example, a user 102 may speak the verbal utterance, "Hey Assistant, turn on all the lights." One or more of the client devices in the environment 100 may capture audio data capturing the verbal utterance. Various factors may affect the quality of the audio data captured at each of the one or more client devices. In some implementations, a user's posture (e.g., the user's position and / or orientation) in the environment relative to the client devices may affect the quality of the audio data captured at one or more of the client devices. For example, a client device in front of the user may capture a higher quality audio data stream of the verbal utterance as compared to a client device behind the user.
[0026] Additionally or alternatively, sources of noise in the environment (e.g., barking dogs, white noise machines, audio data from a television, one or more additional users speaking, one or more additional or alternative sources of noise, and / or combinations thereof) can affect the quality of the audio data streams captured at the client devices. For example, a dog may be barking in the environment while a user is speaking verbal utterances. The attitude of the dog in the environment relative to the client devices (e.g., the dog's position and / or orientation) can affect the quality of the audio data captured at one or more of the client devices. For example, a client device closest to the dog may capture a lower quality audio data stream than a client device that is farther away from the dog. In other words, the audio data stream captured by the device closest to the dog may capture a higher percentage of barking dogs and a lower percentage of verbal utterances than one or more of the other client devices in the environment. Additional and / or alternative factors can affect the quality of the audio data streams captured at the client devices in the environment.
[0027] In some implementations, the system can determine a given client device from the client devices in the environment. For example, the system can select the mobile phone 104 as the given client device and generate candidate text representations of the verbal utterance by processing audio data capturing the verbal utterance using an ASR model local to the mobile phone 104. Additionally or alternatively, the system can select a subset of additional client devices in the environment for which to generate corresponding additional candidate text representations of the verbal utterance. In some implementations, the system can select one or more additional client devices by process 404 of FIG. 5 described herein. For example, the system can select a subset of the automated assistant 108 with a display, the smart camera 112, and the laptop computer 114.
[0028] In some implementations, the system can determine whether to transmit audio data capturing verbal speech captured at a given client device to a selected subset of additional client devices. In some implementations, the system can determine whether to transmit audio data captured at a given client device to one or more of the subsets of additional client devices. Additionally or alternatively, the system can transmit audio data capturing verbal speech captured at a given client device to one or more additional client devices in various manners. For example, the system can transmit a compressed version of the audio data (e.g., generated by processing the audio data using lossy and / or lossless audio compression), can transmit an encrypted version of the audio data, can transmit an unprocessed version of the audio data in a streaming manner (e.g., in real-time or near real-time as the speech is being spoken to minimize latency), and / or a combination thereof.
[0029] In some implementations, the system may generate one or more additional candidate text representations of the spoken utterance. For each additional client device in the subset of client devices, the client device may determine whether to generate a corresponding additional candidate text representation based on the audio data captured at the given client device and / or the audio data captured at the corresponding additional client device. In some implementations, the additional client device may generate the corresponding additional candidate text representation of the utterance by processing the selected audio data using an ASR model local to the corresponding additional client device. In some implementations, the system may generate one or more additional candidate text representations of the spoken utterance by process 408 of FIG. 6 described herein. For example, the system may generate a first additional candidate text representation of the spoken utterance by processing the audio data in an ASR model local to the automated assistant with display 108, a second additional candidate text representation of the spoken utterance by processing the audio data in an ASR model local to the smart camera 112, and a third candidate text representation of the spoken utterance by processing the audio data in an ASR model local to the laptop computer 114.
[0030] In some implementations, a given client device can generate a text representation of a verbal utterance based on a candidate text representation of the verbal utterance. In some implementations, the system can generate a text representation of a verbal utterance by process 412 of FIG. 7 described herein. For example, the system can generate a text representation of a verbal utterance based on a candidate text representation generated using a mobile phone 104, a first additional candidate text representation generated using an automated assistant 108 with a display, a second additional candidate text representation generated using a smart camera 112, and / or a third additional candidate text representation generated using a laptop computer 114.
[0031] 2 shows an example 200 of generating candidate text representations of a spoken utterance according to various implementations. The illustrated example 200 includes a client device 202, a first additional client device 204, and a second additional client device 206 in an environment including a user. For example, the client device can be a mobile phone of the user, the first additional client device can be an automated assistant having a display, and the second additional client device can be a smart camera. In some implementations, the client device 202, the first additional client device 204, and / or the second additional client device 206 can each run an instance of an automated assistant client.
[0032] At point 208, the client device 202 may capture audio data capturing the spoken utterance. For example, the client device 202 may capture the spoken utterance "set the temperature to 72 degrees." In some implementations, at point 210, a first additional client device 204 may capture a first additional instance of audio data capturing the spoken utterance. For example, the first additional client device may capture the first additional instance of the spoken utterance "set the temperature to 72 degrees." Additionally or alternatively, at point 212, a second additional client device 206 may capture a second additional instance of audio data capturing the spoken utterance. For example, the second additional client device may capture the second additional instance of the spoken utterance "set the temperature to 72 degrees."
[0033] In some implementations, different quality audio data is captured at the client device, the first additional client device, and / or the second additional client device. For example, one of the client devices may have a better quality microphone(s), thus enabling the corresponding client device to capture a higher quality audio data stream. Additionally or alternatively, background noise (e.g., additional users talking, a dog barking, noise generated by an electronic device, a baby crying, audio from a television, additional or alternative sources of noise, and / or combinations thereof) may be captured in one or more of the audio data streams. In some implementations, more background noise may be captured at one client device than at another client device. For example, a dog may be closer to the first additional client device than to the second additional client device, and a first additional instance of audio data capturing verbal speech may capture more of the dog barking than a second additional instance of audio data capturing verbal speech. In some implementations, one or more of the client devices may not have the user interface input capabilities necessary to capture audio data (e.g., the client device does not have a microphone), and therefore the client device(s) may not capture corresponding audio data at points 208, 210, and / or 212.
[0034] In some implementations, at point 214, the client device 202 may transmit audio data capturing the verbal speech (i.e., the audio data captured using the client device 202 at point 208) to the first additional client device 204 and / or the second additional client device 206. In some other implementations, the client device 202 may transmit the audio data to the first additional client device 204 and / or the second additional client device 206 (not shown). For example, the client device 202 may not transmit the audio data capturing the verbal speech based on an indication that the audio data is of poor quality.
[0035] At point 216, the first additional client device 204 may determine whether to process the audio data captured at the client device 202 and / or the first additional instance of the audio data captured at point 212. In some implementations, the first additional client device 204 may determine whether to process the audio data and / or the first additional instance of the audio data per process 408 of FIG. 6 described herein. Similarly, at point 218, the second additional client device 206 may determine whether to process the audio data captured at the client device 202 and / or the second additional instance of the audio data captured at point 212. In some implementations, the second additional client device 206 may determine whether to process the audio data and / or the second additional instance of the audio data per process 408 of FIG. 6 described herein.
[0036] At point 220, the client device 202 may generate a candidate text representation of the verbal utterance. In some implementations, the client device 202 may generate the candidate text representation of the verbal utterance by processing the captured audio data capturing the verbal utterance using an ASR model stored locally at the client device 202. In some implementations, the first additional client device 204 may generate a first additional candidate text representation of the verbal utterance at point 222. In some implementations, the first additional candidate text representation of the verbal utterance may be generated by processing the audio data and / or the first additional instance of the audio data using an ASR model stored locally at the first additional client device. In some implementations, the first additional candidate text representation of the verbal utterance may be generated by process 408 of FIG. 6 described herein. Similarly, at point 224, a second additional candidate text representation of the verbal utterance may be generated using the second additional client device 206. In some implementations, a second additional candidate text representation of the spoken utterance can be generated by processing the audio data and / or the second additional instance of the audio data using the ASR model stored locally at the second additional client device.
[0037] At point 226, the first additional client device 204 may send the first additional candidate text representation of the spoken utterance to the client device 202. Similarly, at point 228, the second additional client device 206 may send the second additional candidate text representation of the spoken utterance to the client device 202.
[0038] At point 230, the client device 202 may generate a text representation of the verbal utterance. In some implementations, the client device 202 may generate the text representation of the verbal utterance based on the candidate text representation of the verbal utterance, the first additional candidate text representation of the verbal utterance, and / or the second additional candidate text representation of the verbal utterance. In some implementations, the client device 202 may generate the text representation of the verbal utterance by process 412 of FIG. 7 described herein.
[0039] 3 illustrates a block diagram of an example environment 300 in which implementations disclosed herein may be implemented. The example environment 300 includes a client device 302 and an additional client device 314. The client device 302 can include a user interface input / output device(s) 304, a candidate text representation engine 306, a text representation engine 308, an additional device engine 310, an additional or alternative engine(s) (not shown), an ASR model 312, and / or an additional or alternative model(s) (not shown). The additional client device 314 can include an additional user interface input / output device(s) 316, an audio source engine 318, an additional candidate text representation engine 320, an additional or alternative engine(s) (not shown), an additional ASR model 322, and / or an additional or alternative model(s) (not shown).
[0040] In some implementations, the client device 302 and / or the additional client device 314 may include user interface input / output devices, which may include, for example, a physical keyboard, a touch screen (e.g., implementing a virtual keyboard or other text input mechanism), a microphone, a camera, a display screen, and / or a speaker(s). For example, a user's mobile phone may include a user interface input / output device, a standalone digital assistant hardware device may include a user interface input / output device, a first computing device may include a user interface input device(s), a separate computing device may include a user interface output device(s), etc. In some implementations, all or aspects of the client device 302 and / or the additional client device 314 may be implemented on a computing system that also includes a user interface input / output device.
[0041] Some non-limiting examples of the client device 302 and / or the additional client device 314 include one or more of a desktop computing device, a laptop computing device, a standalone hardware device at least partially dedicated to an automated assistant, a tablet computing device, a mobile phone computing device, a vehicle computing device (e.g., an in-vehicle communication system, and an in-vehicle entertainment system, an in-vehicle navigation system, or an in-vehicle navigation system), or a user wearable device including a computing device (e.g., a user's watch having a computing device, a user's glasses having a computing device, a virtual reality computing device or an augmented reality computing device). Additional and / or alternative computing systems may be provided. The client device 302 and / or the additional client device 314 may include one or more memories for storing data and software applications, one or more processors for accessing data and executing applications, and other components for facilitating communication over a network. Operations performed by the client device 302 and / or the additional client device 314 may be distributed across multiple computing devices. For example, computing programs running on one or more computers at one or more locations may be coupled together over a network.
[0042] In some implementations, the client device 302 may include the user interface input / output device(s) 304, and the additional client device 314 may include the additional user interface input / output device(s) 316, which may include, for example, a physical keyboard, a touch screen (e.g., implementing a virtual keyboard or other text input mechanism), a microphone, a camera, a display screen, and / or a speaker(s). In some implementations, the client device 302 and / or the additional client device 314 may include an automated assistant (not shown), all or aspects of the automated assistant may be implemented on a computing device(s) that is separate and remote from the client device that contains the user interface input / output devices (e.g., all or aspects may be implemented "in the cloud"). In some of those implementations, those aspects of the automated assistant may communicate with the computing device over one or more networks, such as a local area network (LAN) and / or a wide area network (WAN) (e.g., the Internet).
[0043] In some implementations, the user interface input / output device(s) 304 may capture audio data capturing a verbal utterance spoken by a user. For example, one or more microphones of the client device 304 may capture audio data capturing the verbal utterance, "Hey Assistant, set an alarm for 8am." In some implementations, the candidate text representation engine 306 may process the audio data capturing the verbal utterance using the ASR model 312 to generate a candidate text representation of the verbal utterance.
[0044] Additionally or alternatively, the additional device engine 310 may be used to select a subset of one or more additional client devices in the environment 300, may be used to determine whether to transmit audio data captured at the client device 302 to the one or more selected additional client devices, and / or may be used to transmit audio data capturing oral speech to the one or more selected additional client devices. In some implementations, the additional device engine 310 may select a subset of one or more additional client devices via the process 404 of FIG. 5 described herein. For example, the additional device engine 310 may be used to select the additional client device 314. Additionally or alternatively, the additional device engine 310 may determine whether to transmit audio data captured at the client device 302 to the one or more selected additional client devices.
[0045] In some implementations, the text representation engine 308 may be used to generate a text representation of the verbal utterance based on the candidate text representation of the verbal utterance generated using the client device 302 and / or one or more additional candidate text representations of the verbal utterance generated using one or more corresponding additional client devices. For example, the text representation engine 308 may generate a text representation of the verbal utterance based on the candidate text representation of the verbal utterance generated using the client device 302 and / or the additional candidate text representation of the verbal utterance generated using the additional client device 314. In some implementations, the text representation engine 308 may generate a text representation of the verbal utterance according to the process 412 of FIG. 7 described herein.
[0046] In some implementations, the additional client device 314 may use the additional user interface input / output device(s) 316 to capture additional instances of audio data capturing the spoken utterance. For example, the additional client device 314 may use one or more additional microphones of the additional client device to capture an additional instance of the spoken utterance "Hey Assistant, set an alarm for 8am." In some implementations, the additional client device 314 may use the audio source engine 318 to determine whether to process the audio data capturing the spoken utterance generated using the client device 302 and / or the additional audio data capturing the spoken utterance generated using the additional client device 314 to generate additional candidate text representations of the spoken utterance. In some implementations, the additional client device 314 may use the additional candidate text representation engine 320 to generate additional candidate text representations of the spoken utterance by processing the selected audio data using the audio source engine 318 using the additional ASR model 322. In some implementations, the additional candidate text representation engine 320 can generate additional candidate text representations of the spoken utterance via the process 408 of FIG. 6 described herein.
[0047] 4 is a flowchart illustrating an example process 400 for generating candidate text representations of a spoken utterance, according to various implementations disclosed herein. For convenience, the operations of the flowchart 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 client device 302, additional client device 314, client device 802, and / or computing system 810. Furthermore, although the operations of process 400 are shown in a particular order, this is not intended to be limiting. One or more operations may be reordered, omitted, and / or added.
[0048] In block 402, the system captures audio data of an oral utterance at a client device, the client device being in an environment including one or more additional client devices. In some implementations, the client device and / or the additional client device may run corresponding instances of an automated assistant client. In some implementations, a user may be in a room with several client devices, such as a mobile phone, a laptop computer, a standalone automated assistant, and so on. In some implementations, when more than one client device can capture an oral utterance spoken by a user, conventional device arbitration techniques may be used to determine a given client device used to process the oral utterance. For example, audio data capturing the oral utterance may be captured at a given client device of a standalone interactive speaker, the standalone interactive speaker being in an environment including a first additional client device of a mobile phone, and a second additional client device of a smart camera.
[0049] In block 404, the system selects a subset of one or more additional client devices. In some implementations, the system may select a subset of one or more additional client devices via process 404 shown in Figure 5. For example, the system may select a first additional client device that is a mobile phone, a second additional client device that is a smart camera, or a first additional client device that is a mobile phone and a second additional client device that is a smart camera.
[0050] At block 406, the system generates a candidate text representation of the spoken utterance by processing the captured audio data using the local ASR model. In some implementations, the candidate text representation of the spoken utterance can be the highest ranked hypothesis generated using the ASR model. Additionally or alternatively, the candidate text representation of the spoken utterance can include multiple hypotheses generated using the ASR model.
[0051] At block 408, the system (optionally) generates one or more additional candidate text representations of the spoken utterance at one or more additional client devices. In some implementations, the system may generate one or more additional candidate text representations at the one or more additional client devices per process 408 shown in Figure 6. For example, the system may generate a first additional candidate text representation of the spoken utterance using a first additional ASR model stored locally at a first additional client device, and / or the system may generate a second additional candidate text representation of the spoken utterance using a second additional ASR model stored locally at a second additional client device.
[0052] At block 410, the system receives one or more additional candidate text representations of the spoken utterance from a selected subset of the one or more additional client devices. For example, if the system selected a first additional client device and a second additional client device at block 404, the system may receive a first additional candidate text representation generated at the first additional client device (e.g., generated by process 408 of FIG. 6 ) and a second additional candidate text representation generated at the second additional client device (e.g., generated by process 408 of FIG. 6 ).
[0053] At block 412, the system generates a text representation of the verbal utterance based on the candidate text representation of the verbal utterance and one or more additional candidate text representations of the verbal utterance. In some implementations, the system can generate a text representation of the verbal utterance based on the candidate text representation and the one or more additional candidate text representations, per process 412 of FIG.
[0054] 5 is a flowchart illustrating an example process 404 for selecting a subset of one or more additional client devices, according to various implementations disclosed herein. For convenience, the operations of the flowchart 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 client device 302, additional client device 314, client device 802, and / or computing system 810. Furthermore, although the operations of process 404 are shown in a particular order, this is not intended to be limiting. One or more operations may be reordered, omitted, and / or added.
[0055] At block 502, the system selects an additional client device of the one or more additional client devices, the one or more additional client devices being in an environment including the given client device. For example, the given client device may be in an environment including a first additional client device, a second additional client device, and a third additional client device.
[0056] At block 504, the system determines whether to select an additional client device based on one or more client device parameters. In some implementations, the one or more client device parameters may include a client device power source, client device hardware (e.g., whether the client device has a microphone(s), a processor, available memory, etc.), client device software (e.g., ASR model version, ASR model size, ASR model capacity, one or more additional or alternative model versions, etc.), one or more additional or alternative device parameters, and / or combinations thereof. For example, in some implementations, the system may include each of the one or more additional client devices in the subset.
[0057] In some implementations, the system may select each of the one or more additional client devices that are powered by being plugged into a power outlet (e.g., each client device that operates on alternating current). In other words, the system may select the additional client device(s) if the power cost is negligible. In some implementations, the system may select the additional client device(s) if the battery power of the client device meets one or more conditions. For example, the system may select the additional client device if the remaining battery power exceeds a threshold (e.g., the battery has more than 25% power remaining), if the battery capacity exceeds a threshold (e.g., the battery capacity is greater than 1000 mAh), if the battery is currently charging, if additional condition(s) or alternative condition(s) are met, and / or combinations thereof. In some implementations, the system may select the additional client device based on the hardware of the additional client device. For example, the system may process the hardware of each of the one or more additional client devices using a machine learning model to select a subset of the one or more client devices.
[0058] In some implementations, the system may select the additional client device based on whether the additional client device was previously selected in a prior iteration of the process. For example, the system may select the first additional client device and not select the second additional client device if the system determines that a first additional client device was selected and a second additional client device was not selected when processing a prior verbal utterance.
[0059] The system may determine a confidence value indicating the confidence of a candidate text representation generated using the ASR model at the client device. In some implementations, the system may determine whether the confidence value satisfies one or more conditions, such as whether the confidence value satisfies a threshold. The system may select one or more additional client devices if the confidence value indicates low confidence in the candidate text representation. For example, the system may select one or more additional client devices if the confidence value is below a threshold.
[0060] At block 506, the system determines whether to select further additional client devices. In some implementations, the system may determine whether to select further additional client devices based on whether unused further client devices remain, whether a threshold number of further client devices have been selected, whether one or more further or alternative conditions are met, and / or a combination thereof. If so, the system returns to block 502 to select further additional client devices and proceeds to block 504 based on the further additional client devices. If not, the process ends.
[0061] 6 is a flowchart illustrating an example process 408 for generating additional candidate textual representations of a spoken utterance according to various implementations disclosed herein. For convenience, the operations of the flowchart are described with reference to a system that performs the operations. The system may include various components of various computer systems, such as the client device 302, the additional client device 314, the client device 802, and / or one or more components of the computing system 810. Furthermore, although the operations of the process 408 are shown in a particular order, this is not intended to be limiting. One or more operations may be reordered, omitted, and / or added.
[0062] At block 602, the system captures additional instances of audio data capturing the spoken utterance at the additional client device. For example, the additional client device may capture the spoken utterance "Hey Assistant, what is the temperature on Tuesday."
[0063] At block 604, the system receives, at an additional client device, an instance of audio data capturing the spoken utterance captured at the given client device, the given client device being in an environment that includes the additional client device. For example, the additional client device may receive audio data capturing the spoken utterance "Hey Assistant, what is the temperature on Tuesday" captured at the given client device.
[0064] At block 606, the system compares the additional instance of audio data to the received instance of audio data.
[0065] At block 608, the system determines whether to process the additional instance of audio data and / or the received instance of audio data based on the comparison. In some implementations, the system may randomly (or pseudo-randomly) select the instance of audio data or the additional instance of audio data for processing. In some implementations, the system may select both the instance of audio data and the additional instance of audio data. In some implementations, the system may select the audio data for processing based on the quality of the audio data. For example, the system may select the additional instance of audio data or the instance of audio data based on the microphone of the additional client device and / or the microphone of the given client device. For example, the system may select the additional instance of audio data if the microphone of the additional client device captures better quality audio data compared to the microphone of the given client device.
[0066] Additionally or alternatively, the system may determine a signal-to-noise ratio for the instance of audio data and an additional signal-to-noise ratio for the additional instance of audio data. The system may select the instance of audio data having a signal-to-noise ratio indicative of a better quality audio data stream. Additional or alternative perceptual quality metrics may be utilized in determining the better quality audio data stream. For example, a machine learning model trained to predict quality levels of audio data streams may be utilized in selecting the audio data stream.
[0067] At block 610, the system processes the determined audio data using the additional ASR models stored locally on the additional client devices to generate additional candidate text representations of the spoken utterance. For example, if additional instances of audio data are selected for processing, the system may generate additional candidate text representations of the spoken utterance by processing the additional instances of audio data using the additional ASR models stored locally on the additional client devices. As a further illustration, if an instance of audio data is selected for processing, the system may generate additional candidate text representations of the spoken utterance by processing the instance of audio data using the additional ASR models stored locally on the additional client devices.
[0068] At block 612, the system sends additional candidate text representations of the spoken utterance to the given client device.
[0069] 7 is a flowchart illustrating an example process 412 for generating a textual representation of a spoken utterance according to various implementations disclosed herein. For convenience, the operations of the flowchart are described with reference to a system that performs the operations. The system may include various components of various computer systems, such as the client device 302, the additional client device 314, the client device 802, and / or one or more components of the computing system 810. Furthermore, although the operations of the process 412 are shown in a particular order, this is not intended to be limiting. One or more operations may be reordered, omitted, and / or added.
[0070] At block 702, the system captures audio data of a spoken utterance at a client device, the client device being in an environment that includes one or more additional client devices. For example, a standalone interactive speaker may capture audio data capturing the spoken utterance "Hey Assistant, turn off the living room lights," the standalone interactive speaker being in an environment that includes a mobile phone and a smart TV.
[0071] At block 704, the system generates candidate text representations of the spoken utterance by processing the audio data at the client device using the local ASR model. For example, the system may process audio data capturing the spoken utterance "Hey Assistant, turn off the living room lights" using the local ASR model for a standalone interactive speaker to generate candidate text representations of the spoken utterance. In some implementations, the system may generate candidate text representations of the spoken utterance using the local ASR model. Additionally or alternatively, the system may use the local ASR model to generate multiple hypotheses of text representations of the spoken utterance.
[0072] At block 706, the system receives one or more candidate text representations of the spoken utterance from one or more additional client devices. For example, the system may receive a first additional candidate text representation of the spoken utterance "Hey Assistant, turn off the living room lights" from a mobile phone and a second additional candidate text representation of the spoken utterance "Hey Assistant, turn off the living room lights" from a smart TV. In some implementations, the one or more additional candidate text representations may be generated using one or more additional client devices by process 408 of FIG. 6 described herein. In some implementations, the system may receive the additional candidate text representation of the spoken utterance from each of the one or more additional client devices using a corresponding local ASR model that is local to the additional client device. In some other implementations, the system may receive multiple candidate text representations of the spoken utterance from each of the one or more additional client devices generated using a corresponding local ASR model that is local to the additional client device.
[0073] At block 708, the system compares the candidate text representation of the spoken utterance to one or more additional candidate text representations of the spoken utterance.
[0074] At block 710, the system generates a text representation of the verbal utterance based on the comparison. In some implementations, the system may randomly (or pseudo-randomly) select one of the candidate text representations of the verbal utterance as the text representation of the verbal utterance. For example, the system may randomly (or pseudo-randomly) select the candidate text representation of the verbal utterance generated using a first additional client device as the text representation of the verbal utterance. Additionally or alternatively, the system may randomly (or pseudo-randomly) select the candidate text representation of the verbal utterance generated using a given client device as the text representation of the verbal utterance.
[0075] In some implementations, the system can rank the candidate text representations of the spoken utterance, and the candidate text representation of the spoken utterance with the most "votes" can be selected as the text representation of the spoken utterance. For example, the system can compare a candidate text representation of the spoken utterance "Hey Assistant, turn off the living room lights" generated using a given client device with a first additional candidate text representation of the spoken utterance "Hey Assistant, turn on the living room lights" generated using a first additional client device with a second additional candidate text representation of the spoken utterance "Hey Assistant, turn off the living room lights" generated using a second additional client device. In other words, two of the client devices (e.g., the given client device and the second additional client device) generated a candidate text representation of the spoken utterance "Hey Assistant, turn off the living room lights", while only one of the client devices (e.g., the first additional client device) generated a candidate text representation of the spoken utterance "Hey assistant, turn on the living room lights". In some implementations, the candidate text representations of the spoken utterance may be weighted uniformly. For example, the system may select "Hey Assistant, turn off the living room lights" as the text representation of the spoken utterance based on two of three client devices generating "Hey Assistant, turn off the living room lights" as a candidate text representation of the spoken utterance.
[0076] In some other implementations, the candidate text representations of the verbal utterance may be weighted based on the client device used in generating the verbal utterance. For example, the candidate text representations of the verbal utterance may be weighted based on the version of the ASR model used in generating the candidate text representation (e.g., the system may weight the candidate text representation of the verbal utterance more if it was generated using a higher quality ASR model), based on the hardware of the corresponding client device (e.g., the system may weight the candidate text representation of the verbal utterance more if the corresponding client device captures a higher quality audio data stream), based on one or more additional or alternative criteria, and / or combinations thereof. For example, a mobile phone may have better hardware, such as a better microphone that captures higher quality audio data, and may have a higher quality version of the ASR model. In some implementations, the system may weight the first additional candidate text representation of the spoken utterance generated using a mobile phone (having a higher quality microphone and a higher quality ASR model) more heavily than other candidate text representations of the spoken utterance. In some implementations, the system may select a candidate text representation of "Hey Assistant, turn on the living room lights" generated using a mobile phone as the text representation of the spoken utterance even though the other two candidate representations of the spoken utterance indicate turning off the living room lights.
[0077] In some implementations, the system can selectively combine multiple portions of candidate text representations of a spoken utterance. In some implementations, the system can use one or more candidate text representations generated using a given client device and one or more candidate text representations generated using one or more additional client devices to collaboratively generate a top-N list of hypotheses. For example, the system can merge lists of hypotheses from various devices.
[0078] In some implementations, the system can determine a confidence score indicative of the probability that the candidate text representation captures the verbal utterance. For example, the system can generate a confidence score indicative of the probability of the candidate text representation of the verbal utterance, a first additional confidence score indicative of the probability that the first additional candidate text representation captures the verbal utterance, and a second additional candidate text representation indicative of the probability that the second additional candidate text representation captures the verbal utterance. In some implementations, the system can determine the text representation of the verbal utterance based on the candidate text representation of the verbal utterance with the highest confidence score.
[0079] Additionally or alternatively, the system may generate a confidence score based on one or more portions of a candidate text representation of a spoken utterance. In some implementations, the system may generate a hotword confidence score based on a probability that the spoken utterance captures a hotword. For example, the system may generate a hotword confidence score that indicates a probability that a candidate text representation of a spoken utterance contains the hotword "Hey Assistant."
[0080] In some implementations, the system is capable of generating a plurality of candidate text representations using a given client device, generating a plurality of first additional candidate text representations of the verbal utterance using a first additional client device, and / or generating a plurality of second additional candidate text representations of the verbal utterance using a second additional client device. In some implementations, the system is capable of determining a text representation of the verbal utterance based on the plurality of candidate text representations of the verbal utterance, the plurality of first additional candidate text representations of the verbal utterance, and / or the plurality of second additional candidate text representations of the verbal utterance according to techniques described herein.
[0081] In some implementations, the system can bias one or more of the multiple candidate text representations of the verbal utterance. For example, a mobile phone can have a better ASR model, but a list of contacts for biasing can be accessible via (or only accessible via) a standalone interactive speaker. In some implementations, the multiple first additional candidate text representations generated using the mobile phone (i.e., the device with the "better" ASR model) can be biased using a list of contacts stored in the standalone interactive speaker. In some of those implementations, the system can determine the text representation of the verbal utterance based on the biasing.
[0082] Referring now to Figure 8, an example environment in which various implementations may be implemented is shown. Figure 8 is first described and includes a client computing device 802 running an instance of an automated assistant client 804. One or more cloud-based automated assistant components 810 can be implemented on one or more computing systems (collectively referred to as "cloud" computing systems) communicatively coupled to the client device 802 via one or more local area networks and / or wide area networks (e.g., the Internet), shown generally at 808.
[0083] An instance of the automated assistant client 804, in interaction with one or more cloud-based automated assistant components 810, may form what appears from the user's perspective as a logical instance of the automated assistant 800 with which the user can have a human-computer interaction. Such an instance of the automated assistant 800 is illustrated in FIG. 8. It should be understood, therefore, that in some implementations, a user who associates with an automated assistant client 804 running on a client device 802 may actually associate with the user's own logical instance of the automated assistant 800. For simplicity, the term "automated assistant" used herein as "in use" by a particular user often refers to the combination of an automated assistant client 804 running on a client device 802 operated by the user and one or more cloud-based automated assistant components 810 (which may be shared among multiple automated assistant clients of multiple client computing devices). It should also be understood that in some implementations, the automated assistant 800 may respond to requests from any user, regardless of whether that particular instance of the automated assistant 800 is actually "in use" by the user.
[0084] The client computing device 802 may be, for example, a desktop computing device, a laptop computing device, a tablet computing device, a mobile phone computing device, a computing device in the user's vehicle (e.g., an in-vehicle communication system, an in-vehicle entertainment system, an in-vehicle navigation system), a standalone interactive speaker, a smart appliance such as a smart television, and / or a user's wearable device including a computing device (e.g., a user's watch with a computing device, a user's glasses with a computing device, a virtual reality computing device or an augmented reality computing device). Additional and / or alternative client computing devices may be included. In various implementations, the client computing device 802 may optionally run one or more other applications in addition to the automated assistant client 804, such as a messaging client (e.g., SMS, MMS, online chat), a browser, etc. In some of these various implementations, one or more of the other applications can optionally interface with the automated assistant 800 (e.g., via an application programming interface) or include their own instance of an automated assistant application (which can also interface with cloud-based automated assistant component(s) 810).
[0085] The automated assistant 800 conducts a human-computer interactive session with the user via the user interface input and output devices of the client device 802. To protect user privacy and / or conserve resources, in many situations, the user must explicitly invoke the automated assistant 800, often before the automated assistant can fully process the verbal utterance. Explicit invocation of the automated assistant 800 can occur in response to some user interface input received at the client device 802. For example, the user interface input that can invoke the automated assistant 800 via the client device 802 can optionally include activation of a hardware and / or virtual button of the client device 802. Additionally, the automated assistant client can include one or more local engines 806, such as an invocation engine, operable to detect the presence of one or more verbal invocation phrases. The invocation engine can invoke the automated assistant 800 in response to detecting one of the verbal invocation phrases. For example, the invocation engine may invoke the automated assistant 800 in response to detecting a spoken invocation phrase, such as "Hey Assistant," "OK Assistant," and / or "Assistant." The invocation engine may continuously process a stream of audio data frames based on the output from one or more microphones of the client device 802 (e.g., when not in an "inactive" mode) to monitor for the occurrence of a spoken invocation phrase. While monitoring for the occurrence of a spoken invocation phrase, the invocation engine discards audio data frames that do not include the spoken invocation phrase (e.g., after temporarily storing them in a buffer). However, if the invocation engine detects the occurrence of a spoken invocation phrase in a processed audio data frame, the invocation engine may invoke the automated assistant 800.As used herein, "invoking" the automated assistant 800 may include causing one or more previously inactive features of the automated assistant 800 to be activated. For example, invoking the automated assistant 800 may include causing one or more local engines 806 and / or cloud-based automated assistant component 810 to further process the audio data frame based on which the invocation phrase was detected and / or one or more subsequent audio data frames (whereas prior to the invocation, no additional processing of the audio data frames had occurred).
[0086] The one or more local engines 806 of the automated assistant 800 are optional and can include, for example, the aforementioned invocation engine, a local voice-to-text ("STT") engine (which converts captured audio to text), a local text-to-speech ("TTS") engine (which converts text to speech), a local natural language processor (which determines the semantic meaning of the audio and / or the converted text from the audio), and / or other local components. Because the client device 802 is relatively constrained in terms of computational resources (e.g., processor cycles, memory, battery, etc.), the local engines 806 may have limited capabilities compared to their counterparts included in the cloud-based automated assistant component 810.
[0087] The cloud-based automated assistant component 810 leverages the virtually infinite resources of the cloud to perform more robust and / or more accurate processing of audio data and / or other user interface inputs than does the local engine(s) 806. Again, in various implementations, the client device 802 can provide audio data and / or other data to the cloud-based automated assistant component 810 in response to the invocation engine detecting a spoken invocation phrase or some other explicit invocation of the automated assistant 800.
[0088] The illustrated cloud-based automated assistant components 810 include a cloud-based TTS module 812, a cloud-based STT module 814, a natural language processor 816, a dialogue state tracker 818, and a dialogue manager 820. In some implementations, one or more of the engines and / or modules of the automated assistant 800 can be omitted, combined, and / or implemented in a component separate from the automated assistant 800. Furthermore, in some implementations, the automated assistant 800 can include additional and / or alternative engines and / or modules. The cloud-based STT module 814 can convert the audio data to text, which can then be provided to the natural language processor 816.
[0089] The cloud-based TTS module 812 can convert text data (e.g., natural language responses created by the automated assistant 800) into computer-generated speech output. In some implementations, the TTS module 812 may provide the computer-generated speech output to the client device 802 for direct output, for example, using one or more speakers. In other implementations, the text data (e.g., natural language responses) generated by the automated assistant 800 may be provided to one of the local engine(s) 806, which may then convert the text data into computer-generated speech that is output locally.
[0090] A natural language processor 816 of the automated assistant 800 processes the free-form natural language input and generates annotated output based on the natural language input for use by one or more other components of the automated assistant 800. For example, the natural language processor 816 can process the natural language free-form input, which is a text input that is a conversion by the STT module 814 of audio data provided by a user via the client device 802. The generated annotated output may include one or more annotations of the natural language input and may optionally include one or more (e.g., all) of the terms of the natural language input.
[0091] In some implementations, the natural language processor 816 is configured to identify and annotate various types of grammatical information in the natural language input. In some implementations, the natural language processor 816 may additionally and / or alternatively include an entity tagger (not shown) configured to annotate entity references in one or more segments, such as references to people (including, e.g., literary characters, celebrities, notable people, etc.), organizations, places (real and imaginary), etc. In some implementations, the natural language processor 816 may additionally and / or alternatively include a core reference resolver (not shown) configured to group or "cluster" references to the same entity based on one or more contextual cues. For example, the core reference resolver can be utilized to resolve the term "there" to "Hypothetical Cafe" in the natural language input "I liked Hypothetical Cafe last time we ate there." In some implementations, one or more components of the natural language processor 816 may rely on annotations from one or more other components of the natural language processor 816. In some implementations, when processing a particular natural language input, one or more components of the natural language processor 816 may use relevant previous input and / or relevant other data external to the particular natural language input to determine one or more annotations.
[0092] In some implementations, a dialogue state tracker 818 may be configured to keep track of the "dialogue state," including, for example, the belief states of one or more users' goals (or "intent") over the course of a human-computer dialogue session and / or across multiple dialogue sessions. In determining the dialogue state, some dialogue state trackers may seek to determine the most likely value(s) for the slot(s) instantiated in the dialogue based on the user and system utterances in the dialogue session. Some techniques utilize a fixed ontology that defines a set of slots and a set of values associated with those slots. Some techniques may additionally or alternatively be tailored to individual slots and / or individual domains. For example, some techniques may require training a model for each slot type in each domain.
[0093] The dialogue manager 820 may be configured to map, for example, the current dialogue state provided by the dialogue state tracker 818 to one or more "response actions" of a plurality of candidate response actions, which are then executed by the automated assistant 800. The response actions may be in a variety of forms depending on the current dialogue state. For example, initial and intermediate dialogue states corresponding to a previous iteration of a dialogue session (e.g., when a task desired by the ultimate user was performed) may be mapped to a variety of response actions, including the automated assistant 800 outputting additional natural language dialogue. This response dialogue may include, for example, a request for the user to provide parameters (i.e., fill in slots) for some action that the dialogue state tracker 818 believes the user intends to execute. In some implementations, response actions may include actions such as "request" (e.g., asking for parameters to fill a slot), "offer" (e.g., suggesting an action or course of action for the user), "select", "inform" (e.g., providing the user with the requested information), "no match" (e.g., informing the user that their previous input was not understood), commands to peripheral devices (e.g., turning off a light bulb), and others.
[0094] 9 is a block diagram of an example computing device 910 that may optionally be utilized to perform one or more aspects of the techniques described herein. In some implementations, one or more of the client computing devices and / or other component(s) may comprise one or more components of the example computing device 910.
[0095] The computing device 910 typically includes at least one processor 914 that communicates with a number of peripheral devices via a bus subsystem 912. These peripheral devices may include, for example, a storage subsystem 924, including a memory subsystem 925 and a file storage subsystem 926, user interface output devices 920, user interface input devices 922, and a network interface subsystem 916. The input and output devices enable user interaction with the computing device 910. The network interface subsystem 916 provides an interface to external networks and is coupled to corresponding interface devices in other computing devices.
[0096] The user interface input devices 922 may include a keyboard, a pointing device such as a mouse, a trackball, a touchpad, or 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 910 or over a communications network.
[0097] The user interface output devices 920 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 some other mechanism for generating a visual 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 910 to a user or to another machine or another computing device.
[0098] Storage subsystem 924 stores programming and data structures that provide the functionality of some or all of the modules described herein. For example, storage subsystem 924 may include logic to perform selected aspects of one or more of the processes of Figures 4, 5, 6, and / or 7, as well as implement various components shown in Figures 3 and / or 8.
[0099] These software modules are generally executed by the processor 914 alone or in combination with other processors. The memory 925 used in the storage subsystem 924 may include several memories including a main random access memory ("RAM") 930 for storing instructions and data during program execution, and a read only memory ("ROM") 932 in which fixed instructions are stored. A file storage subsystem 626 may provide permanent storage for program and data files and may 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 implementing the functionality of some implementations may be stored by the file storage subsystem 926 in the storage subsystem 924 or on other machines accessible by the processor(s) 914.
[0100] Bus subsystem 912 provides a mechanism for allowing the various components and subsystems of computing device 910 to communicate with each other as intended. Although bus subsystem 912 is illustrated generally as a single bus, alternative implementations of the bus subsystem may use multiple buses.
[0101] The computing device 910 can be of various types, including a workstation, a server, a computing cluster, a blade server, a server farm, or any other data processing system or data processing computing device. Due to the ever-changing nature of computers and networks, the description of the computing device 910 shown in Figure 9 is intended only as a specific example for purposes of illustrating some implementations. Many other configurations of the computing device 910 having more or fewer components than the computing device shown in Figure 9 are possible.
[0102] In situations where the systems described herein may collect or use personal information about users (or, as is often referred to herein as "participants"), the user may be given the opportunity to control whether a program or feature collects user information (e.g., information about the user's social network, social behavior or activities, occupation, user preferences, or the user's current geographic location) or whether and / or how the user receives content from a content server that may be more relevant to the user. Also, some data may be processed in one or more ways before it is stored or used such that personally identifiable information is removed. For example, the user's identity may be processed such that personally identifiable information cannot be determined about the user, or the user's geographic location may be generalized (such as to the city, zip code, or state level) where the geographic location information is obtained such that the user's specific geographic location cannot be determined. Thus, the user may control how information is collected about the user and / or how it is used.
[0103] In some implementations, a method implemented by one or more processors is provided, the method including detecting, at a client device, audio data capturing a verbal utterance of a user, the client device being in an environment including one or more additional client devices and in local communication with the one or more additional client devices over a local network, the one or more additional client devices including at least a first additional client device, the method further including, at the client device, processing the audio data using an automatic speech recognition ("ASR") model stored locally at the client device to generate candidate text representations of the verbal utterance. The method further includes receiving, at the client device, a first additional candidate text representation of the verbal utterance over the local network from the first additional client device, where the first additional candidate text representation of the verbal utterance generated locally at the first additional client device is based on (a) the audio data and / or (b) locally detected audio data capturing the verbal utterance detected at the first additional client device, where the first additional candidate text representation of the verbal utterance is generated by processing the locally generated audio data with the audio data and / or the first additional ASR model stored locally at the first additional client device. The method further includes determining a text representation of the verbal utterance based on the candidate text representation of the verbal utterance and the first additional candidate text representation of the verbal utterance generated by the first additional client device.
[0104] These and other implementations of the technology may include one or more of the following features.
[0105] In some implementations, the one or more additional client devices include at least a first additional client device and a second additional client device. In some implementations, receiving at the client device over the local network from the first additional client device further includes receiving at the client device over the local network from the second additional client device a second additional candidate text representation of the verbal utterance generated locally at the second additional client device based on (a) audio data and / or (b) additional locally detected audio data capturing the verbal utterance detected at the second additional client device, where the second additional candidate text representation of the verbal utterance is generated by processing the audio data and / or the locally generated additional audio data using the second additional ASR model stored locally at the second additional client device. In some implementations, determining a text representation of the verbal utterance based on the candidate text representation of the verbal utterance and the first additional candidate text representation of the verbal utterance generated by the first additional client device further includes determining a text representation of the verbal utterance based on the candidate text representation of the verbal utterance, the first additional candidate text representation of the verbal utterance generated by the first additional client device, and a second additional candidate text representation of the verbal utterance generated by the second additional client device.
[0106] In some implementations, determining the text representation of the verbal utterance based on the candidate text representation of the verbal utterance and the first additional candidate text representation of the verbal utterance generated by the first additional client device includes randomly selecting the candidate text representation of the verbal utterance or the first additional candidate text representation of the verbal utterance. In some implementations, the method further includes determining the text representation of the verbal utterance based on the random selection.
[0107] In some implementations, determining a text representation of the verbal utterance based on the candidate text representation of the verbal utterance and the first additional candidate text representation of the verbal utterance generated by the first additional client device includes determining a confidence score for the candidate text representation indicating a probability that the candidate text representation is a text representation, the confidence score being based on one or more device parameters of the client device. In some implementations, the method further includes determining an additional confidence score for the additional candidate text representation indicating an additional probability that the additional candidate text representation is a text representation, the additional confidence score being based on one or more additional device parameters of the additional client device. In some implementations, the method further includes comparing the confidence score to the additional confidence score. In some implementations, the method further includes determining a text representation of the verbal utterance based on the comparison.
[0108] In some implementations, determining the text representation of the verbal utterance based on the candidate text representation of the verbal utterance and the first additional candidate text representation of the verbal utterance generated by the first additional client device includes determining an audio quality value indicative of a quality of audio data capturing the verbal utterance detected at the client device. In some implementations, the method further includes determining an additional audio quality value indicative of a quality of the additional audio data capturing the verbal utterance detected at the first additional client device. In some implementations, the method further includes comparing the audio quality value to the additional audio quality value. In some implementations, the method further includes determining a text representation of the verbal utterance based on the comparison.
[0109] In some implementations, determining a text representation of the verbal utterance based on the candidate text representation of the verbal utterance and the first additional candidate text representation of the verbal utterance generated by the first additional client device includes determining an ASR quality value indicative of a quality of the ASR model stored locally at the client device. In some implementations, the method further includes determining an additional ASR quality value indicative of a quality of the additional ASR model stored locally at the additional client device. In some implementations, the method further includes comparing the ASR quality value to the additional ASR quality value. In some implementations, the method further includes determining a text representation of the verbal utterance based on the comparison.
[0110] In some implementations, the first additional candidate text representation of the verbal utterance includes a plurality of hypotheses, and determining the text representation of the verbal utterance based on the candidate text representation of the verbal utterance and the first additional candidate text representation of the verbal utterance generated by the first additional client device includes re-ranking the plurality of hypotheses using the client device. In some implementations, the method further includes determining the text representation of the verbal utterance based on the candidate text representation of the verbal utterance and the re-ranked plurality of hypotheses.
[0111] In some implementations, prior to receiving, at the client device, the first additional candidate text representation of the verbal utterance over the local network from the first additional client device, further includes determining whether to generate the first additional candidate representation of the verbal utterance locally at the first additional client device based on (a) the audio data and / or (b) the locally detected audio data capturing the verbal utterance detected at the first additional client device, wherein determining whether to generate the first additional candidate representation of the verbal utterance locally at the first additional client device based on (a) the audio data and / or (b) the locally detected audio data capturing the verbal utterance detected at the first additional client device includes determining an audio quality value indicative of a quality of the audio data capturing the verbal utterance detected at the client device. In some implementations, the method further includes determining an additional audio quality value indicative of a quality of the locally detected audio data capturing the verbal speech detected at the first additional client device. In some implementations, the method further includes comparing the audio quality value to the additional audio quality value. In some implementations, the method further includes determining whether to generate a first additional candidate representation of the verbal speech locally at the first additional client device based on the comparison based on (a) the audio data and / or (b) the locally detected audio data capturing the verbal speech detected at the first additional client device. In some versions of those implementations, determining an audio quality value indicative of a quality of the audio data capturing the verbal speech detected at the client device includes identifying one or more microphones of the client device. In some versions of those implementations, the method further includes determining the audio quality value based on the one or more microphones of the client device.In some versions of those implementations, determining an additional audio quality value indicative of a quality of locally detected audio data capturing the oral speech detected at the first additional client device includes identifying one or more first additional microphones of the first additional client device. In some versions of those implementations, the method further includes determining an additional audio quality value based on the one or more first additional microphones of the first additional client device. In some versions of those implementations, determining an audio quality value indicative of a quality of audio data capturing the oral speech detected at the client device includes generating a signal-to-noise ratio value based on processing the audio data capturing the oral speech. In some versions of those implementations, the method further includes determining an audio quality value based on the signal-to-noise ratio value. In some versions of those implementations, determining an additional audio quality value indicative of a quality of locally detected audio data capturing the oral speech detected at the first additional client device includes generating an additional signal-to-noise ratio value based on processing the audio data capturing the oral speech. In some versions of those implementations, the method further includes determining an additional audio quality value based on the additional signal-to-noise ratio value.
[0112] In some implementations, prior to receiving, at the client device, the first additional candidate text representation of the verbal utterance from the first additional client device over the local network, the method further includes determining whether to send a request for the first additional candidate text representation of the verbal utterance to the first additional client device. In some implementations, in response to determining to send the request for the first additional candidate text representation of the verbal utterance to the first additional client device, the method further includes sending a request for the first additional candidate text representation of the verbal utterance to the first additional client device. In some versions of those implementations, determining whether to send the request for the first additional candidate text representation of the verbal utterance to the first additional client device includes determining a hotword confidence score based on processing at least a portion of audio data capturing the verbal utterance of the user with the hotword model, the hotword confidence score indicating a probability whether at least a portion of the audio data includes a hotword. In some versions of those implementations, the method further includes determining whether the hotword confidence score satisfies one or more conditions, where determining whether the hotword confidence score satisfies the one or more conditions includes determining whether the hotword confidence score satisfies a threshold. In some versions of those implementations, in response to determining that the hotword confidence score satisfies the threshold, the method further includes determining whether the hotword confidence score indicates a weak probability that at least a portion of the audio data includes a hotword. In some versions of those implementations, in response to determining that the hotword confidence score indicates a weak probability that at least a portion of the audio data includes a hotword, the method further includes determining to send a request to a first additional client device for a first additional candidate text representation of the spoken utterance.
[0113] Further, some implementations include one or more processors (e.g., central processing unit(s) (CPU(s))), graphics processing unit(s) GPU(s), and / or tensor processing unit(s) (TPU(s)) of one or more computing devices, where the one or more processors are operable to execute instructions stored in associated memory, the instructions configured to effect performance of any of the methods described herein. Some implementations also include one or more transient or non-transient computer-readable storage media that store computer instructions executable by the one or more processors to perform any of the methods described herein. [Explanation of symbols]
[0114] 100 Environment 102 users 104 Mobile Phones 106 Smartwatch 108 Automated Assistant with Display 110 Wi-Fi Access Points 112 Smart Camera 114 Laptop Computer 300 Environment 302, 314 Client Devices 304, 316 User interface input / output devices 306, 320 Candidate text expression engine 308 Text Expression Engine 310 Additional Device Engines 312, 322 ASR models 318 Audio Source Engine 800 Automated Assistants 802 Client Device 804 Automated Assistant Client 806 Local Engine 810 Cloud-Based Automated Assistant Components 812 TTS Module 814 STT module 816 Natural Language Processor 818 Dialogue State Tracker 820 Dialogue Manager 910 Computing Devices 912 Bus Subsystem 914 Processor 916 Network Interface 920 User Interface Output Device 922 User Interface Input Devices 924 Storage Subsystem 925 Memory Subsystem 926 File Storage Subsystem
Claims
1. 1. A method executed by one or more processors, comprising: Detecting, at the client device, audio data capturing a user's verbal speech, the client device is in an environment including one or more additional client devices and communicates locally with the one or more additional client devices over a local network; the one or more additional client devices including at least a first additional client device; processing, at the client device, the audio data using an automatic speech recognition ("ASR") model stored locally at the client device to generate candidate text representations of the spoken utterance; receiving, at the client device, a first additional candidate text representation of the spoken utterance from the first additional client device over the local network; The first additional candidate text representation of the spoken utterance generated locally at the first additional client device is based on (a) the audio data capturing the spoken utterance detected at the client device, and (b) locally detected audio data capturing the spoken utterance detected at the first additional client device; the first additional candidate text representation of the spoken utterance is generated by processing the audio data capturing the spoken utterance detected at the client device and the locally generated audio data capturing the spoken utterance detected at the first additional client device using a first additional ASR model stored locally at the first additional client device; determining a text representation of the spoken utterance based on the candidate text representation of the spoken utterance and the first additional candidate text representation of the spoken utterance generated by the first additional client device; The method includes:
2. the one or more additional client devices include at least the first additional client device and a second additional client device; Receiving, at the client device, the first additional candidate text representation from the first additional client device over the local network, comprises: receiving, at the client device, from the second additional client device over the local network, (a) the audio data and / or (b) a second additional candidate text representation of the verbal utterance generated locally at the second additional client device based on additional locally detected audio data capturing the verbal utterance detected at the second additional client device, wherein the second additional candidate text representation of the verbal utterance is generated by processing the audio data and / or the additional locally generated audio data using a second additional ASR model stored locally at the second additional client device; determining the text representation of the spoken utterance based on the candidate text representation of the spoken utterance and the first additional candidate text representation of the spoken utterance generated by the first additional client device, 10. The method of claim 1 , further comprising determining the text representation of the spoken utterance based on the candidate text representation of the spoken utterance, a first additional candidate text representation of the spoken utterance generated by the first additional client device, and a second additional candidate text representation of the spoken utterance generated by the second additional client device.
3. determining the text representation of the spoken utterance based on the candidate text representation of the spoken utterance and the first additional candidate text representation of the spoken utterance generated by the first additional client device, randomly selecting the candidate text representation of the spoken utterance or the first additional candidate text representation of the spoken utterance; and determining the text representation of the verbal utterance based on the random selection.
4. determining the text representation of the spoken utterance based on the candidate text representation of the spoken utterance and the first additional candidate text representation of the spoken utterance generated by the first additional client device, determining a confidence score for the candidate text representation indicative of a probability that the candidate text representation is the text representation, the confidence score being based on one or more device parameters of the client device; determining an additional confidence score for the additional candidate text representation indicative of an additional probability that the additional candidate text representation is the text representation, the additional confidence score being based on one or more additional device parameters of the additional client device; comparing said confidence score with said additional confidence score; and determining the textual representation of the verbal utterance based on the comparison.
5. determining the text representation of the spoken utterance based on the candidate text representation of the spoken utterance and the first additional candidate text representation of the spoken utterance generated by the first additional client device, determining an audio quality value indicative of a quality of the audio data capturing the detected oral speech at the client device; determining an additional audio quality value indicative of the quality of additional audio data capturing the oral speech detected at the first additional client device; comparing said audio quality value with said additional audio quality value; and determining the textual representation of the spoken utterance based on the comparison.
6. determining the text representation of the spoken utterance based on the candidate text representation of the spoken utterance and the first additional candidate text representation of the spoken utterance generated by the first additional client device, determining an ASR quality value indicative of a quality of the ASR model stored locally at the client device; determining an additional ASR quality value indicative of the quality of the additional ASR model stored locally at the additional client device; comparing the ASR quality value with the additional ASR quality value; and determining the textual representation of the spoken utterance based on the comparison.
7. The first additional candidate text representation of the spoken utterance comprises a plurality of hypotheses, and determining the text representation of the spoken utterance based on the candidate text representation of the spoken utterance and the first additional candidate text representation of the spoken utterance generated by the first additional client device comprises: re-ranking the plurality of hypotheses using the client device; determining the text representation of the spoken utterance based on the candidate text representations of the spoken utterance and the re-ranked plurality of hypotheses.
8. prior to receiving, at the client device, from the first additional client device over the local network, the first additional candidate text representation of the spoken utterance; The method further includes determining whether to generate locally at the first additional client device the first additional candidate representation of the oral utterance based on (a) the audio data and / or (b) the locally detected audio data capturing the oral utterance detected at the first additional client device, wherein determining whether to generate locally at the first additional client device the first additional candidate representation of the oral utterance based on (a) the audio data and / or (b) the locally detected audio data capturing the oral utterance detected at the first additional client device includes: determining an audio quality value indicative of a quality of the audio data capturing the detected oral speech at the client device; determining an additional audio quality value indicative of the quality of the locally detected audio data capturing the detected oral speech at the first additional client device; comparing said audio quality value with said additional audio quality value; and determining whether to generate the first additional candidate representation of the oral utterance locally at the first additional client device based on the comparison (a) the audio data, and / or (b) the locally detected audio data capturing the oral utterance detected at the first additional client device.
9. 4. The method of claim 3, further comprising: determining an audio quality value indicative of the quality of the audio data capturing the detected oral speech at the client device, the audio quality value being ... comprising: identifying one or more microphones of the client device; determining the audio quality value based on the one or more microphones of the client device; Determining the additional audio quality value indicative of the quality of the locally detected audio data capturing the detected oral speech at the first additional client device comprises: identifying one or more first additional microphones of the first additional client device; and determining the additional audio quality value based on the one or more first additional microphones of the first additional client device.
10. 4. The method of claim 3, further comprising: determining an audio quality value indicative of the quality of the audio data capturing the detected oral speech at the client device, the audio quality value being ... comprising: generating a signal-to-noise ratio value based on processing the audio data capturing the oral speech; determining the audio quality value based on the signal to noise ratio value; Determining the additional audio quality value indicative of the quality of the locally detected audio data capturing the detected oral speech at the first additional client device comprises: generating an additional signal-to-noise ratio value based on processing the audio data capturing the oral speech; and determining the additional audio quality value based on the additional signal-to-noise ratio value.
11. determining, at the client device, whether to send a request for the first additional candidate text representation of the spoken utterance to the first additional client device prior to receiving, via the local network from the first additional client device, a first additional candidate text representation of the spoken utterance; in response to determining to send the request for the first additional candidate text representation of the spoken utterance to the first additional client device, sending the request for the first additional candidate text representation of the spoken utterance to the first additional client device; 11. The method of claim 1, further comprising:
12. determining whether to send the request for the first additional candidate text representation of the spoken utterance to the first additional client device, determining a hotword confidence score based on processing at least a portion of the audio data capturing the verbal utterance of the user with a hotword model, the hotword confidence score indicating a probability whether at least the portion of the audio data contains a hotword; determining whether the hotword confidence score satisfies one or more conditions, wherein determining whether the hotword confidence score satisfies the one or more conditions comprises determining whether the hotword confidence score satisfies a threshold; and in response to determining that the hotword confidence score meets a threshold, determining whether the hotword confidence score indicates a low probability that at least the portion of the audio data contains the hotword; and determining, in response to determining that the hotword confidence score indicates the weak probability that at least the portion of the audio data contains the hotword, to send the request for the first additional candidate text representation of the spoken utterance to the first additional client device.
13. When executed by one or more processors, the one or more processors are Detecting, at a client device, audio data capturing a user's verbal speech, the client device is in an environment including one or more additional client devices and communicates locally with the one or more additional client devices over a local network; the one or more additional client devices including at least a first additional client device; processing, at the client device, the audio data using an automatic speech recognition ("ASR") model stored locally at the client device to generate candidate text representations of the spoken utterance; receiving, at the client device, a first additional candidate text representation of the spoken utterance from the first additional client device over the local network; The first additional candidate text representation of the spoken utterance generated locally at the first additional client device is based on (a) the audio data capturing the spoken utterance detected at the client device, and (b) locally detected audio data capturing the spoken utterance detected at the first additional client device; the first additional candidate text representation of the spoken utterance is generated by processing the audio data capturing the spoken utterance detected at the client device and the locally generated audio data capturing the spoken utterance detected at the first additional client device using a first additional ASR model stored locally at the first additional client device; and determining a text representation of the spoken utterance based on the candidate text representation of the spoken utterance and the first additional candidate text representation of the spoken utterance generated by the first additional client device; 16. A computer-readable storage medium configured to store instructions for performing operations including:
14. one or more processors; When executed by one or more processors, the one or more processors are Detecting, at a client device, audio data capturing a user's verbal speech, the client device is in an environment including one or more additional client devices and communicates locally with the one or more additional client devices over a local network; the one or more additional client devices including at least a first additional client device; processing, at the client device, the audio data using an automatic speech recognition ("ASR") model stored locally at the client device to generate candidate text representations of the spoken utterance; receiving, at the client device, a first additional candidate text representation of the spoken utterance from the first additional client device over the local network; The first additional candidate text representation of the spoken utterance generated locally at the first additional client device is based on (a) the audio data capturing the spoken utterance detected at the client device, and (b) locally detected audio data capturing the spoken utterance detected at the first additional client device; the first additional candidate text representation of the spoken utterance is generated by processing the audio data capturing the spoken utterance detected at the client device and the locally generated audio data capturing the spoken utterance detected at the first additional client device using a first additional ASR model stored locally at the first additional client device; and determining a text representation of the spoken utterance based on the candidate text representation of the spoken utterance and the first additional candidate text representation of the spoken utterance generated by the first additional client device; A memory configured to store instructions to perform operations including: A system including:
Citation Information
Patent Citations
Apparatus and method for speech recognition
JP2005266192A
Speech translation system, controller, speech recognition device, translation device, and speech synthesizer
JP2011090100A
Arbitration between voice-enabled devices
JP2018532151A
Information processing device
JP2020129130A
Collaborative automatic speech recognition
US20190318742A1