As the processing power available to devices and associated support services continues to increase, it has become practical to interact with users through speech. For example, various types of devices may generate speech or render other types of audio content for a user, and the user may provide commands and other input to the device by speaking.
In a device that produces sound and that also captures a user's voice for speech recognition, acoustic echo cancellation (AEC) techniques are used to remove device-generated sound from microphone input signals. The effectiveness of AEC in devices such as this is an important factor in the ability to recognize user speech in received microphone signals.
The detailed description is described with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different figures indicates similar or identical components or features.
A distributed voice controlled system may be used to interact with a user through speech, including user speech and device generated speech. In certain embodiments, the distributed voice controlled system may have a primary assistant and one or more secondary assistants. The primary assistant has a microphone for capturing input audio and a speaker for generating output audio. The input audio may include user speech and other environmental audio. The output audio may include machine-generated speech, music, spoken word, or other types of audio.
The secondary assistant has a microphone that may be used to supplement the capabilities of the primary assistant by capturing user speech or other environmental audio signals from a different location than the primary assistant. The distributed voice controlled system may utilize the audio captured by either or both of the primary and secondary assistants to recognize, interpret, and respond to speech uttered by the user and/or the other environmental audio signals.
The microphone of the secondary assistant produces an analog signal that is converted to a digital input signal comprising a series of signal values that are generated and provided at a nominal signal rate. The signal rate of the input signal corresponds to the number of signal values that occur during a given time period. For example, the signal rate of the input signal may be 48 kHz, meaning that the input signal is represented by 48,000 signal values per second.
The secondary assistant may be configured to perform acoustic echo cancellation (AEC) to remove components of the speaker-generated output audio from the input signal of the secondary assistant. The AEC is based on a digital reference signal provided by the primary assistant. Similar to the input signal, the reference signal comprises a series of signal values that are generated and provided at a nominal signal rate. The AEC is most effective when the reference signal has the same signal rate as the input signal of the secondary assistant. To achieve this, the primary and secondary assistants may use signaling clocks of the same frequency, so that the reference signal and the input signal of the secondary assistant have the same signal rates. In real-world situations, however, the frequencies of the clocks may drift independently over time. Accordingly, the reference signal and the input signal may not have exactly the same signal rates.
To achieve signal rate synchronization at the secondary assistant, the primary and secondary assistants use respective signal clocks having the same nominal frequencies. A counter in the primary assistant is responsive to the signal clock of the primary assistant to produce a reference index. A counter in the secondary assistant is responsive to the signal clock of the secondary assistant to produce an input index. The reference signal is provided to the secondary assistant in groups or frames of signal values, accompanied by a current value of the reference index. Upon receiving a frame of the reference signal values and the corresponding value of the reference index, the secondary assistant records the current value of its input index. Differences between corresponding values of the reference index and the input index are analyzed over time to determine a time-averaged signal rate difference between the reference signal and the input signal. Based on the signal rate difference, samples are added to the input signal or subtracted from the microphone input signal at the secondary assistant so that the signal rate of the microphone input signal matches the signal rate of the reference signal.
In this illustration, the primary voice controlled assistant 102 is physically positioned on a table within the environment 106. The primary voice controlled assistant 102 is shown sitting upright and supported on its base end. The secondary assistant 104 is placed on a cabinet or other furniture and physically spaced apart from the primary assistant 102. In other implementations, the primary assistant 102 and secondary assistant 104 may be placed in any number of locations (e.g., ceiling, wall, in a lamp, beneath a table, on a work desk, in a hall, under a chair, etc.). When in the same room, the two assistants 102 and 104 may be placed in different areas of the room to provide greater coverage of the room. Although only one secondary assistant 104 is illustrated, there may be any number of secondary assistants as part of the system 100.
The assistants 102 and 104 are configured to communicate with one another via one or more wireless networks or other communications media 110, such as Bluetooth, Ethernet, Wi-Fi, Wi-Fi direct, or the like. Each of the voice controlled assistants 102 and 104 is also communicatively coupled to cloud services 112 over the one or more networks 110. In some cases, the primary assistant 102 and the secondary assistant 104 may utilize local communications such as Bluetooth or local-area network connections for communications with each other. Furthermore, the secondary assistant 104 may communicate with the cloud services 112 through the primary assistant 102.
The cloud services 112 may host any number of applications that can process user input received from the voice controlled system 100 and produce suitable responses. Example applications might include web browsing, online shopping, banking, bill payment, email, work tools, productivity, entertainment, educational, and so forth.
In
The user 108 may also speak in the direction toward the primary assistant 102, which may also have one or more acoustic-to-electric transducers or sensors (e.g., microphones) to capture user speech and other audio. The cloud services may respond to an input from assistants 102 and/or 104.
In response to the spoken query 114, the system 100 may provide a speech response 116. The speech response 116 may be generated by the primary assistant 102, which may have one or more speakers to generate sound. In this example, the speech response 116 indicates, in response to the spoken query 114, that the weather is “64 degrees, sunny and clear.”
Functionally, one or more audio streams may be provided from the assistants 102 and/or 104 to the cloud services 112. The audio provided by the microphones of the assistants 102 and 104 may be processed by the cloud services 112 in various ways to determine the meaning of the spoken query 114 and/or the intent expressed by the spoken query 114. For example, utilizing known techniques, the cloud services may implement automated speech recognition (ASR) 118 to identify a textual representation of user speech that occurs within the audio. The ASR 118 may be followed by natural language understanding (NLU) 120 to determine the intent of the user 108. The cloud services 112 may also have command execution functionality 122 to compose and/or implement commands in fulfilment of determined user intent. Such commands may be performed by the cloud services 112 either independently or in conjunction with the primary assistant 102, such as by generating audio that is subsequently rendered by the primary assistant 102. In some cases, the cloud services may generate a speech response, such as the speech response 116, which may be sent to and rendered by the primary assistant 102.
The distributed voice controlled system 100 allows the user 108 to interact with local and remote computing resources predominantly through speech. By placing the primary assistant 102 and one or more secondary assistants 104 throughout the environment 106, the distributed voice controlled system 100 enables the user 108 to move about his or her home and interact with the system 100. With multiple points from which to receive speech input, the audio speech signals can be detected and received more efficiently and with higher quality, minimizing the problems associated with location and orientation of the speaker relative to the audio input devices.
Each of the assistants 102 and 104 may be configured to perform acoustic echo cancellation (AEC) with respect the audio signals produced by their microphones. Acoustic echo cancellation (AEC) is performed to remove or suppress components of any output audio that is produced by the speaker of the primary assistant 102.
The reference signal 202 is a digital signal, comprising a sequence of reference signal values or samples. The reference signal values are provided at a rate that is referred to as a reference signal rate or reference sample rate. In the described embodiment, the nominal reference signal rate is 48 kHz, meaning that 48,000 signal values are generated and provided every second. However, other signal rates may also be utilized.
The primary assistant 102 has a microphone 204 and a speaker 206. The speaker 206 produces output audio in response to an audio source 208. The audio source 208 may comprise an audio stream, which may be provided from the cloud services 112, from a local file or data object, or from another local or remote source.
The microphone 204 creates an internal microphone signal 210 that is received and processed by an AEC component 212, also referred to herein as an acoustic echo canceller 212. The AEC component 212 performs acoustic echo cancellation based on a reference signal 214 corresponding to the audio source 208. The resulting echo-cancelled microphone signal 216 may in turn be provided to the cloud services 112 for speech recognition, language understanding, and command implementation. Alternatively, speech recognition, language understanding, and command implementation may in some embodiments be performed by the primary assistant itself.
The reference signal 202 may be provided to the secondary assistant 104 in groups or frames 218 of reference signal values 220. Each frame 218 is accompanied by a reference index value 222. The reference index value 222 is the current or most recent value of a reference index that is maintained by the primary assistant 102 to indicate a count of signal clock cycles at the primary assistant. The nature and use of the reference index value 222 will be explained in more detail below, with reference to
The secondary assistant 104 has a microphone 224 that provides an input audio signal 226. An AEC component 228, also referred to as an acoustic echo canceller 228, receives the input audio signal 226 and the reference signal 202 and performs echo cancellation to suppress or remove components of output audio from the input audio signal 226. The resulting echo-canceled microphone input signal 230 may in turn be provided to the cloud services 112 for speech recognition, language understanding, and command implementation. In some cases, the echo-canceled microphone signal 230 may be provided to the primary assistant 102, which may in turn provide the microphone signal 230 to the cloud-based services.
The AEC component 310 receives the output signal 304, referred to as a reference signal in the AEC environment, which represents the output audio. The AEC component 310 has an adaptive finite impulse response (FIR) filter 316 and a subtraction component 318. The FIR filter 316 generates an estimated echo signal 320, which represents one or more components of the output signal 304 that are present in the input signal 308. The estimated echo signal 320 is subtracted from the input signal 308 by the subtraction component 318 to produce the echo-cancelled signal 312.
The FIR filter 316 estimates echo components of the input signal 308 by generating and repeatedly updating a sequence of filter parameters or coefficients that are applied to the reference signal 304 by the FIR filter 316. The adaptive FIR filter 316 calculates and dynamically updates the coefficients so as to continuously and adaptively minimize the signal power of the echo-cancelled input signal 312, which is referred to as an “error” signal in the context of adaptive filtering.
Referring again to
The primary assistant 102 may have a digital-to-analog converter (DAC) 402 that produces an analog speaker signal 404 based on a digital output signal 406 received from the audio source 208. The primary assistant 102 may also have an analog-to-digital converter (ADC) 408 that produces a digital microphone input signal 410 based on an analog signal 412 received from the microphone 204. The digital microphone input signal 410 is provided to the AEC component 212. The AEC component 212 performs AEC based on the output signal 406, which acts as a reference signal for the AEC. The AEC component 212 produces the echo-cancelled microphone input signal 216, which may be provided to speech recognition and understanding components 414. The speech recognition and understanding components 414 are implemented by the cloud services 112 in the described embodiment, although they may alternatively be implemented by one or both of the assistants 102 and 104.
The reference signal 202 is provided to the secondary assistant 104 as described above. In this example, the reference signal 202 may comprise or be derived from the digital output signal 406.
The primary assistant 102 has a signal clock 416 that establishes the signal rates of the various digital signals such as the output signal 406, the digital microphone input signal 410, the echo-cancelled microphone input signal 216, and the reference signal 202. More specifically, the signal clock 416 generates a reference clock signal 418 having clock cycles that repeat at a reference signal rate. The audio source 208, the DAC 402, and the ADC 408 are responsive to the reference clock signal 418, and therefore generate the output signal 406, the digital microphone input signal 410, the echo-cancelled microphone input signal 216, and the reference signal 202 at a the reference signal rate. In the described embodiment, the nominal reference signal rate is 48 kHz.
The primary assistant 102 may also have a digital counter 420 that produces a reference index 422 having a value that increases in response to cycles of the clock signal 418. The digital counter 420 may in some embodiments comprise a register that contains the index value. The counter 420 receives the clock signal 418 and increments the index value in response to each cycle of the clock signal 418.
The primary assistant 102 periodically and/or repeatedly provides the current value of the reference index 422 to the secondary assistant 104. For example, as illustrated in
The secondary assistant 104 has an ADC 424 that produces a digital microphone input signal 426 based on an analog signal 428 received from the microphone 224. More specifically, the ADC 424 converts the analog microphone signal 428 to a digital signal 426 representing the input audio at an input signal rate.
The AEC component 228 of the secondary assistant 104 receives the microphone input signal 426 and also receives the reference signal 202 from the primary assistant 102. The ACE component 228 performs AEC on the microphone input signal 426 to produce the echo-cancelled microphone input signal 230, which may be provided to the primary assistant 102 and/or to the speech recognition and understanding components 414.
The secondary assistant 104 has a signal clock 430 that establishes the input signal rate of the digital microphone input signal 426. More specifically, the clock 430 generates an input clock signal 432 having clock cycles that repeat at an input signal rate. The ADC 424 is responsive to the clock signal and therefore produces the digital microphone input signal 426 at the input signal rate established by the frequency of the clock signal 432.
In certain embodiments, the clock signal 432 of the secondary assistant 104 and the clock signal 418 of the primary assistant 102 have the same nominal frequencies, which in the described embodiment is 48 kHz. However, the clocks 416 and 430 may drift slightly over time and may therefore exhibit slightly different rates. Furthermore, the differences between the rates of the clock signal 432 and the clock signal 418 may vary with time.
The secondary assistant 104 may have a digital counter 434 that produces an input index 436 based at least in part on the input signal rate. More specifically, the digital counter 434 counts cycles or multiples of cycles of the clock signal 432 to produce the input index 436. The input index 436 has a value that increases monotonically in response to cycles of the clock signal 432. In some embodiments, the digital counter 434 may increment the value of the input index 436 in response to each cycle of the clock signal 432. For example, in response to a clock cycle the value of the input index 436 may be incremented from a value N to a value N+1. In other embodiments, the input index 436 may be incremented by one after every M clock cycles. As a specific example, the value of the input index 436 may comprise a sequence N, N+1, N+2, . . . .
The secondary assistant 104 may also have a rate corrector or rate adjustment components that are configured to adjust the rates or one or both of the reference signal 202 and the microphone input signal 426 so that the rates of the reference signal 202 and the microphone input signal 426 are approximately the same. The rate adjustment components may include a rate difference calculator 438 that is configured to compare the values of the reference index 422 and the input index 436 over time to determine a rate difference between the clocks 416 and 430 of the primary and secondary assistants 102 and 104. The rate adjustment components may also include a rate converter 440 corresponding to either or both of the reference signal 202 and microphone input signal 426. The rate converters 440 are responsive to the rate difference calculator to process the microphone input signal 426 and/or the reference signal 202 to correct for any signal rate difference detected by the rate difference calculator 438.
The rate difference calculator 438 determines the rate difference between the clocks 416 and 430 by comparing differences between the current values of the reference index and the input index over time. If both of the clocks 416 and 430 are running at exactly the same frequency, the difference between the values of the reference index and the input index over time will remain constant. If the clock 430 of the secondary assistant 104 is running at a slightly different frequency than the frequency of the clock 416 of the primary assistant 102, however, the difference between the values of the reference index 422 and the input index 436 will change over time.
Upon receiving each reference index value 222, the rate difference calculator 438 notes or records a corresponding current value of the input index and calculates the difference between the reference and input index values. This results in an index value difference corresponding to each received reference index value. In
The dashed line 502 indicates the smoothed or time-averaged differences over time. The slope of the line 502 indicates the rate of change of the differences. In this example, the difference does not remain constant. Rather, the line 502 has a positive slope indicating a positive rate of change of the difference. In other words, the input index is increasing at a higher rate than the reference index. This means that the input clock signal 432 is running at a higher rate than the reference clock signal 418, and that the input signal rate is greater than the reference signal rate.
A dashed line 602 indicates an average slope of the reference versus input index values. If the reference index and the input index change at the same rate, the slope will be equal to 1. If the input index changes more slowly than the reference index, the slope will be less than 1. If the input index changes more quickly than the reference index, the slope will be greater than 1. In the example shown by
The lines 502 and 602 can be calculated by linear regression, based on corresponding reference and input index values accumulated over a relatively long time frame, such as several minutes. In some cases, filtering may be applied to the streams of reference and input index values to speed convergence. For example, low pass filters may be applied to the streams of index values, and/or outlying data points may be discarded.
A rate difference between the reference signal rate and the index signal rate may be calculated based on the slopes of either of the lines 502 and 602. The rate difference may be calculated in terms of values per million, for example. A rate different of 5 values per million indicates that 5 values need to be added to or subtracted from the digital microphone input signal 426 over the course of a million signal values in order to make the signal rate of the digital microphone input signal 426 equal to the signal rate of the reference signal 202.
Returning again to
In certain embodiments, the secondary assistant 104 may have a first rate converter 440(a) corresponding to the microphone input signal 426 and a second rate converter 440(b) corresponding to the reference signal 202. Each of the rate converters 440(a) and 440(b) may be configured to remove values from the corresponding signal based on rate differences calculated by the rate difference calculator 438 with the goal of reducing differences between the signal rates of the microphone input signal 426 and reference signal 202. More specifically, the first rate converter 440(a) may remove or drop values from the microphone input signal 426 when the signal rate of the microphone input signal 426 is greater than the signal rate of the reference signal 202. The second rate converter 440(b) may remove or drop values from the reference signal 202 when the signal rate of the microphone input signal 426 is less than the signal rate of the reference signal 202.
In other embodiments, the secondary assistant 104 may have only one of first and second rate converters 440(a) or 440(b). In these embodiments, the single rate converter may be configured to either insert values into the corresponding signal or to remove values from the corresponding signal, depending on which of the signals has a higher signal rate.
For example, one embodiment may use only the rate converter 440(a), which may be configured to insert values into the microphone input signal 426 when the input signal rate is less than the reference signal rate and to remove values from the corresponding signal when the input signal rate is greater than the reference signal rate. Alternatively, the single rate converter 440(b) may be used to add or subtract values of the reference signal 202 in response to a difference in the time-averaged signal rates of the microphone input signal 426 and the reference signal 202.
An action 704 comprises generating reference clock cycles at a first signal rate to form a reference clock signal. An action 706 comprises counting the reference clock cycles to produce a reference index. The value of the reference index may increase with each reference clock cycle or with each multiple of reference clock cycles.
An action 708 comprises producing or generating a reference signal that represents the output audio at the first signal rate. An action 710 comprises providing the reference signal to a second device such as the secondary assistant 104. An action 712 comprises periodically and/or repeatedly providing a current value of the reference index to the second device. As described above, the reference signal may be provided as sequential frames of reference signal values, and the current value of the reference index may be provided with each reference signal frame.
An action 804 comprises generating input clock cycles at a second signal rate to form an input clock signal. An action 806 comprises counting the input clock cycles to produce an input index. The value of the input index may increase with each reference clock cycle or with each multiple of reference clock cycles.
In the described embodiment, the first and second signal rates are nominally the same, subject to independent rate drift. In other embodiments, the nominal first and second signal rates be different from each other by a known factor or multiplier, again subject to independent rate drift.
In certain embodiments, both of the first and second devices may utilize similar components and may have processors that operate based on processor clock signals of the same frequency. Signal rates may be established by the processor clock frequency, while the reference and input indexes are also based on the processor clock signals.
An action 808 comprises producing, obtaining, or receiving a digital input audio signal representing the input audio captured in the action 802. The input audio signal may be generated by an ADC component that is clocked by the input clock signal, so that the input audio signal has an input signal rate that is equal to the second signal rate.
An action 810 comprises periodically and/or repeatedly receiving the reference signal that is provided from the first device at a reference signal rate. An action 812 comprises periodically and/or repeatedly receiving the current value of the reference index from the second device. The actions 810 and 812 may comprise periodically and/or repeatedly receiving reference frames from the first device, wherein each reference frame comprises multiple reference signal values and a corresponding value of the reference index.
A pair of actions 814 and 816 are performed in response to receiving the current value of the reference index. The action 814 comprises obtaining the current value of the input index, which is then associated with the received current value of the reference index. The action 816 comprises comparing the current values of the reference and input indexes to determine whether the current value of the reference index is changing at a higher rate then the corresponding current value of the input index or whether the current value of the reference index is changing at a lower rate than the corresponding current value of the input index.
More specifically, the action 816 may comprise comparing the current values of the reference and input indexes to determine a rate difference. The rate difference is the difference between the first signal rate and the second signal rate or the difference between the signal rates of the reference and microphone input signals.
The action 816 may be performed by comparing the rate of change of the reference index and the rate of change of the input index based at least in part on the repeatedly provided current value of the reference index and the corresponding current value of the input index. In certain embodiments, the comparing may comprise averaging differences between changes in the repeatedly received current value of the reference index and changes in the corresponding current values of the input index. In certain embodiments, the comparing may comprise performing a linear regression analysis of the provided current value of the reference index versus the corresponding current value of the input index over time.
An action 818 comprises processing or modifying the input signal and/or the reference signal to correct for the determined rate difference. In certain embodiments, this may be performed by (a) increasing the signal rate of the input signal if the rate of change of the input index is less than the rate of change of the reference index and (b) decreasing the signal rate of the input signal if the rate of change of the input index is greater than the rate of change of the reference index. Increasing the signal rate may be performed by adding input signal values to the input signal. The added values may comprise duplicated values or interpolated values. Decreasing the signal rate may comprise removing input signal values from the input signal. Values are added to the input signal when the received current value of the reference index is changing at a higher rate than the corresponding current value of the input index. Values are removed from the input signal when the received current value of the reference index is changing at a lower rate than the corresponding current value of the input index.
In other embodiments, either or both of the input signal and the reference signal may be modified to correct for signal rate differences. For example, values may be dropped or removed from whichever of the input signal and reference signal have a higher signal rate.
An action 820 comprises processing the modified input signal based at least in part on the reference signal to suppress the output audio in the input signal. The action 820 may be performed by acoustic echo cancellation techniques such as described above with reference to
The primary assistant 102 may have an operating system 906 that is configured to manage hardware and services within and coupled to the primary assistant 102. In addition, the primary assistant 102 may include audio processing components 908 for capturing and processing audio including user speech. The operating system 906 and audio processing components 908 may be stored by the memory 904 for execution by the processor 902.
The primary assistant 102 may have one or more microphones 912 and one or more speakers 914. The one or more microphones 912 may be used to capture audio from the environment of the user, including user speech. The one or more microphones 912 may in some cases comprise a microphone array configured for use in beamforming. The one or more speakers 914 may be used for producing sound within the user environment, which may include generated or synthesized speech.
The audio processing components 908 may include functionality for processing input audio signals generated by the microphone(s) 912 and/or output audio signals provided to the speaker(s) 914. As an example, the audio processing components 906 may include one or more acoustic echo cancellation or suppression components 916 for reducing acoustic echo in microphone input signals, generated by acoustic coupling between the microphone(s) 912 and the speaker(s) 914. The audio processing components 908 may also include a noise reduction component 918 for reducing noise in received audio signals, such as elements of audio signals other than user speech.
The audio processing components 908 may include one or more audio beamformers or beamforming components 920 that are configured to generate or produce multiple directional audio signals from the input audio signals received from the one or more microphones 912.
The primary assistant 102 may also implement a reference generation function or component 922. The reference generation function or component 922 provides an output reference signal to the secondary assistant 104 so that the secondary assistant 104 can perform AEC. In addition, the reference generation function or component 922 provides sample rate information to the secondary assistant 104 as described above so that the secondary assistant 104 can more effectively perform AEC.
The secondary assistant 104 includes operational logic, which in many cases may comprise a processor 1002 and memory 1004. The processor 1002 may include multiple processors and/or a processor having multiple cores. The memory 1004 may contain applications and programs in the form of instructions that are executed by the processor 1002 to perform acts or actions that implement desired functionality of the secondary assistant 104. The memory 1004 may be a type of computer storage media and may include volatile and nonvolatile memory. Thus, the memory 1004 may include, but is not limited to, RAM, ROM, EEPROM, flash memory, or other memory technology.
The secondary assistant 104 may have an operating system 1006 that is configured to manage hardware and services within and coupled to the secondary assistant 104. In addition, the secondary assistant 104 may include audio processing components 1008. The operating system 1006 and audio processing components 1008 may be stored by the memory 1004 for execution by the processor 1002.
The primary assistant 102 may have one or more microphones 1010, which may be used to capture audio from the environment of the user, including user speech. The one or more microphones 1010 may in some cases comprise a microphone array configured for use in beamforming.
The audio processing components 1008 may include functionality for processing input audio signals generated by the microphone(s) 1010. As an example, the audio processing components 1008 may include one or more acoustic echo cancellation or suppression components 1012 for reducing acoustic echo in microphone input signals, generated by acoustic coupling between the speaker(s) 914 of the primary assistant 102 and the microphone(s) 1010 of the secondary assistant 104. The audio processing components 908 may also include a noise reduction component 1014 for reducing noise in received audio signals, such as elements of audio signals other than user speech.
The audio processing components 1008 may include one or more audio beamformers or beamforming components 1016 that are configured to generate or produce multiple directional audio signals from the input audio signals received from the one or more microphones 1010.
The primary assistant 102 may also implement a rate correction or synchronization component 1018. As described above, the secondary assistant 104 receives a reference signal from the primary assistant 102. The rate correction or synchronization component 1018 adjusts microphone signals within the secondary assistant 104 so that the signal rates of the microphone signals match the signal rate of the reference signal.
Although the subject matter has been described in language specific to structural features, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features described. Rather, the specific features are disclosed as illustrative forms of implementing the claims.
This patent application is a continuation of and claims priority to U.S. patent application Ser. No. 14/228,045, filed Mar. 27, 2014. Application Ser. No. 14/228,045 is fully incorporated herein by reference.
Number | Name | Date | Kind |
---|---|---|---|
7016443 | Splett | Mar 2006 | B1 |
7023868 | Rabenko et al. | Apr 2006 | B2 |
7418392 | Mozer et al. | Aug 2008 | B1 |
7680285 | Ballantyne et al. | Mar 2010 | B2 |
7720683 | Vermeulen et al. | May 2010 | B1 |
7774204 | Mozer et al. | Aug 2010 | B2 |
8295475 | Li et al. | Oct 2012 | B2 |
8320554 | Chu | Nov 2012 | B1 |
8515086 | Marton et al. | Aug 2013 | B2 |
8958897 | Cleve et al. | Feb 2015 | B2 |
9025762 | Bao et al. | May 2015 | B2 |
20120223885 | Perez | Sep 2012 | A1 |
20150050967 | Bao | Feb 2015 | A1 |
Number | Date | Country |
---|---|---|
WO2011088053 | Jul 2011 | WO |
Entry |
---|
Office action for U.S. Appl. No. 14/228,045, dated Nov. 2, 2015, Piersol et al., “Signal Rate Synchronization for Remote Acoustic Echo Cancellation”, 9 pages. |
Pinhanez, “The Everywhere Displays Projector: A Device to Create Ubiquitous Graphical Interfaces”, IBM Thomas Watson Research Center, Ubicomp 2001, Sep. 30-Oct. 2, 2001, 18 pages. |
Number | Date | Country | |
---|---|---|---|
Parent | 14228045 | Mar 2014 | US |
Child | 15184765 | US |