Humans may engage in human-to-computer dialogs with interactive software applications referred to herein as “automated assistants” (also referred to as “chatbots,” “interactive personal assistants,” “intelligent personal assistants,” “personal voice assistants,” “conversational agents,” etc.). For example, humans (which when they interact with automated assistants may be referred to as “users”) may provide commands and/or requests to an automated assistant using spoken natural language input (i.e., spoken utterances), which may in some cases be converted into text and then processed, and/or by providing textual (e.g., typed) natural language input. An automated assistant generally responds to a command or request by providing responsive user interface output (e.g., audible and/or visual user interface output), controlling smart device(s), and/or performing other action(s).
Automated assistants typically rely upon a pipeline of components in interpreting and responding to user requests. For example, an automatic speech recognition (ASR) engine can be used to process audio data that correspond to a spoken utterance, to generate a transcription (i.e., sequence of term(s) and/or other token(s)) of the user's utterance. However, in performing ASR, certain term(s) may be misrecognized. This misrecognition may be amplified when the user who provided the spoken utterance is located in a noisy environment (e.g., other user's conversing in the background, media playing in the background, and/or other ambient noises). As a result, the automated assistant may perform an action that was not intended by the user. This can cause the user to repeat the same spoken utterance (which may be misrecognized again) or cause the user to perform some other action, thereby prolonging the human-to-computer dialog and/or causing the user to consume additional computational resources beyond the human-to-computer dialog.
Beamforming is one technique utilized to filter audio data prior to the audio data being processed by an ASR engine or other acoustic-based engine. In beamforming, portions of the audio data from a desired source (e.g., the user who provided the spoken utterance) can be identified for inclusion in filtered audio data, while portions of the audio data from undesired source(s) (e.g., noise from the other user's conversing in the background, the media playing in the background, and/or the other ambient noises) can be removed from the filtered audio data. However, computing devices that employ these beamforming techniques are often located in dynamic environments with dynamic noise (e.g., the user's home, the user's office, and/or other locations). As a result, beamforming of audio data of these environments can result in the portions of the audio data from a desired source being removed from filtered audio data, while the portions of the audio data from the undesired source(s) being identified for inclusion in the filtered audio data.
Implementations disclosed herein are directed to initializing and utilizing a beamformer in processing of audio data received at a computing device. The computing device can receive audio data that captures a spoken utterance of a user. The spoken utterance can be captured by two or more microphones of the computing device. Further, the computing device can identify a first audio data segment of the audio data. In some implementations, the computing device can identify the first audio data segment in response to determining that the first audio data segment of the audio data includes one or more particular words or phrases (e.g., identify “Hey Assistant”, “Okay Assistant”, “Assistant”, etc. using a hotword detection model). In additional or alternative implementations, the computing device can identify the first audio data segment in response to determining the first segment of the audio data follows a particular invocation of an automated assistant at the computing device (e.g., identify an invocation gesture that is captured by one or more vision components of the computing device and that invokes an automated assistant using a hotword free invocation model, identify a button press at the computing device that invokes an automated assistant, etc.). Further, the computing device can obtain a preceding audio data segment that precedes the first audio data segment. The preceding audio data segment can be stored in an audio buffer of the computing device, and can capture ambient noise of an environment of the computing device immediately prior to the spoken utterance of the user being received. Moreover, the computing device can estimate a spatial correlation matrix based on the first audio data segment and based on the preceding audio data segment, initialize the beamformer based on the estimated spatial correlation matrix, and cause the initialized beamformer to be utilized in processing of at least a second audio data segment of the audio data that follows the first audio data segment.
For example, assume a user of a computing device provides a spoken utterance of “Hey Assistant, call Mom”. In this example, the computing device can process audio data capturing the spoken utterance to determine a first audio data segment includes one or more particular words or phrases (e.g., “Hey Assistant”). Further assume that the computing device stored, in an on-device audio buffer, at least a preceding audio data segment that includes audio data capturing ambient noise of an environment of the computing device immediately prior to receiving the spoken utterance (e.g., 1.5 seconds of audio data, 3.0 seconds of audio data, and/or segments of audio data of other durations). The ambient noise can correspond to, for example, other users in the environment of the computing device conversing, media (e.g., music, TV show, movie, etc.) playing in the environment of the computing device, and/or other ambient noises. The computing device can estimate the spatial correlation matrix based on the first audio segment and the preceding audio data segment. The estimated spatial correlation matrix can be used to “steer” the beamformer towards a source of the desired audio data (e.g., the user). This enables the beamformer to filter any additional audio data (e.g., at least the second audio data segment) prior to any subsequent processing by various acoustic-based machine learning (ML) models.
In some implementations, the computing device can determine a first audio segment spatial covariance associated with the first audio data segment, and can determine a preceding audio data segment spatial covariance associated with the preceding audio data segment. Further, the computing device can estimate the spatial correlation matrix based on the first audio segment spatial covariance and the preceding audio data segment spatial covariance. In other words, the computing device can determine a difference between the spatial covariance of the noisy audio data (e.g., the first audio data segment of the audio data) and the noise alone (e.g., the preceding audio data segment) for different audio channels of the computing device.
In some implementations, the computing device can determine a principal eigenvector of the estimated spatial correlation matrix, and can initialize a plurality of coefficients for the beamformer based on the principal eigenvector (or based on other characteristics of the spatial correlation matrix). For example, the computing device can process a first channel of at least the second audio data segment data using first coefficient(s), of the plurality of the coefficients, and the computing device can process a second channel of at least the second audio data segment using second coefficient(s), of the plurality of the coefficients. In this example, the first channel of at least the second audio data segment can be generated using a first microphone, of the two or more microphones, of the computing device, and the second channel of at least the second audio data segment can be generated using a second microphone, of the two or more microphones. In other words, the beamformer can be “steered” towards the source of the desired audio data (e.g., the user), such that audio data generated by multiple channels of the computing device can be filtered to include the desired audio data while reducing any undesired audio data.
In some implementations, the acoustic-based ML model that is utilized to process at least the second audio data segment can be an automatic speech recognition (ASR) model. In these implementations, the beamformer can be utilized to filter the second audio data segment, resulting in a filtered second audio data segment, and the computing device can process, using the ASR model, the filtered second audio data segment to generate one or more recognized terms corresponding to the second audio data segment (and optionally displaying a transcription of the one or more terms if the computing device includes a display). By processing the filtered second audio data segment (as opposed to the raw second audio data segment), ASR can be improved at the computing device, especially in noisy environments. The automated assistant can optionally perform one or more actions (e.g., “call Mom” from the above working example) based on the one or more terms. In some implementations, the acoustic-based ML model that is utilized to process at least the second audio data segment can be a speaker identification model. In these implementations, the beamformer can be utilized to filter the second audio data segment, resulting in a filtered second audio data segment, and the computing device can process, using the speaker identification model, the filtered second audio data segment to identify the user who provided the spoken utterance (e.g., “John Doe”), assuming a speaker embedding for the user is available at the client device. By processing the filtered second audio data segment (as opposed to the raw second audio data segment), speaker identification can also be improved at the computing device, especially in noisy environments. Further, and subsequent to the user being identified, the speaker embedding can be utilized, in addition to the beamformer, to filter audio data that originates from the desired source (e.g., the identified user). The above examples are merely provided for the sake of illustration, and it should be understood that the filtered audio data can be subsequently processed using any acoustic-based ML model.
In some additional or alternative implementations, one or more servers can be utilized in initiating the beamformer and/or utilizing the beamformer in processing at least the second audio data segment. For example, the audio data and the preceding audio data can be transmitted to one or more of the servers, and one or more of the servers can estimate the spatial correlation matrix to initialize the beamformer. In some examples, one or more of the servers can transmit the initialized beamformer back to the computing device. In additional or alternative examples, one or more of the servers can process at least the second audio data segment, and can transmit a filtered second audio data segment back to the computing device. In other additional or alternative examples, one or more of the servers can process the filtered second audio data segment to generate responsive content to the spoken utterance, and transmit the responsive content back to the computing device. However, implementations that include one or more of the servers can have various performance drawbacks (e.g., latency, network resource consumption, etc.).
Although techniques are described herein with respect to the computing device including only two microphones, it should be understood that is for the sake of example and is not meant to be limiting. For example, the computing device can include N microphones (where N is a positive integer of two or more), and the techniques described herein can be utilized to initialize and utilize the beamformer in the same or similar manner. However, in implementations where the computing device includes more than microphones, the estimated spatial correlation matrix may be of a larger size, and the plurality of coefficients used to initialize the beamformer may be greater in quantity. Nonetheless, the techniques described herein are scalable to N microphones and may result in further improvements in filtering of audio data when N is increased.
Moreover, although techniques are described herein with respect to simply initializing and utilizing the beamformer, it should be understood that is also for the sake of example and is not meant to be limiting. For example, the beamformer can be initialized as described herein at the beginning of a dialog session between the user of the computing device that provided the spoken utterance and the automated assistant. Further, the beamformer can be refined throughout the dialog session between the user and the automated assistant by re-estimating the spatial correlation matrix based on additional audio data that captures additional spoken utterances of the user and additional audio data that captures ambient noise of the environment of the computing device. Accordingly, the techniques described herein enable the user to move freely throughout the environment of the computing device during the dialog session with the automated assistant. Further, the techniques described herein enable the beamformer to be re-initialized when a subsequent dialog session between the user and the automated assistant is initiated.
By using the techniques described herein, various technical advantages can be achieved. As one non-limiting example, by initializing and utilizing the beamformer based on the estimated spatial correlation matrix, the beamformer can be adapted to various environments to filter noisy audio data. As a result, the acoustic-based ML model(s) that subsequently process the filtered audio data have greater precision and/or recall in processing the filtered noisy audio data. As another non-limiting example, by refining the estimated spatial correlation matrix throughout a dialog session (and for subsequent dialog sessions), the beamformer can be adapted to these various environments by filtering noisy audio data in a dynamic manner and by tracking a source of the desired audio data (e.g., the user). As a result, the beamformer can be dynamically “steered” towards the source of the audio data, such that resulting filtered audio data more accurately reflects spoken utterances of user(s). As another non-limiting example, by initializing and utilizing the beamformer locally at the computing device, latency in processing the audio data and/or obtaining responsive content to spoken utterances can be reduced and network resources can be conserved. Accordingly, by initializing and utilizing the beamformer according to techniques described herein, the computing device is improved.
The above description is provided as an overview of some implementations of the present disclosure. Further description of those implementations, and other implementations, are described in more detail below.
Although the computing device 110 depicted in
For the sake of example, assume the first user 101 provides a spoken utterance 152A of “Hey Assistant, call Mom”. Further assume that the first microphone 1811 and the second microphone 1811 (and any other microphones of the computing device 110) generate audio data 152B capturing the spoken utterance 152A. The detection engine 111 can process, using an on-device hotword model, the audio data 152A to determine whether the spoken utterance 152A includes one or more particular words and/or phrases that invoke or otherwise control an automated assistant executing at the computing device (e.g., “Hey Assistant”, “Assistant”, “Volume up”, “Stop”, and/or other words and/or phrases that can invoke or otherwise control an automated assistant). In response to the detection engine 111 determining that a first audio data segment 152B1 of the audio data 152B includes one or more of the particular words or phrases, the detection engine 111 can transmit the first audio data segment 152B1 to the estimation engine 112. In other words, the detection engine 111 can determine the spoken utterance includes one or more of words and/or phrases that invoke the automated assistant (e.g., “Hey Assistant” in the spoken utterance 152A), and can transmit the portion of the audio data 152B that captures one or more of words and/or phrases that invoke the automated assistant (e.g., the first audio data segment 152B1) to the estimation engine 112.
Moreover, in response to the detection engine 111 determining that a first audio data segment 152B1 of the audio data 152B includes one or more of the particular words or phrases, the computing device 110 can cause the audio buffer 182 to transmit a preceding audio data segment 162B to the estimation engine 112. In some implementations, the preceding audio data segment 162B can capture any ambient noises in the environment of the computing device 110 immediately prior to the first user 101 providing the spoken utterance 152A. In additional or alternative implementations, a statistical analysis of audio data stored in the audio buffer 182 can be performed (optionally on a delayed basis) until one or more of the particular words or phrases is detected, such that the preceding audio data segment 162B can be identified as one or more of the particular words or phrases is detected without having to go back to the audio buffer 182. For example, and as shown in the environment of
Although the working example of
For example, the first audio data segment 152B1 can include audio data captured between a first time and a second time that is subsequent to the timestamp associated with the invocation of the automated assistant, and the preceding audio data segment 162B can include audio data captured between a first time and a second time that is prior to the timestamp associated with the invocation of the automated assistant. In these examples, a duration of time between the first time and second time can be the same for identifying the first audio data segment 152B1 and the preceding audio data segment 162B (e.g., 1.5 seconds of audio data before the invocation corresponds to the preceding audio data segment 162B, and 1.5 seconds of audio data after the invocation corresponds to the first audio data segment 152B1). In additional or alternative examples, the duration of time between the first time and second time can differ for identifying the first audio data segment 152B1 and the preceding audio data segment 162B (e.g., 1.5 seconds of audio data before the invocation corresponds to the preceding audio data segment 162B, and 1.0 seconds of audio data after the invocation corresponds to the first audio data segment 152B1).
Although the above examples are provided with respect to times immediately before and immediately after the invocation of the automated assistant, it should be understood that is for the sake of example and is not meant to be limiting. For instance, there may be a buffer time period between these different time periods (e.g., a few hundred milliseconds or a second) to ensure the preceding audio data segment 162B captures ambient noise of the environment of
The estimation engine 112 can process the first audio data segment 152B1 and the preceding audio data segment 162B to estimate a spatial correlation matrix that measures a relationship between the different channels of audio data generated by the different microphones of the computing device 110. The estimated spatial correlation matrix can correspond to statistics relating to a desired source of the audio data 152B (e.g., the first user 101). In some implementations, the estimation engine 112 can generate a first audio data segment spatial covariance associated with the first audio data segment 152B1, and can generate a preceding audio data segment spatial covariance associated with the preceding audio data segment 162B. Further, the estimation engine 112 can estimate the spatial correlation matrix based on the first audio data segment spatial covariance and the preceding audio data segment spatial covariance. In some implementations, the estimation engine 112 can determine a principal eigenvector of the estimated spatial correlation matrix, and can utilize values associated with the principal eigenvector of the estimated spatial correlation matrix as a plurality of coefficients 112A. The estimation engine 112 can transmit the plurality of coefficients 112A to the beamformer engine.
The beamformer engine 113 can initialize a beamformer using the plurality of coefficients 112A. For example, the beamformer engine 113 can identify one or more first coefficients, of the plurality of coefficients 112A, to associated with a first channel of audio data (e.g., audio data generated by the first microphone 1811), one or more second coefficients, of the plurality of coefficients 112A, to associated with a second channel of audio data (e.g., audio data generated by the second microphone 1812), and so on for N channels of audio data (e.g., where N is a positive integer greater than two). The beamformer engine 113 can use the initialized beamformer to process any audio data generated by the two or more microphones of the computing device 110 during the dialog session. This can include, for example, the first audio data segment 152B1, a second audio data segment 152B2 of the audio data 152B that follows the first audio data segment 152B1 (e.g., capturing “call Mom”), and/or any additional audio data generated based on additional spoken utterances provided by the user. Accordingly, the beamformer can be “steered” towards the first user 101 that provided the spoken utterance 152A, such that resulting filtered audio data 152C includes audio data that captures one or more portions of the spoken utterance 152A and filters out or reduces any other audio data (e.g., that captures the ongoing conversation 162A).
Continuing with the example, the beamformer engine 113 can process at least the second audio data segment 152B2, using the beamformer, to generate the filtered audio data 152C. To generate the filtered audio data 152C, the beamformer can process a first channel of the second audio data segment 152B2 (e.g., generated using the first microphone 1811) using the one or more first coefficients, can process a second channel of the second audio data segment 152B2 (e.g., generated using the first microphone 1812) using the one or more second coefficients, and can process any additional respective channel of the second audio data segment 152B2 (e.g., generated using a respective one of the Nth microphones 181N) using one or more respective coefficients. The beamformer engine 113 can generate the filtered audio data 152C based on processing of the various channels of the second audio data segment 152B2 using the one or more respective coefficients associated with the various channels. Notably, in generating the filtered audio data 152C, the filtered channels of the second audio data segment 152B2 can be combined into a single channel. By combining the various filtered channels into the single channel for the filtered audio data 152C, consumption of network resources can be reduced if the filtered audio data 152C is transmitted away from the computing device 110.
The ML model engine 114 can process, using one or more acoustic-based ML models stored in the on-device memory 114A, the filtered audio data 152C to generate predicted output. For example, assume the on-device storage 114A includes an on-device automatic speech recognition (ASR) model. Further assume the ML model engine 114 processes, using the on-device ASR model, the filtered audio data 152C to generate one or more recognized terms for a portion of the spoken utterance 152A captured in the filtered audio data 152C. In this example, the one or more recognized terms can correspond to “call Mom” based on the spoken utterance 152A. In some implementations, a transcription of the one or more recognized terms can be visually rendered at the touchscreen display 180 of the computing device 110. As another example, assume the on-device storage 114A includes an on-device speaker identification model. Further assume the ML model engine 114 processes, using the on-device speaker identification model, the filtered audio data 152C to identify the first user 101 that provided the spoken utterance 152A (assuming a speaker embedding for the first user 101 is available to the computing device 110). By processing the filtered audio data 152C (rather than unfiltered audio data), precision and/or recall of the on-device acoustic-based models should be increased.
Moreover, the automated assistant can be controlled based on the processing of the spoken utterance 152A. For example, the automated assistant can initiate a telephone call with a contact entry “Mom” based on further processing of the spoken utterance 152A (e.g., based on output generated using natural language understanding (NLU) model(s) and/or fulfillment model(s)). The first user 101 can engage in a telephone conversation with “Mom” using the computing device 110, and additional audio data received at the computing device 110 can be processed using the beamformer engine 113 prior to being transmitted to an additional computing device associated with “Mom” using one or more voice communication protocols including, for example, Voice over Internet Protocol (VoIP), public switched telephone network (PSTN), and/or other telephonic communication protocols. Accordingly, any of the additional audio data transmitted to the additional computing device associated with “Mom” can be filtered such that any noises that do not originate from the first user 101 are removed from the additional audio data (e.g., the second user 102 and the third user 103 conversing and/or any other noises in the environment of the computing device 110).
In some implementations, the beamformer can be refined during the dialog session. The beamformer can be refined during the dialog session by updating the plurality of coefficients 112A based on additional audio data segments generated based on spoken utterances of the first user 101 and additional preceding audio data segments that capture ambient noises as described above. For example, the computing device 110 can cause an additional iteration of the process flow described with respect to
In additional or alternative implementations, the computing device 110 can be communicatively coupled with one or more servers 120 over one or more networks 199 as depicted in
By using the techniques described herein, various technical advantages can be achieved. As one non-limiting example, by initializing and utilizing the beamformer based on the estimated spatial correlation matrix, the beamformer can be adapted to various environments to filter noisy audio data. As a result, the acoustic-based ML model(s) that subsequently process the filtered audio data have greater precision and/or recall in processing the filtered noisy audio data. As another non-limiting example, by refining the estimated spatial correlation matrix throughout a dialog session (and for subsequent dialog sessions), the beamformer can be adapted to these various environments by filtering noisy audio data in a dynamic manner and by tracking a source of the desired audio data (e.g., the user). As a result, the beamformer can be dynamically “steered” towards the source of the audio data, such that resulting filtered audio data more accurately reflects spoken utterances of user(s). As another non-limiting example, by initializing and utilizing the beamformer locally at the computing device, latency in processing the audio data and/or obtaining responsive content to spoken utterances can be reduced and network resources can be conserved. Accordingly, by initializing and utilizing the beamformer according to techniques described herein, the computing device is improved.
Turning now to
At block 252, the system receives audio data that captures a spoken utterance of a user. The audio data can be generated by two or more microphones of a computing device of the user. For example, first channel audio data can be generated using a first microphone, of the two or more microphones, and second channel audio data can be generated using a second microphone, of the two or more microphones. The audio data can be generated based on a combination of the first channel audio data and the second channel audio data.
At block 254, the system determines, based on processing the audio data, that a first audio data segment of the audio data includes one or more particular words and/or phrases. For example, the system can process, using a hotword detection model, the audio data to determine that the first audio data segment includes one or more particular words and/or phrases that invoke or otherwise control an automated assistant (e.g., “Hey Assistant”, “Assistant”, “Volume up”, “Stop”, and/or other words and/or phrases that can invoke or otherwise control an automated assistant). In other implementations, the system can identify the first audio data segment based on the first audio data segment being generated immediately after an automated assistant is otherwise invoked. For example, the automated assistant can additionally or alternatively be invoked via one or more gestures captured by vision component(s) of the computing device, via a button press (e.g., hardware or software button), via a squeeze of the computing device, and/or in other manners.
At block 256, the system obtains a preceding audio data segment that precedes the first audio data segment. The preceding audio data segment can be obtained from an audio buffer of the computing device. Further, the preceding audio data segment can capture ambient noise in the environment of the computing device, such as multiple users conversing in the environment (e.g., described with respect to the users 102 and 103 of
At block 258, the system estimates, based on the first audio data segment and based on the preceding audio data segment, a spatial correlation matrix. For example, and as indicated at sub-block 258A, the system can determine a first audio data segment spatial covariance associated with the first audio data segment. Further, and as indicated at sub-block 258B, the system can determine a preceding audio data segment spatial covariance associated with the preceding audio data segment. Moreover, and as indicated at sub-block 258C, the system can estimate the spatial covariance matrix based on a difference between the first audio data segment spatial covariance and the preceding audio data segment spatial covariance. In other words, the estimated spatial covariance matrix can be determined based on differences in the first audio data segment and the preceding audio data segment for the various channels that capture the first audio data segment and the preceding audio data segment.
At block 260, the system initializes, based on the estimated spatial covariance matrix, a beamformer. For example, and as indicated at sub-block 260A, the system can determine a principal eigenvector of the estimated spatial covariance matrix. Further, and as indicated at sub-block 260B, the system can initialize, based on the principal eigenvector, a plurality of coefficients for the beamformer. For instance, the system can initialize a first channel of the computing device with one or more first coefficients, of the plurality of coefficients, and the system can initialize a second channel of the computing device with one or more second coefficients, of the plurality of coefficients. The number of channels of the computing device may be directly proportional to the quantity of microphones of the computing device, and each of the respective channels may be associated with one or more respective coefficients determined based on the estimated spatial correlation matrix. Although block 260 is described with respect to initializing the plurality of coefficients for the beamformer based on the principal eigenvector of the estimated spatial correlation matrix, it should be understood that is for the sake of example and is not meant to be limiting. For example, the plurality of coefficients for the beamformer can be initialized based on other characteristics of the spatial correlation matrix.
At block 262, the system causes the beamformer to be utilized in processing at least a second audio data segment of the audio data, the second audio data segment including one or more terms that follow the one or more particular words and/or phrases. In some implementations, the system additionally causes the beamformer to be utilized in processing the first audio data segment. By utilizing the beamformer in processing of at least the second audio data segment, the beamformer can generate at least a filtered second audio data segment. The system can cause one or more acoustic-based machine learning (ML) models to further process the filtered second audio data segment (e.g., an automatic speech recognition (ASR) model, a speaker identification model, a continued conversation model, an end pointing model, and/or other acoustic-based ML models).
At block 264, the system determines whether additional audio data is received at the computing device. If, at an iteration of block 264, the system determines that additional audio data is received at the computing device, the system returns to block 262 and causes the beamformer to be utilized in processing at least the additional audio data that is received at block 264. Notably, the additional audio data that is received at block 264 corresponds to additional audio data received during the same dialog session between the user and an automated assistant that the audio data was received at block 252. Further, although the method 200 of
Although the method 200 of
Turning now to
Computing device 310 typically includes at least one processor 314 which communicates with a number of peripheral devices via bus subsystem 312. These peripheral devices may include a storage subsystem 324, including, for example, a memory subsystem 325 and a file storage subsystem 326, user interface output devices 320, user interface input devices 322, and a network interface subsystem 316. The input and output devices allow user interaction with computing device 310. Network interface subsystem 316 provides an interface to outside networks and is coupled to corresponding interface devices in other computing devices.
User interface input devices 322 may include a keyboard, pointing devices such as a mouse, trackball, touchpad, or graphics tablet, a scanner, a touchscreen incorporated into the display, audio input devices such as voice recognition systems, microphones, 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 ways to input information into computing device 310 or onto a communication network.
User interface output devices 320 may include a display subsystem, a printer, a fax machine, or non-visual displays such as audio output devices. The display subsystem may include a cathode ray tube (CRT), a flat-panel device such as a liquid crystal display (LCD), a projection device, or some other mechanism for creating a visible image. The display subsystem may also provide non-visual display such as via audio output devices. In general, use of the term “output device” is intended to include all possible types of devices and ways to output information from computing device 310 to the user or to another machine or computing device.
Storage subsystem 324 stores programming and data constructs that provide the functionality of some or all of the modules described herein. For example, the storage subsystem 324 may include the logic to perform selected aspects of the methods disclosed herein, as well as to implement various components depicted in
These software modules are generally executed by processor 314 alone or in combination with other processors. Memory 325 used in the storage subsystem 324 can include a number of memories including a main random access memory (RAM) 330 for storage of instructions and data during program execution and a read only memory (ROM) 332 in which fixed instructions are stored. A file storage subsystem 326 can provide persistent storage for program and data files, and may include a hard disk drive, a floppy disk drive along with associated removable media, a CD-ROM drive, an optical drive, or removable media cartridges. The modules implementing the functionality of certain implementations may be stored by file storage subsystem 326 in the storage subsystem 324, or in other machines accessible by the processor(s) 314.
Bus subsystem 312 provides a mechanism for letting the various components and subsystems of computing device 310 communicate with each other as intended. Although bus subsystem 312 is shown schematically as a single bus, alternative implementations of the bus subsystem may use multiple busses.
Computing device 310 can be of varying types including a workstation, server, computing cluster, blade server, server farm, or any other data processing system or computing device. Due to the ever-changing nature of computers and networks, the description of computing device 310 depicted in
In situations in which the systems described herein collect or otherwise monitor personal information about users, or may make use of personal and/or monitored information), the users may be provided with an opportunity to control whether programs or features collect user information (e.g., information about a user's social network, social actions or activities, profession, a user's preferences, or a user's current geographic location), or to control whether and/or how to receive content from the content server that may be more relevant to the user. Also, certain data may be treated in one or more ways before it is stored or used, so that personal identifiable information is removed. For example, a user's identity may be treated so that no personal identifiable information can be determined for the user, or a user's geographic location may be generalized where geographic location information is obtained (such as to a city, ZIP code, or state level), so that a particular geographic location of a user cannot be determined. Thus, the user may have control over how information is collected about the user and/or used.
In some implementations, a method performed by one or more processors of a client device is provided and includes receiving audio data that captures a spoken utterance of a user, the audio data being generated by two or more microphones of a computing device of the user; determining, based on processing the audio data, that a first audio data segment of the audio data includes one or more particular words or phrases; obtaining a preceding audio data segment that precedes the first audio data segment, the preceding audio data segment being generated by the two or more microphones of the computing device; estimating, based on the first audio data segment and based on the preceding audio data segment, a spatial correlation matrix; initializing, based on the estimated spatial correlation matrix, a beamformer; and causing the beamformer to be utilized in processing of at least a second audio data segment of the audio data, the second audio data segment including one or more terms that follow the one or more particular words or phrases.
These and other implementations of the technology can include one or more of the following features.
In some implementations, estimating the spatial correlation matrix based on the first audio data segment and based on the preceding audio data segment can include determining a first audio data segment spatial covariance associated with the first audio data segment; determining a preceding audio data segment spatial covariance associated with the preceding audio data segment; and estimating the spatial covariance matrix based on a difference between the first audio data segment spatial covariance and the preceding audio data segment spatial covariance.
In some implementations, initializing the beamformer based on the estimated spatial correlation matrix can include determining a principal eigenvector of the estimated spatial correlation matrix; and initializing, based on the principal eigenvector, a plurality of coefficients for the beamformer.
In some versions of those implementations, causing the beamformer to be utilized in processing of the second audio data segment can include processing, using the beamformer and based on the plurality of coefficients for the beamformer, the second audio data segment to generate a filtered second audio data segment; and processing, using an acoustic machine learning (ML) model, the filtered second audio data segment to generate predicted output associated with the one or more terms.
In some further versions of those implementations, processing the second audio data segment to generate the filtered second audio data segment using the beamformer and based on the plurality of coefficients for the beamformer can include processing, using one or more first coefficients, of the plurality of coefficients for the beamformer, a first channel of the second audio data segment to generate a first channel of the filtered second audio data segment, the first channel of the second audio data segment being generated by a first microphone of the two or more microphones; processing, using one or more second coefficients, of the plurality of coefficients for the beamformer, a second channel of the second audio data segment to generate a channel of the filtered second audio data segment, the second channel of the second audio data segment being generated by a second microphone of the two or more microphones; and generating, based on the first channel of the filtered second audio data segment and based on the second channel of the filtered second audio data segment, the filtered second audio data.
In additional or alternative versions of those further implementations, the acoustic ML model can be an automatic speech recognition (ASR) model, and processing the filtered second audio data segment to generate the predicted output can include processing, using the ASR model, the filtered second audio data segment to generate one or more recognized terms corresponding to the one or more terms. In yet further versions of those implementations, determining that the first audio data segment includes one or more of the particular words or phrases can include processing, using a hotword detection model, the audio data to determine the first segment audio data includes one or more of the particular words or phrases. In even yet further versions of those implementations, one or more of particular words or phrases can invoke an automated assistant, and the automated assistant can perform an automated assistant action based on the one or more recognized terms. In additional or alternative versions of those yet further implementations, the method can further include causing a transcription of the spoken utterance to be visually rendered for presentation to the user via a display of the computing device, wherein the transcription of the spoken utterances includes the one or more recognized terms.
In additional or alternative versions of those further implementations, the acoustic ML model can be a speaker identification model, and processing the filtered second audio data segment to generate the predicted output can include processing, using the speaker identification model, the filtered second audio data segment to identify the user that provided the spoken utterance.
In some implementations, the method can further include receiving additional audio data that captures an additional spoken utterance of the user, the additional audio data being generated by two or more microphones of a computing device of the user, and the additional audio data that captures the additional spoken utterance of the user being received subsequent to receiving the audio data that captures the spoken utterance of the user; processing, using the beamformer, the additional audio data to generate filtered additional audio data; and transmitting, over one or more networks, the filtered additional audio data to an additional computing device of an additional user.
In some implementations, the preceding audio data segment can be obtained from an audio data buffer. In some versions of those implementations, the preceding audio data segment can capture ambient noise of an environment of the computing device of the user.
In some implementations, the one or more processors can be executed locally at the computing device of the user.
In some implementations, a computing device is provided and includes at least one processor; at least two microphones; and memory storing instructions that, when executed, cause the at least one processor to: receive audio data that captures a spoken utterance of a user of the computing device, the audio data being generated by the at least two microphones of the computing device of the user; and identify, based on processing the audio data, a first audio data segment of the audio data. The instructions to identify that the first audio data segment of the audio data include instructions to: identify the first audio data segment of the audio data based on determining the first audio data segment of the audio data follows an invocation of an automated assistant at the computing device. The instructions further cause the at least one processor to: obtain a preceding audio data segment that precedes the first audio data segment, the preceding audio data segment being generated by the at least two microphones of the computing device; estimate, based on the first audio data segment and based on the preceding audio data segment, a spatial correlation matrix; initialize, based on the estimated spatial correlation matrix, a beamformer; and cause the beamformer to be utilized in processing of at least a second audio data segment of the audio data.
These and other implementations of the technology can include one or more of the following features.
In some implementations, the instructions to estimate the spatial correlation matrix based on the first audio data segment and based on the preceding audio data segment can include instructions to: determine a first audio data segment spatial covariance associated with the first audio data segment; determine a preceding audio data segment spatial covariance associated with the preceding audio data segment; and estimate the spatial covariance matrix based on a difference between the first audio data segment spatial covariance and the preceding audio data segment spatial covariance.
In some implementations, the instructions to initialize the beamformer based on the estimated spatial correlation matrix can include instructions to initialize, based on the estimated spatial correlation matrix, a plurality of coefficients of the beamformer. In some versions of those implementations, the instructions to cause the beamformer to be utilized in processing of the second audio data segment can include instructions to: process, using the beamformer and based on the plurality of coefficients for the beamformer, the second audio data segment to generate a filtered second audio data segment; and process, using an acoustic machine learning (ML) model, the filtered second audio data segment to generate predicted output associated with the one or more terms. In some further versions of those implementations, the instructions to process the second audio data segment to generate the filtered second audio data segment using the beamformer and based on the plurality of coefficients for the beamformer can include instructions to: process, using one or more first coefficients, of the plurality of coefficients for the beamformer, a first channel of the second audio data segment to generate a first channel of the filtered second audio data segment, the first channel of the second audio data segment being generated by a first microphone of the two or more microphones; process, using one or more second coefficients, of the plurality of coefficients for the beamformer, a second channel of the second audio data segment to generate a channel of the filtered second audio data segment, the second channel of the second audio data segment being generated by a second microphone of the two or more microphones; and generate, based on the first channel of the filtered second audio data segment and based on the second channel of the filtered second audio data segment, a single channel of the filtered second audio data segment as the filtered second audio data segment.
In some implementations, a non-transitory computer-readable storage medium storing instructions locally at a computing device is provided, and the instructions, when executed, cause at least one processor to: receive audio data that captures a spoken utterance of a user of the computing device, the audio data being generated by at least two microphones of the computing device of the user; determine, based on processing the audio data, that a first audio data segment of the audio data includes one or more particular words or phrases; obtain a preceding audio data segment that precedes the first audio data segment, the preceding audio data segment being generated by the at least two microphones of the computing device; estimate, based on the first audio data segment and based on the preceding audio data segment, a spatial correlation matrix; initialize, based on the estimated spatial correlation matrix, a beamformer; and cause the beamformer to be utilized in processing of at least a second audio data segment of the audio data, the second audio data segment including one or more terms that follow the one or more particular words or phrases.
Various implementations can include a non-transitory computer readable storage medium storing instructions executable by one or more processors (e.g., central processing unit(s) (CPU(s)), graphics processing unit(s) (GPU(s)), digital signal processor(s) (DSP(s)), and/or tensor processing unit(s) (TPU(s)) to perform a method such as one or more of the methods described herein. Other implementations can include a client device (e.g., a client device including at least an automated assistant interface for interfacing with cloud-based automated assistant component(s)) that includes processor(s) operable to execute stored instructions to perform a method, such as one or more of the methods described herein. Yet other implementations can include a system of one or more servers that include one or more processors operable to execute stored instructions to perform a method such as one or more of the methods described herein.