Patent Description:
This specification generally relates to automated speech recognition.

The reality of a speech-enabled home or other environment - that is, one in which a user need only speak a query or command out loud and a computer-based system will field and answer the query and/or cause the command to be performed - is upon us. A speech-enabled environment (e.g., home, workplace, school, etc.) can be implemented using a network of connected microphone devices distributed throughout the various rooms or areas of the environment. Through such a network of microphones, a user has the power to orally query the system from essentially anywhere in the environment without the need to have a computer or other device in front of him/her or even nearby. For example, while cooking in the kitchen, a user might ask the system "how many milliliters in three cups?" and, in response, receive an answer from the system, e.g., in the form of synthesized voice output. Alternatively, a user might ask the system questions such as "when does my nearest gas station close," or, upon preparing to leave the house, "should I wear a coat today?".

Further, a user may ask a query of the system, and/or issue a command, that relates to the user's personal information. For example, a user might ask the system "when is my meeting with John?" or command the system "remind me to call John when I get back home.

<CIT> describes a self-contained wireless interactive speech recognition control device and system that integrates with automated systems and appliances to provide totally hands-free speech control capabilities for a given space. The device may be enclosed in a stand-alone housing or within a standard electrical wall box. Several devices may be installed in close proximity to one another to ensure hands-free coverage throughout the space. When two or more devices are triggered simultaneously by the same speech command, real time coordination ensures that only one device will respond to the command.

<CIT> describes an electronic device in a topology of interconnected electronic devices which can listen for a wake phrase and voice commands. The device can control when and how it responds so that a single device responds to voice commands.

<CIT> describes a hotword detection method for multiple devices which includes the actions of receiving, by a first computing device, audio data that corresponds to an utterance. The actions further include determining a first value corresponding to a likelihood that the utterance includes a hotword. The actions further include receiving a second value corresponding to a likelihood that the utterance includes the hotword, the second value being determined by a second computing device. The actions further include comparing the first value and the second value. The actions further include based on comparing the first value to the second value, initiating speech recognition processing on the audio data.

<CIT> describes method for hotword detection on multiple devices which includes the actions of receiving, by a computing device, audio data that corresponds to an utterance. The actions further include determining a likelihood that the utterance includes a hotword. The actions further include determining a loudness score for the audio data. The actions further include based on the loudness score, determining an amount of delay time. The actions further include, after the amount of delay time has elapsed, transmitting a signal that indicates that the computing device will initiate speech recognition processing on the audio data.

For a speech-enabled system, the users' manner of interacting with the system is designed to be primarily, if not exclusively, by means of voice input. Consequently, the system, which potentially picks up all utterances made in the surrounding environment including those not directed to the system, may have some way of discerning when any given utterance is directed at the system as opposed, e.g., to being directed at an individual present in the environment. One way to accomplish this is to use a hotword, which by agreement among the users in the environment, is reserved as a predetermined word that is spoken to invoke the attention of the system. In an example environment, the hotword used to invoke the system's attention are the words "OK computer. " Consequently, each time the words "OK computer" are spoken, it is picked up by a microphone, conveyed to the system, which may perform speech recognition techniques or use audio features and neural networks to determine whether the hotword was spoken and, if so, awaits an ensuing command or query. Accordingly, utterances directed at the system take the general form [HOTWORD] [QUERY], where "HOTWORD" in this example is "OK computer" and "QUERY" can be any question, command, declaration, or other request that can be speech recognized, parsed and acted on by the system, either alone or in conjunction with the server via the network.

Innovative aspects of the subject matter described herein relate to methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for hotword detection on multiple devices. Various implementations are configured so that the use of computing resources is reduced when more than one device is near a user when the user speaks a hotword.

An innovative aspect of the subject matter described in this specification is embodied in methods that include the actions of receiving, by a computing device, audio data that corresponds to an utterance; determining that the utterance likely includes a particular, predefined hotword; in response to determining that the utterance likely includes the particular, predefined hotword, transmitting, to a server, (i) data indicating that the computing device likely received the particular, predefined hotword, (ii) data identifying the computing device, and (iii) a group identifier identifying a group of nearby computing devices that includes the computing device, from which group only one device should respond to the predefined hotword; receiving, from the server, an instruction to commence speech recognition processing on the audio data; and in response to receiving the instruction to commence speech recognition processing on the audio data, processing at least a portion of the audio data using an automated speech recognizer on the computing device.

These and other embodiments can each optionally include one or more of the following features. The actions further include receiving, from an additional computing device, data indicating that the additional computing device is configured to respond to a particular, predefined hotword; transmitting, to the additional computing device, data indicating that the computing device is configured to respond to a particular, predefined hotword; determining a group identifier for a group of computing devices that includes the computing device and the additional computing device; and transmitting, to the additional computing device, the group identifier. The additional computing device is a computing device that is nearby the computing device. The actions further include receiving, by the computing device, additional audio data that corresponds to an additional utterance; determining that the additional utterance likely includes the particular, predefined hotword; in response to determining that the utterance likely includes the particular, predefined hotword, transmitting, to the server, (i) the data indicating that the computing device likely received the particular, predefined hotword, (ii) the data identifying the computing device, and (iii) the data identifying the group of nearby computing devices that includes the computing device; receiving, from the server, an instruction to not commence speech recognition processing on the audio data; and in response to receiving the instruction to not commence speech recognition processing on the audio data, ceasing processing of the audio data using the automated speech recognizer on the computing device.

The actions further include determining a loudness of the audio data associated with the particular, predefined hotword; and in response to determining that the utterance likely includes the particular, predefined hotword, transmitting, to the server, the loudness of the audio data associated with the particular, predefined hotword. The action of determining a loudness of the audio data associated with the particular, predefined hotword includes determining a power of the audio data associated with the particular, predefined hotword; and determining a power of audio data that is not associated with the particular, predefined hotword and that the computing device received before the audio data associated with the particular, predefined hotword. The loudness of the audio data associated with the particular, predefined hotword is based on the power of the audio data associated with the particular, predefined hotword and the power of the audio data that is not associated with the particular, predefined hotword and that the computing device received before the audio data associated with the particular, predefined hotword. The actions further include determining a confidence score that reflects a likelihood that the audio data associated with the particular, predefined hotword corresponds to the particular, predefined hotword; and in response to determining that the utterance likely includes the particular, predefined hotword, transmitting, to the server, confidence score.

The action of determining a confidence score that reflects a likelihood that the audio data associated with the particular, predefined hotword corresponds to the particular, predefined hotword includes determining audio features from the audio data associated with the particular, predefined hotword; and based on the audio features, determining, using a neural network, the confidence score. The actions further include, in response to determining that the utterance likely includes the particular, predefined hotword, transmitting, to the server, data indicating a location of the computing device. The actions further include, in response to determining that the utterance likely includes the particular, predefined hotword, transmitting, to the server, data indicating an elapsed time since a previous use of the computing device. The actions further include, in response to determining that the utterance likely includes the particular, predefined hotword, transmitting, to the server, data indicating a previous action performed by the computing device.

Other embodiments of this aspect include corresponding systems, apparatus, and computer programs recorded on computer storage devices, each configured to perform the operations of the methods.

Another innovative aspect of the subject matter described in this specification is embodied in methods that include the actions of receiving, by a server and from a computing device, (i) data indicating that the computing device likely received a particular, predefined hotword, (ii) data identifying the computing device, and (iii) a group identifier identifying a group of computing devices that are near the computing device and that includes the computing device; accessing context data that indicates a context of the computing device; based on the context data of the computing device and the group identifier, determining that the computing device commence speech recognition processing on audio data associated with the particular, predefined hotword; and transmitting, to the computing device, an instruction to commence speech recognition processing on the audio data associated with the particular, predefined hotword.

These and other embodiments can each optionally include one or more of the following features. The actions further include receiving, by a server and from an additional computing device, (i) data indicating that the additional computing device likely received the particular, predefined hotword, (ii) data identifying the additional computing device, and (iii) a group identifier identifying the group of computing devices that are near the additional computing device and that includes the computing device and the additional computing device; accessing context data that indicates a context of the additional computing device; based on the context data of the computing device and the context data of the additional computing device, determining that the additional computing device not commence speech recognition processing on the audio data associated with the particular, predefined hotword; and transmitting, to the additional computing device, an instruction to not commence speech recognition processing on the audio data associated with the particular, predefined hotword.

The actions further include receiving, by a server and from a first computing device, data indicating that the first computing device is configured to respond to a particular, predefined hotword; receiving, by a server and from a second computing device, data indicating that the second computing device is configured to respond to the particular, predefined hotword; determining, by the server, a group identifier for a group of computing devices that includes the first computing device and the second computing device; and transmitting, to the first computing device and the second computing device, the group identifier. The data identifying the group of computing devices that are near the computing device and that includes the computing device is the group identifier. The audio data associated with the particular, predefined hotword is audio data that corresponds to an utterance. The context data that indicates a context of the computing device includes data indicating one of more capabilities of the computing device.

The action of determining that the computing device commence speech recognition processing on audio data associated with the particular, predefined hotword is based on the one of more capabilities of the computing device. The context data that indicates a context of the computing device includes data indicating an elapsed time since a previous use of the computing device. The action of determining that the computing device commence speech recognition processing on audio data associated with the particular, predefined hotword is based on the elapsed time since the previous use of the computing device. The context data that indicates a context of the computing device includes data indicating a previous action performed by the computing device. The action of determining that the computing device commence speech recognition processing on audio data associated with the particular, predefined hotword is based on the previous action performed by the computing device. The actions further include receiving, from the computing device data indicating a loudness of the audio data associated with the particular, predefined hotword. The action of determining that the computing device commence speech recognition processing on the audio data associated with the particular, predefined hotword is further based on the loudness of the audio data associated with the particular, predefined hotword.

The actions further include receiving, by the server and from the computing device, data indicating a location of the computing device. The action of determining that the computing device commence speech recognition processing on audio data associated with the particular, predefined hotword is further based on the location of the computing device. The actions further include receiving, from the computing device, data indicating an action associated with the audio data and data indicating actions performed by the computing device within a particular period of time after receiving the instruction to commence speech recognition processing on the audio data associated with the particular, predefined hotword; and updating the context data of the computing device based on the data indicating the action associated with the audio data and the data indicating the actions performed by the computing device within the particular period of time after receiving the instruction to commence speech recognition processing on the audio data associated with the particular, predefined hotword.

A user can speak a hotword in a room with multiple devices that are capable of responding to hotwords and only one device will respond. The user can speak a hotword and only the nearest device will respond to the hotword even if other devices hear the hotword. The system that selects the device to respond to the hotword can select an appropriate device based on the context of the device and other nearby devices.

As systems that are configured to respond to hotwords become more prevalent, the likelihood of more than one being near a user when the user speaks the hotword increases. For example, a user may be in the living room watching television. A tablet may be on the table, and a phone may be on the couch next to the user. In accordance with various embodiments, when the phone, tablet, and television detect a hotword, they each communicate with a server and notify the server that the device detected a hotword. With each notification sent to the server, each device transmits a group identifier and the type of device. The group identifier is data that identifies a device group from which only one device should respond to a hotword. For example, devices in the same room may share a group identifier.

When the server receives data from each of the phone, tablet, and television, the server compares the context data of each device to determine which one should respond to the hotword. The context data may include the capabilities of the devices, the time since each device was previously used, the previous action preformed, the location of the device, and the loudness of the detected hotword. Based on this context data, the server selects one of the devices to respond to the hotword. For example, the server may select the tablet to respond to the hotword based on the devices being located at the user's home and the fact that the user most commonly uses the tablet while at home. The server then provides an instruction to the tablet to process the user's speech. The tablet processes the "play music" command and begins to play music. The server also provides instructions to the television and phone not to process the user's speech. The phone returns to its previous state, and the television continues to play the television show without interruption.

In this way, the use of computing resources is reduced when a user directs a voice command to the system. Instead of each device responding independently to the voice command, the system is configured in the manner described herein, such that only one of the devices takes the requested action in response to the voice command.

<FIG> illustrates an example system <NUM> for hotword detection. Briefly, and as described in more detail below, a user <NUM> speaks an utterance <NUM> that is detected by microphones of computing devices <NUM> and <NUM>. The computing devices <NUM> and <NUM> process the audio data of the utterance <NUM> and determine whether the utterance <NUM> includes a hotword. Before performing speech recognition on the utterance <NUM>, the computing devices <NUM> and <NUM> communicate with the server <NUM>. The server <NUM> uses context data for both the computing device <NUM> and the computing device <NUM> to select one of the computing devices <NUM> or <NUM> to commence speech recognition on the audio data that includes the hotword. Based on the context data, the server <NUM> selects the computing device <NUM> and sends instructions to the computing device <NUM> to commence speech recognition on the audio data. The server <NUM> also sends instructions to the computing device <NUM> not to commence speech recognition on the audio data.

In the example shown in <FIG>, the user <NUM> is in a room with both computing device <NUM>, for example, a mobile phone, and computing device <NUM>, for example, a television. When the user <NUM> speaks a voice command, both the phone <NUM> and the television <NUM> receive through their respective microphones the audio data that corresponds to the user's voice command. Both the phone <NUM> and the television <NUM> are configured to respond to voice commands, but it is unlikely that when the user <NUM> speaks "OK computer, play music" that the user <NUM> wishes for both the phone <NUM> and the television <NUM> to begin playing music. To avoid the situation of both devices responding to a voice command, the computing devices <NUM> and <NUM> may begin by identifying other devices in the nearby vicinity that are configured to respond to voice commands that include a hotword. The nearby vicinity may include devices that are on the same local network, devices that can communicate through a short range radio signals, or devices that are in a same room.

In some implementations, the phone <NUM> and the television <NUM> are on the same local network, for example, a home wireless network. The phone <NUM>, or the television <NUM>, communicates with the other devices on the network and identifies the devices that are configured to respond to voice commands that include a hotword. Once the phone <NUM> identifies the television <NUM> and confirms that the television <NUM> is also configured to respond to a hotword, the phone <NUM> and television <NUM>, in stage A, negotiate a group identifier for use when notifying the server <NUM> that either the phone <NUM> or the television <NUM> has detected a hotword. For example, the group identifier may be the email address, user@example. com, of the user logged into one or both of the devices. The phone <NUM> stores user@example. com as the group identifier <NUM>, and the television <NUM> stores user@example. com as the group identifier <NUM>. In some implementations, this negotiation happens periodically to ensure that a device identifies nearby devices that are configured to respond to a hotword. For example, the negotiation can happen once an hour. Alternatively, a device can search for nearby devices when the device moves at least some threshold distance, for example, one hundred meters, as based on location data received by the device.

In some implementations, the phone <NUM> and the television <NUM> are on different networks. For example, the phone <NUM> is on a cellular network and the television <NUM> is on a local wireless network. In this instance, the phone <NUM> and the television <NUM> may be able to communicate through local short range radio and negotiate a group identifier. If the phone <NUM> and the television <NUM> are unable to communicate, then each device may select a group identifier that corresponds to the user who is logged into the device. For example, if the user <NUM> is logged into both the phone <NUM> and the television <NUM>, then both devices may select the group identifier user@example.

At stage B, the user <NUM> speaks the utterance <NUM>, "OK computer, play music. " The utterance <NUM> includes both a hotword <NUM>, "OK computer," and a voice command <NUM>, "play music. " Because the user <NUM> is close enough to the phone <NUM> and the television <NUM>, both the phone <NUM> and the television <NUM> receive, through their respective microphones, the audio data that corresponds to the utterance <NUM>.

At stage B1, the phone <NUM> receives and processes the audio data that corresponds to the utterance <NUM>. The phone <NUM> includes a buffer <NUM>. The buffer <NUM> stores the current audio received through the microphone of the phone <NUM>. For example, the buffer <NUM> stores the previous five seconds of audio data. The hotworder <NUM> continuously analyzes the audio data stored in the buffer <NUM>. The hotworder <NUM> computes a hotword confidence score that reflects the likelihood that current audio data in the buffer <NUM> includes a hotword. To compute the hotword confidence score, the hotworder <NUM> may extract audio features from the audio data such as filterbank energies or mel-frequency cepstral coefficients. The hotworder <NUM> may use classifying windows to process these audio features such as by using a support vector machine or a neural network. In some implementations, the hotworder <NUM> does not perform speech recognition to determine a hotword confidence score.

At approximately the same time that the phone <NUM> processes the utterance <NUM> and at stage B2, the television <NUM> processes audio data received through its microphone. The television <NUM> also includes a buffer <NUM> that stores the current audio data received through the microphone. For example, the buffer <NUM> may store the previous seven seconds of audio data. The hotworder <NUM> continuously analyzes the audio data stored in the buffer <NUM>. The hotworder <NUM> continuously analyzes the audio data stored in the buffer <NUM>. The hotworder <NUM> computes a hotword confidence score that reflects the likelihood that current audio data in the buffer <NUM> includes a hotword. To compute the hotword confidence score, the hotworder <NUM> may extract audio features from the audio data such as filterbank energies or mel-frequency cepstral coefficients. The hotworder <NUM> may use classifying windows to process these audio features such as by using a support vector machine or a neural network. In some implementations, the hotworder <NUM> does not perform speech recognition to determine a hotword confidence score.

As the phone <NUM> calculates a hotword confidence score for the audio data in the buffer <NUM>, the phone <NUM> compares the hotword confidence score to a hotword confidence score threshold. If the hotword confidence score satisfies the hotword confidence score threshold, then the phone <NUM> proceeds to stage C1. For example, if the hotword confidence score is <NUM> and the threshold is <NUM>, then the phone <NUM> proceeds to stage C1. The hotword confidence score threshold represents a hotword confidence score that likely corresponds to detecting a hotword. In instances where a user speaks, "OK computer" clearly and is near the receiving device, the hotword confidence score may be <NUM>. Hotword confidence scores may decrease if the speaker is farther from the devices or speaks less clearly. In instances where a user speaks, "Call Alice," the hotword confidence score may be <NUM>.

In stage C1, the phone <NUM> generates and transmits a data packet to the server <NUM>. The data packet can include data that indicates that the phone <NUM> detected a hotword, a data identifier <NUM> for the phone <NUM>, and the group identifier <NUM>. The data that indicates that the phone <NUM> detected a hotword can include a flag that indicates the phone <NUM> detected a hotword or can include the hotword confidence score or both. The data identifier <NUM> for the phone <NUM> may be any unique identifier for the phone <NUM> such as the MAC address, the I MEI number, a user given name, phone number, or the serial number and model. In some implementations, the data identifier <NUM> at least includes the model of the phone <NUM>.

During about the same time that the phone <NUM> computes the hotword confidence score and sends the server <NUM> the data packet that includes data that indicates that the phone <NUM> detected a hotword <NUM>, a data identifier <NUM> for the phone <NUM>, and the group identifier <NUM>, the television <NUM> also calculates a hotword confidence score for the audio data in the buffer <NUM>, the phone <NUM> compares the hotword confidence score to a hotword confidence score threshold. If the hotword confidence score satisfies the hotword confidence score threshold, then the television <NUM> proceeds to stage C2. For example, if the hotword confidence score is <NUM> and the hotword confidence score threshold is <NUM>, then the television <NUM> proceeds to stage C2. The hotword confidence score for the television <NUM> may be lower than the hotword confidence score for the phone <NUM> because the user <NUM> is farther from the television <NUM> or because the television is currently displaying a television show with sounds that interferes with the microphone detecting the user's speech.

In stage C2 and similar to stage C1, the television <NUM> generates and transmits a data packet to the server <NUM> a data packet that can include data that indicates that the television <NUM> detected a hotword <NUM>, a data identifier <NUM> for the television <NUM>, and the group identifier <NUM>. The data that indicates that the television <NUM> detected a hotword can include a flag that indicates the television <NUM> detected a hotword or can include the hotword confidence score or both. The data identifier <NUM> for the television <NUM> may be any unique identifier for the television <NUM> such as the MAC address, a user given name, or the serial number and model. In some implementations, the data identifier <NUM> at least includes the model of the television <NUM>.

In some implementations and as illustrated in stage C1', the phone <NUM> sends additional data to the server. The additional data may include data that indicates a time elapsed since the phone <NUM> was previously used and how the phone <NUM> was used. For example, the user <NUM> may have previously used the phone <NUM> to send an SMS message two minutes prior to the phone <NUM> detecting the hotword <NUM>. The phone <NUM> may store a history of the prior usage of the phone <NUM> in the usage data <NUM>. Each entry in the usage data <NUM> may include any combination of an application used, an action performed by the phone <NUM>, an action performed by the user <NUM>, and a timestamp. In some implementations, the phone <NUM> may send additional data related to more than one previous action, for example, the previous three actions.

In some implementations and in stage C1', the phone <NUM> sends data that indicates a current state of the phone <NUM> when the phone <NUM> detected the hotword <NUM>. For example, the current state may be that the phone <NUM> is asleep, the phone <NUM> is awake with the screen off or dimmed, or the phone <NUM> is awake and the user <NUM> is using the email application of the phone <NUM>. In the example shown in <FIG>, the phone <NUM> is currently in a sleep state when it detects the hotword <NUM>.

In some implementations and as illustrated in stage C1', the phone <NUM> sends data to the server <NUM> that indicates the loudness of the detected hotword <NUM>. The loudness scorer <NUM> accesses the buffer <NUM> and measures the loudness of the portion of audio data that corresponds to the hotword <NUM>. In some implementations, the loudness scorer <NUM> calculates the power or the root mean square of the audio data that corresponds to the hotword <NUM>. For example, the loudness scorer <NUM> may calculate the loudness to be fifty decibels. In some implementations, the loudness scorer <NUM> normalizes the power or the root mean square of the audio data that corresponds to the hotword <NUM> by subtracting the power or the root mean square of the audio data in the buffer <NUM> that does not correspond to the hotword <NUM>. The audio data in the buffer <NUM> that does not correspond to the hotword <NUM> may correspond to the ambient noise around the phone <NUM>. For example, the loudness scorer <NUM> calculates the power or the root mean square of about one second of audio data before the hotword <NUM> to be thirty decibels. Therefore, the loudness difference is ten decibels. The phone <NUM> may then send the loudness data to the server <NUM>. In some implementations, the phone <NUM> may calculate the loudness of the entire utterance <NUM> or of only the voice command <NUM>. The phone <NUM> may then transmit data indicating the loudness of the entire utterance <NUM> or of only the voice command <NUM> to the server <NUM>.

In some implementations and as illustrated in stage C1', the phone <NUM> sends the hotword confidence score to the server <NUM>. For example, the phone <NUM> calculates a hotword confidence score of <NUM> for the hotword <NUM> and transmits the score to the server <NUM>. In some implementations, the phone <NUM> sends location data to the server <NUM>. For example, the GPS unit on the phone <NUM> may detect a any combination of geographic location, geographic speed, and geographic movement, and the phone <NUM> may transmit that geographic location, geographic speed, and geographic movement to the server <NUM>. As another example, the phone <NUM> may use triangulation to determine a geographic location. In some implementations, the speech recognizer <NUM> of the phone <NUM> may perform speech recognition on the audio data that is stored in the buffer <NUM> including the audio data that correspond to the hotword <NUM> or the voice command <NUM> or both. The speech recognizer <NUM> may calculate a speech recognition confidence score and transmit the speech recognition confidence score to the server <NUM>. The speech recognition confidence score may reflect the likelihood that the transcription generated by the speech recognizer <NUM> is accurate. For example, the speech recognizer <NUM> may calculate a speech recognition confidence score of <NUM> and transmit the score of <NUM> to the server <NUM>. In some implementations, the phone <NUM> transmits, to the server, <NUM> the transcription of the utterance <NUM> or only a portion of the utterance <NUM>, for example, the hotword <NUM> or the voice command <NUM>. For example, the speech recognizer <NUM> transcribes the voice command <NUM> and transmits "play music" to the server <NUM>. In some implementations, the phone <NUM> also sends data that indicates the applications installed on the phone <NUM>. For example, if the phone <NUM> has the application "Instant Movies" and "Love Music" installed, then the phone <NUM> may send data identifying "Instant Movies" and "Love Music. " In some implementations, the phone <NUM> may have many applications installed. In this case, the phone <NUM> may only send data identifying the most used applications, for example, the ten most frequently used applications.

In some implementations and as illustrated in stage C2', the television <NUM> sends additional data to the server. The television <NUM> sends additional data that is similar to the additional data described above with respect to the phone <NUM> in stage C1'. The television <NUM> may store usage data <NUM> that is related to previous uses of the television <NUM> and transmit the usage data to the server <NUM>. For example, the television <NUM> may transmit data indicating that the user <NUM> previously used the "Instant Movies" application to watch "Love Story" two hours ago. The television <NUM> may transmit data that indicates it current state. For example, the television <NUM> may transmit data indicating that the television <NUM> is currently showing the World News Channel and has been for the past fifteen minutes.

The television <NUM> may compute the loudness of the utterance <NUM>, the hotword <NUM>, or voice command <NUM>. The loudness scorer <NUM> may compute the loudness based on the power or the root mean square of the corresponding audio data. The loudness scorer <NUM> may also normalize the power or the root mean square of the corresponding audio data by subtracting the power or the root mean square of the audio data stored in the buffer <NUM> that does not correspond to the utterance <NUM>. For example, the loudness scorer <NUM> may calculate the loudness of the hotword <NUM> to be thirty decibels and the loudness of the audio data received in the two seconds before the hotword <NUM> to be thirty-two decibels. Therefore, the loudness value sent to the server <NUM> is two decibels.

In some implementations, the television <NUM> sends a hotword confidence score. For example, the hotworder <NUM> may calculate a hotword confidence score of <NUM>, and the television <NUM> transmits the score of <NUM> to the server <NUM>. The television <NUM> may send its geographic location to the server <NUM>. The speech recognizer <NUM> may perform speech recognition on the audio data in the buffer <NUM>. The speech recognizer <NUM> may generate a transcription as well as a speech recognition confidence score. The television <NUM> may send the transcription or the speech recognition confidence score or both to the server <NUM>. The television <NUM> may send data that indicates the applications installed on the television <NUM> or the most frequently installed applications. For example, the television <NUM> may send data that identifies the installed application of "Jungle Movies" and "Social Pictures.

The server <NUM> initially receives either the phone <NUM> data packet from stage C1 or the television data packet from stage C2, depending on which device processes and generates the data packet sooner and possible depending any network latency. In this example, the server <NUM> receives the phone <NUM> data packet first. Upon receiving the phone <NUM> data packet, the server <NUM> accesses the received hotword detections <NUM> and compares the group identifier of the phone <NUM> data packet to the group identifier data and timestamp data in the received hotword detections <NUM>. The server <NUM> stores previously received data packets that are received in response to hotword detections in the received hotword detections <NUM>. By comparing incoming data packets to stored data packets, the server <NUM> can use the device selector <NUM> to select the device to respond to the hotword.

In this example, the server <NUM> compares the data received from the phone <NUM>. The server <NUM> searches the received hotword detections <NUM> and does not find other hotword detection data packets that include the group identifier <NUM>, user@example. With no other user@example. com data packets, the server <NUM> stores the data packet along with a timestamp indicating the time of receipt in the received hotword detections <NUM>. The server <NUM> compares subsequently received hotword detection data packets to the data packets stored in the received hotword detections <NUM>. If a threshold period of time passes, for example, two seconds, and the server <NUM> does not receive any additional data packets with the group identifier user@example. com, then the server <NUM> will transmit a command to the phone <NUM> to commence speech recognition on the audio data and to respond to the command. After transmitting the command to the phone <NUM> to commence speech recognition, then the server <NUM> will remove the data packet received from the phone <NUM> from the received hotword detections <NUM>. In some implementations, the phone <NUM> may not identify any nearby devices, and, in this case, may not communicate with the server <NUM>. Instead, the phone <NUM> may commence speech recognition on the audio data without communicating with the server <NUM>.

Within the threshold period of time, the server <NUM> receives a hotword detection data packet from the television <NUM>. The data packet from the television includes the same group identifier, user@example. The server <NUM> may then use the device selector <NUM> to select a device to commence speech recognition on the audio data, or the server <NUM> may wait for a threshold period of time in case other hotword detection data packet arrive at the server <NUM> with the same group identifier. In the example of <FIG>, the server <NUM> receives hotword detection data packets from the television <NUM> and from the phone <NUM> and uses the device selector <NUM> to select a device.

In stage D, the server <NUM> accesses the context data <NUM>, and the device selector <NUM> uses the phone context data <NUM> and the television context data <NUM> to select a device to commence speech recognition on the audio data. The server <NUM> may gather context data while the user <NUM> uses the phone <NUM> and the television <NUM>, especially in instances where the phone <NUM> or the television <NUM> access the server <NUM> or a server that shares data with the server <NUM>. For example, the user <NUM> may play music on the phone <NUM> by accessing a streaming music service on a server in the cloud <NUM>. The streaming music server may communicate with the server <NUM> that is also in the cloud <NUM> and share the data that the phone <NUM> accessed the streaming music service. The server <NUM> may then store that information in the phone context data <NUM> possibly along with a timestamp. As another example, the user <NUM> may use the phone <NUM> to send an email using an email application that interacts with a server in the cloud <NUM>. The email server may communicate with the server <NUM> and the server may store phone context data <NUM> that indicates the user <NUM> accessed the email application on the phone <NUM> along with a timestamp.

Similarly, the server <NUM> may receive television context data <NUM> from other servers in the cloud <NUM> that communicate with the television <NUM>. For example, the user <NUM> may use the television to perform an internet search using a search engine that is in the cloud <NUM>. The search engine may communicate with the server <NUM>, and the server <NUM> may store television context data <NUM> that indicates the user <NUM> accessed the search engine on the television <NUM> along with a timestamp. As another example, the user <NUM> may use the television <NUM> to watch a video using a streaming video service from a server in the cloud <NUM>. The streaming video server may communicate with the server <NUM>, and the server <NUM> may store television context data <NUM> that indicates that the user <NUM> watched a video using the streaming video server, along with a timestamp. In some implementations, the phone context data <NUM> and the television context data <NUM> may include location data. For example, the phone context data may include data indicating the geographic location of the phone <NUM> when the user accessed the streaming music server.

In some implementations, the context data <NUM> may include or have access to data that describes capabilities of various devices. The capabilities may include whether the device has a camera, cellular radio, short range radio, GPS, or other components. The capabilities may also include specifications of the device such as screen size, screen resolution, processor type and speed, memory, etc. The context data <NUM> may not actually store this capability data. Instead the context server <NUM> may be able to query another server to retrieve device capability data. In some instances, the context server <NUM> may store some capability data within the context data <NUM> for some more commonly used devices such as popular phone models.

To select a device to commence speech recognition on the utterance <NUM>, the device selector <NUM>, at stage E, may consider a number of factors, and, in some instances, the device selector <NUM> may not have access to all the factors each time that the device selector <NUM> selects a device. In some implementations, the device selector <NUM> may select the device that detected the highest loudness for the hotword <NUM>. For example, the phone <NUM> detected a hotword loudness that was normalized of ten decibels. The television <NUM> detected a hotword loudness that was normalized of two decibels. The device selector <NUM> may select the phone <NUM> because the hotword loudness was the greatest. In some implementations, the device selector <NUM> may have access to hotword loudness levels and the previous use of each device. In this instance, the device selector <NUM> may disregard the hotword loudness levels and instead select the device that was used most recently. For example, if the phone <NUM> was more active recently according to the phone context data <NUM> and the television context data <NUM>, then the device selector <NUM> may select the phone <NUM>. In some implementations, the device selector <NUM> may have access to context data that indicates that the television <NUM> is currently in use by displaying a video and the phone <NUM> has not been used in the last ten minutes. The device selector <NUM> may select the phone <NUM> to respond to commence speech recognition on the utterance <NUM> because the phone <NUM> is not being used.

In some implementations, the sever <NUM> may receive a hotword confidence score. In this instance, the device selector <NUM> may select the device with the highest hotword confidence score. In some implementations, the server <NUM> may receive location data and select a device based the user <NUM> being in a location where one of the devices is used more commonly than the other. For example, the devices may be a tablet and a phone. When the user <NUM> is away from the geographic locations that correspond to the user's home or work, then the context data <NUM> may reflect that the user <NUM> is more likely to use the phone instead of the tablet. Accordingly, when the user <NUM> speaks the hotword <NUM> and the phone and tablet send hotword detection packets that include location information to the server <NUM>, then the server <NUM> may select the phone if the device selector <NUM> determines that the user <NUM> is not at home or work.

In some implementations, the server <NUM> may receive a transcription of the voice command <NUM>. In this instance, the devices have already performed speech recognition on the voice command <NUM> and the device selector <NUM> selects a device to act on the voice command <NUM>. With the transcription of the voice command, the device selector <NUM> can access the context data <NUM> to select an appropriate device to respond to the voice command. For example, if the voice command is "Call Alice," then the device selector <NUM> would select the phone <NUM> to process the voice command because the user <NUM> typically uses the phone <NUM> to call even in the case where the television <NUM> is configured to process voice calls or because the phone <NUM> is the only device configured to process voice calls.

In some implementations, the device selector <NUM> may use the current or previous use of the device to select a device to respond to the voice command. The current or previous use may be related to the voice query. For example, the voice command may be, "stop playing music. " If the device selector <NUM> has access to context data <NUM> that describes one of the devices as playing music, then the device selector <NUM> selects the device that is playing music to respond to the voice command. As another example, the voice command may be, "show the music video again. " If the device selector <NUM> has access to context data <NUM> that indicates that one of the devices played a music video for "Rock Group" in the last ten minutes, then the device selector <NUM> will select that device to respond to that voice command.

In some implementations, the server <NUM> may receive a speech recognition confidence score from each device. The device selector <NUM> may select the device with the highest speech recognition confidence score. For example, the phone <NUM> may calculate a speech recognition confidence score of <NUM> and the television <NUM> may calculate a speech recognition confidence score of <NUM>. The device selector <NUM> selects the phone <NUM> to respond to the search query as a consequence of the higher speech recognition confidence score.

In some implementations, the server <NUM> may receive context data related to the applications installed on the phone <NUM> and television <NUM>. The device selector <NUM> may use the context data related to the installed applications to select a device to respond to the voice query. For example, the voice command may be "play Super Ninja. " The device selector <NUM> may have context information that the phone <NUM> has Super Ninja installed. Therefore, the device selector <NUM> selects the phone <NUM> to respond to the "play Super Ninja" command. In some implementations, the server <NUM> may receive data indicated installed applications if the user downloads the applications from an application server in the cloud <NUM> and the application server communicates with the server <NUM> regarding the installed applications.

In stage E, the server <NUM> selects a device to perform speech recognition on the voice command and then perform the voice command. In the case where the server <NUM> receives a transcription of the voice command, the server <NUM> selects a device to perform the voice command. In the example show in <FIG>, the server <NUM> selects the phone <NUM> based on the television context data <NUM> that indicates that the television is currently being used, so the phone <NUM> may be better to respond to a new voice command. In instances where the server <NUM> receives a transcription of the voice command <NUM>, the server may use context data that indicates the television <NUM> is showing a video while the phone <NUM> is idle to determine that the phone should respond to the "play music" the voice command. The device selector <NUM> may the use any of the criteria described above in any combination and weight each factor differently to select a device.

In stage F1 and F2, the server <NUM> transmits the instructions to the phone <NUM> and television <NUM>. The instructions for the phone <NUM> instruct the phone <NUM> to process the query and commencing speech recognition on the utterance <NUM>, if necessary. The instructions for the television <NUM> instruct the television <NUM> to cease processing the query.

In stages G1 and G2, the phone <NUM> and television <NUM> execute the instructions received by the server <NUM>. The phone <NUM> processes the utterance <NUM>, possibly by performing speech recognition, and then playing music <NUM>. The television does not process the utterance <NUM> and continues to show the news video <NUM>.

In some implementations, the phone <NUM> and television <NUM> may transmit to the server the actions performed by the user <NUM> after the phone <NUM> and television <NUM> process the utterance <NUM>. For example, if the phone <NUM> begins to play music <NUM> and the user <NUM> quickly turns off the music <NUM>, then changes the television <NUM> from showing the news video <NUM> to playing music. The phone <NUM> and television <NUM> then report these actions back to the server <NUM>. The server <NUM> may update the selection algorithm of the device selector <NUM> using machine learning. With machine learning, the server <NUM> may change the weights given to each of the items of context data to select the most likely device to process the utterance <NUM>. In some implementations, the machine learning may be user specific. For example, the device selector <NUM> may adjust the selection algorithm based on user <NUM>'s tendency to use the phone <NUM> during traditional business hours and the television outside of business hours or based on the user's tendency to use particular devices when in particular locations.

In some implementations, two devices, possibly of the same type, may end up in the same room and both are associated with a different group identifier. In this instance, when each device sends a hotword detection data packet to the server <NUM>, the server <NUM> receives and compares the group identifier from the received data packets to the group identifiers stored in the received hotword detections <NUM> that are from other recently received data packets. With different group identifiers, the server <NUM> may not determine that only one device should respond to the hotword. To remedy this potential issue, the devices may be configured to send one or more of geographic location data, hotword loudness data, speaker identification data, device context data, speech recognition confidence scores, hotword confidence scores, and a transcription of the utterance <NUM>. The server <NUM> may identify that two hotword detection data packets include geographic location data that are within a threshold distance of each other, for example, ten meters, and that the server <NUM> received within less than a threshold time of each other, for example, one second. In this case, the server <NUM> may determine that even though the devices were associated with different group identifiers, only one should respond to the hotword. To select the device to respond to the hotword, the device selector <NUM> may, for example, select the loudness data and confidence scores that are the highest and instruct the corresponding device to respond to the hotword while instructing the other devices not to respond to the hotword. In instances where the server <NUM> receives the transcription of the utterance <NUM>, the server <NUM> may determine that the hotword detection data packets correspond to the same utterance because the text of the utterance <NUM> was the same and the data packets were received at about the same time. The device selector <NUM> may the select the device to respond to the utterance <NUM> based on the transcription, device capabilities and context, geographic location data, hotword loudness data, speaker identification data, speech recognition confidence scores, and hotword confidence scores using any of the techniques described above.

In some implementations, the voice command <NUM> associated with a single instance of a hotword may include more than one command. In certain instances, it may be appropriate for more than one device to process the commands, either serially or in parallel. For example, a user <NUM> may speak, "OK computer, play Love Story and call mom. " In this instance, it may be better for the phone <NUM> to handle the call and the television <NUM> to handle playing the movie "Love Story". For the server <NUM> to provide instructions to both the phone <NUM> and the television <NUM>, the server <NUM> may need the transcription of the utterance <NUM>. With the transcription of the utterance <NUM>, the device selector <NUM> may identify the two commands in the utterance <NUM> and the nearby devices that are best equipped to handle the commands based on the context data of each device and the capabilities data of each device. In this example, the device selector <NUM> may determine that the television <NUM> is better equipped to show "Love Story" because the television <NUM> has a larger screen and more powerful speakers than the phone <NUM>. The device selector <NUM> may determine that the phone <NUM> is better equipped to handle the telephone call because the phone <NUM> has a cellular radio. The server <NUM> may then send instructions to the phone <NUM> to call mom and to the television <NUM> to play the movie "Love Story.

In some implementations, the phone <NUM> and television <NUM> may not transmit hotword detection packets to the server <NUM> and instead negotiate between each other to determine which device should respond to the hotword <NUM>. The devices may use the context of the devices, for example, geographic location and motion data, to determine which one should respond to the hotword. For example, if the user <NUM> is moving at, on average or periodically, greater than fifteen miles per hour, then there is a high likelihood that the user <NUM> is traveling in a car. If the car is configured to respond to a hotword, then the car may communicate with any other nearby device and notify the other devices that the car will respond to the hotword. The car may still utilize communication features of other device, such as the car completing a call through a mobile phone, but the car will originate the telephone call. In instances where the user <NUM> is in the car, but not moving for a threshold period of time, then the car may not notify the other devices that it will respond to any hotwords or notify the other devices to communicate with the server <NUM> upon detecting a hotword. The car and the other devices may communicate with the server <NUM> and receive instructions from the server <NUM> when responding to hotwords.

In some implementations, the phone <NUM> or the television <NUM> or any other device may present an interface that permits the user <NUM> to enter a preference for which device responds to a hotword. For example, the user <NUM> may enter into the interface that when the user <NUM> is with the phone <NUM> and the television <NUM>, then the user <NUM> prefers for the phone <NUM> to respond to a hotword. The user <NUM> may also be able to select an option that allows the server <NUM> to override the user's preference in instances where a device may be incapable of performing the voice command. In instances where the server <NUM> does not receive the transcription of the utterance, then the server <NUM> may select the device according to the user preference. As an example of a server override, the server <NUM> may receive hotword detection data packet from both the phone <NUM> and the television <NUM>. The hotword detection data packets include the transcription of the voice command, which may be "OK computer, turn on "World News Now. " The user <NUM> has previously selected that when the user <NUM> is near the television <NUM> and the phone <NUM>, that the phone <NUM> should respond to a voice command. However, in this case, the phone <NUM> is not configured to show the news program "World News Now" because the phone <NUM> does not have access to the service that provides that news program. Accordingly, the server <NUM> instructs the television <NUM> to respond to the hotword and voice command and the phone <NUM> not to respond to the hotword and voice command.

<FIG> illustrates an example process <NUM> for hotword detection. In general, the process <NUM> processes audio data, and based on the audio data likely including a hotword, the process commences speech recognition on the audio data if instructed by a server. The process <NUM> will be described as being performed by a computer system comprising one or more computers, for example, the mobile device <NUM> or the television <NUM> as shown in <FIG>.

The system receives audio data that corresponds to an utterance (<NUM>). For example, the user may receive audio data that corresponds to the user speaking, "OK computer, give me directions home. " In some implementations, the system may receive from another system, data indicating that the other system is configured to respond to hotwords. The system and the other system may negotiate a group identifier that each can include in data packets to send to the server when either the system or the other system detects a hotword. For example, the group identifier may be an email address of the user logged into one or both of the devices. In some implementations, the system receives audio data when it is in a sleep state and with the screen off. In this case, the system may remain in a sleep state and still receive and process the audio data. In some implementations, the system may be in an active state, such as playing a video. In this case, the system receives and processes the audio data and continues to play the video.

The system determines that the utterance likely includes a particular, predefined hotword (<NUM>). For example, the system may determine that the utterance likely includes "OK computer. " In some implementations, the system may be in a sleep state and upon receipt of identifying the hotword, the screen of the system activates, possibly on a dimmed low power state, and indicates the system is processing audio data.

The system, in response to determining that the utterance likely includes the particular, predefined hotword, transmits, to a server, (i) data indicating that the computing device likely received the particular, predefined hotword, (ii) data identifying the computing device, and (iii) data identifying a group of nearby computing devices that includes the computing device (<NUM>). In some implementations, the data identifying the computing device is the model and the serial number. In some implementations, the data identifying a group of nearby computing devices is the group identifier. In some implementations, the system determines a loudness of the audio data that corresponds to the hotword and transmits the loudness to the server in response to determining that the utterance likely includes the hotword. For example, the system may determine the loudness to be thirty decibels and transmit that value to the server. In some implementations, the system determines the power of the audio data that corresponds to the hotword and the power of the audio data received just before the hotword. The system then computes the difference between the two values and transmits the difference to the server in response to determining that the utterance likely includes the hotword.

In some implementations, the system determines a hotword confidence score that reflects the likelihood that the system detected a hotword. The system then transmits the hotword confidence score to the server in response to determining that the utterance likely includes the hotword. The system may use a neural network to determine the hotword confidence score. In some implementations, the system may transmit its geographic location to the server in response to determining that the utterance likely includes the hotword. In some implementations, the system may transmit data indicating an elapsed time since a previous use of the computing device and possibly including the previous action. For example, the user may have used the system two minutes ago to send a text message. The system may transmit this information to the server.

The system receives, from the server, an instruction to commence speech recognition processing on the audio data (<NUM>). For example, the system performs speech recognition on the audio data that does not correspond to the hotword and determines the transcription, "give me directions home. " In some implementations, the system may receive an instruction not to commence speech recognition on the audio data. In some implementations, the system may have already have performed speech recognition on the audio data and transmitted the transcription to the server. In this instance the system may receive an instruction to process the voice command in the transcription or not to process the voice command. If the system receives an instruction not to process the voice command, then the system may return to its previous state such as a sleep state or displaying a video. The system, in response to receiving the instruction to commence speech recognition processing on the audio data, processes at least a portion of the audio data using an automated speech recognizer on the computing device (<NUM>). The system may then execute any voice command spoken by the user. For example, the system may provide the user directions to the user's home.

<FIG> illustrates an example process <NUM> for hotword detection. In general, the process <NUM> selects a computing device to commence speech recognition on audio data that likely includes a hotword. The process <NUM> will be described as being performed by a computer system comprising one or more computers, for example, the server <NUM> as shown in <FIG>.

The system receives, from a computing device, (i) data indicating that the computing device likely received a particular, predefined hotword, (ii) data identifying the computing device, and (iii) data identifying a group of computing devices that are near the computing device and that includes the computing device (<NUM>). In some implementations, prior to receiving this data, the server receives data indicating that the computing device and maybe another computing device are configured to respond to a hotword. If the devices are nearby each other, then server selects a group identifier to identify the group when notifying that the computing device detected a hotword.

The system accesses context data that indicates a context of the computing device (<NUM>). In some implementations, the context data corresponds to the capabilities of the computing device. The system may access the capabilities data based on the model number provided by the computing device. For example, a phone may have a camera, short range radio, five inch screen, memory card slot, etc. In some implementations, the context data corresponds to an elapsed time since a previous use or a previous action or both of the computing device. For example, the previous use may be watching a news video and that may be occurring at the same time the computing device detected the hotword. The computing device may provide the time since the previous use and previous action. In some implementations, the system may access the data or receive the data from other servers. In some implementations, the context data includes a loudness of the audio data corresponding to the hotword. In some implementations, the system receives geographic location data from the computing device.

The system, based on the context data of the computing device, determines that the computing device commence speech recognition processing on audio data associated with the particular, predefined hotword (<NUM>). In some implementations, the audio data corresponds to an utterance, such as, a user speaking, "OK computer, give me directions home. " In some implementations, the system selects the computing device based on any combination of the capabilities of the device, the location of the device, the time since the device was last used, the last action performed by the device, or the loudness of the audio data. In some implementations, the system may not have enough information to select a computing device. In this instance, the system may prompt the computing device to preform speech recognition on the utterance and provide a transcription of the utterance. The system may then use the context data and the transcription to select the computing device. In some implementations, the system may prompt the computing device for additional context information instead of or in addition to prompting for the transcription. For example, the system may prompt the computing device for confidence scores of the hotword and the speech recognition.

The system transmits, to the computing device, an instruction to commence speech recognition processing on the audio data associated with the particular, predefined hotword (<NUM>). In some implementations, the system may transmit an instruction not to commence speech recognition processing to other computing devices not selected by the system.

In some implementations, the system may receive data from the computing device identifying the actions taken by the user after the computing device processed the audio data. The computing device may execute the voice command of the audio data and have a user stop the execution of the voice command. The user may then manually execute the action of the voice command on the computing device not selected by the system. In this instance, the system will receive this data and determine that the system selected the wrong device to respond to the hotword. The system may then use machine learning to adjust the selection algorithm. In some implementations, the selection algorithm may be user specific.

<FIG> shows an example of a computing device <NUM> and a mobile computing device <NUM> that can be used to implement the techniques described here. The mobile computing device <NUM> is intended to represent various forms of mobile devices, such as personal digital assistants, cellular telephones, smart-phones, and other similar computing devices. The components shown here, their connections and relationships, and their functions, are meant to be examples only, and are not meant to be limiting.

The computing device <NUM> includes a processor <NUM>, a memory <NUM>, a storage device <NUM>, a high-speed interface <NUM> connecting to the memory <NUM> and multiple high-speed expansion ports <NUM>, and a low-speed interface <NUM> connecting to a low-speed expansion port <NUM> and the storage device <NUM>. Each of the processor <NUM>, the memory <NUM>, the storage device <NUM>, the high-speed interface <NUM>, the high-speed expansion ports <NUM>, and the low-speed interface <NUM>, are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate. The processor <NUM> can process instructions for execution within the computing device <NUM>, including instructions stored in the memory <NUM> or on the storage device <NUM> to display graphical information for a GUI on an external input/output device, such as a display <NUM> coupled to the high-speed interface <NUM>. Also, multiple computing devices may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).

The high-speed interface <NUM> manages bandwidth-intensive operations for the computing device <NUM>, while the low-speed interface <NUM> manages lower bandwidth-intensive operations. Such allocation of functions is an example only. In some implementations, the high-speed interface <NUM> is coupled to the memory <NUM>, the display <NUM> (e.g., through a graphics processor or accelerator), and to the high-speed expansion ports <NUM>, which may accept various expansion cards (not shown). In the implementation, the low-speed interface <NUM> is coupled to the storage device <NUM> and the low-speed expansion port <NUM>. The low-speed expansion port <NUM>, which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet) may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.

The memory <NUM> stores information within the mobile computing device <NUM>. An expansion memory <NUM> may also be provided and connected to the mobile computing device <NUM> through an expansion interface <NUM>, which may include, for example, a SIMM (Single In Line Memory Module) card interface. The expansion memory <NUM> may provide extra storage space for the mobile computing device <NUM>, or may also store applications or other information for the mobile computing device <NUM>. Specifically, the expansion memory <NUM> may include instructions to carry out or supplement the processes described above, and may include secure information also. Thus, for example, the expansion memory <NUM> may be provide as a security module for the mobile computing device <NUM>, and may be programmed with instructions that permit secure use of the mobile computing device <NUM>.

The memory may include, for example, flash memory and/or NVRAM memory (non-volatile random access memory), as discussed below. In some implementations, instructions are stored in an information carrier. that the instructions, when executed by one or more processing devices (for example, processor <NUM>), perform one or more methods, such as those described above. The instructions can also be stored by one or more storage devices, such as one or more computer- or machine-readable mediums (for example, the memory <NUM>, the expansion memory <NUM>, or memory on the processor <NUM>). In some implementations, the instructions can be received in a propagated signal, for example, over the transceiver <NUM> or the external interface <NUM>.

The mobile computing device <NUM> may communicate wirelessly through the communication interface <NUM>, which may include digital signal processing circuitry where necessary. The communication interface <NUM> may provide for communications under various modes or protocols, such as GSM voice calls (Global System for Mobile communications), SMS (Short Message Service), EMS (Enhanced Messaging Service), or MMS messaging (Multimedia Messaging Service), CDMA (code division multiple access), TDMA (time division multiple access), PDC (Personal Digital Cellular), WCDMA (Wideband Code Division Multiple Access), CDMA2000, or GPRS (General Packet Radio Service), among others. Such communication may occur, for example, through the transceiver <NUM> using a radio-frequency. In addition, a GPS (Global Positioning System) receiver module <NUM> may provide additional navigation- and location-related wireless data to the mobile computing device <NUM>, which may be used as appropriate by applications running on the mobile computing device <NUM>.

Examples of communication networks include a local area network (LAN), a wide area network (WAN), and the Internet.

Claim 1:
A computer-implemented method comprising:
receiving, by a computing device, audio data that corresponds to an utterance;
determining that the utterance likely includes a particular, predefined hotword;
in response to determining that the utterance likely includes the particular, predefined hotword, transmitting, to a server, (i) data indicating that the computing device likely received the particular, predefined hotword, (ii) data identifying the computing device, and (iii) a group identifier identifying a group of nearby computing devices, that includes the computing device, from which group only one device should respond to the predefined hotword;
receiving, from the server, an instruction generated by the server to commence speech recognition processing on the audio data; and
in response to receiving the instruction to commence speech recognition processing on the audio data, processing at least a portion of the audio data using an automated speech recognizer on the computing device.