Echo cancellers are commonly used to cancel echoes in communications circuits to minimize signal interference that may distract users and cause a reduction in quality of communication. Since an echo delay path in the communication circuits may create long delay intervals, an echo cancellation filter should be capable of modeling an impulse response characteristic equivalent to long delay intervals. In other words, the longer the delay intervals, the more complex would be the corresponding echo cancellation filter needed to cancel the echoes.
Currently, wireless display (WiDi) technology may be built into processors of wireless devices to allow wireless streaming of audio and video signals from the wireless device to a compatible television (TV) or display device. For example, the wireless streaming of the audio and the video signal is implemented through a WiFi link. The WiDi technology makes the audio and video streaming more convenient and a display may be made available to a wider audience. However, the WiDi technology may introduce an additional delay that current echo cancellation filters may not address. Accordingly, a solution for the long delayed echo, such as the long delayed echo created by the WiDi technology may be implemented in the current wireless devices to save costs.
The following Detailed Description is provided with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number usually identifies the figure in which the reference number first appears. The use of the same reference numbers in different figures indicates similar or identical items.
This document discloses one or more systems, apparatuses, methods, etc. for implementing an echo cancellation algorithm for a long delayed echo in a communication circuit and, more particularly, the long delayed echo that is created during a wire or wireless voice communications. In an implementation, a WiDi feature in a device during the wire or wireless voice communications may add an additional echo delay. For example, the WiDi feature of the device transmits an audio electrical signal from the device to a television (TV) or display device through a wireless or WiFi link. In this example, the display device converts the audio electrical signal into an audio sound signal that may be reflected by surrounding environment and picked-up by a microphone of the device. As a result, a long delayed echo is produced at the device due to the WiFi link path and the path travelled by the audio sound signal from the display device to the microphone of the device.
In an implementation, a delay estimator component is configured to estimate amount of the long delayed echo that includes the delay incurred from the device to the display device and from the display device to the microphone of the device. In this implementation, the delay estimator component performs cross-correlations of a received signal (e.g., audio electrical signal) and resulting echo signal received through the microphone of the device. The estimated amount of the long delayed echo is inserted to a standard echo cancellation system through a delay insertion component. The delay insertion component may act as an interface to the delay estimator component for implementing the echo cancellation algorithm for the long delayed echo.
To minimize effect of the signal d(n) 214, the adaptive filter component 202 may process the signal x(n) 204 using adaptive filter algorithms, such as least mean squares (LMS) algorithm, normalized LMS (NLMS) algorithm, or root mean square (RMS) algorithm to create an output y(n) 216. For example, the adaptive filter component 202 may algorithmically alter its parameters in order to minimize a function of the difference between the signal d(n) 214 and its actual output y (n) 216 through a differential component 218. At each iteration, an error signal e(n) 220 is fed back into the adaptive filter component 202 where the filter characteristics are altered accordingly. The output y(n) 216, when combined or subtracted from the d(n) 214 through the differential component 218 may result to elimination or cancellation of the unwanted signal d(n) 214. The adaptive filter component 202 may further include a self-adjusting transfer function according to an optimization algorithm that is driven by the error signal e(n) 220. The adaptive filter component 202 may use the error signal e(n) 220 to refine its transfer function to match changing parameters in the signals x(n) 204 and d(n) 214.
Using the adaptive filter component 202 alone to cancel the total amount of delay (i.e., around 250 msecs) may require around 5000 taps to process the total amount of delay at the same audio sampling rate of 16 KHz. In other words, the adaptive filter component 202 may create an impractical filter response output due to the number of taps (i.e., 5000 taps) that are required to process the total amount of delay. As the number of taps increases, the adaptive filter component 202 may become unstable in addition to becoming complex and expensive to implement.
In an implementation, a delay estimator 310 is configured to first estimate a total amount of estimated delay (i.e., delay 312) introduced by the WiFi link 306 and the channel multipath travelled by the audio signal 308. In this implementation, the signals x(n) 204 and d(n) 214 are inputs to the delay estimator 310. The delay estimator 310 may estimate the delay by performing an algorithm that searches a peak (not shown) of cross-correlations between the signals x(n) 204 and d(n) 214. The peak of the cross-correlations between the signals x(n) 204 and d(n) 214 may correspond to the estimated delay (i.e., delay 312). In an implementation, the estimation performed by the delay estimator 310 may include two steps. For example, a first search includes a coarse search with a larger step size, such as at least 6.25 ms. The coarse search of the step size 6.25 ms is taken from 100 samples for 16 KHz audio sampling rate. The step size 6.25 ms is used as an incremental rate for searching the peak cross-correlation between the signals x(n) 204 and d(n) 214. After obtaining the peak cross-correlation on the first coarse search, a second search i.e., a fine search, is performed on the searched peak cross-correlation (from the first coarse search). The fine search may be implemented by introducing a different and/or smaller delay of at least 62.5 μs. The fine search increments the delay by 62.5 μs until a maximum cross-correlation is determined. In an implementation, the maximum cross-correlation is the delay 312 that is fed to a delay insertion component 314. The delay insertion component 314 may act as an interface to the delay 312 prior to regular performance of echo cancellation algorithm by the adaptive filter component 202. The regular performance of the echo cancellation algorithm may exclude presence of the long tail length in the transfer function of the adaptive filter component 202.
During implementation of the first search or the second search, a power of sampled signal d(n) 214 is summed up by an adder 410-4 to provide an output Pd 414 while a power of sampled signal x(n) 204 is summed up by an adder 410-6 to provide an output Px. 416. The P(d) 414 may include total power reference from the signal d(n) 214 as part of the algorithm that is implemented by the delay estimator 310. Similarly, output Px 416 may include total power reference from the signal x(n) 204 as part of the algorithm that is implemented by the delay estimator 310. In an implementation, a power estimator 418 may estimate delay by determining ratio of the P(d) 414 to the square root of the product of the Px 416 and the Pd 414. In this implementation, the power estimator 418 provides a cross-correlation output (i.e., Xcorr(d) 420) that includes a maximum peak cross-correlations between functions of the signals x(n) 204 and d(n) 214 to determine the estimated delay (e.g., delay 312 in
At block 502, receiving an electrical audio signal and a picked-up signal by a delay estimator is performed. In an implementation, the delay estimator (e.g., delay estimator 310) may receive the electrical audio signal (e.g., x(n) 204) and the picked-up signal (e.g., d(n) 214) to estimate amount of delay that includes a delay due to a WiFi link (e.g., WiFi link 306) and channel multipath signals (e.g., audio sound signal signal 308).
At block 504, a cross-correlation is performed between the electrical audio signal and the picked up signal by the delay estimator to estimate delay. In an implementation, the delay estimator 310 may perform cross-correlation algorithm to estimate the delay created by the WiFi link 306 and the audio sound signal 308. For example, a first search (e.g., coarse search) is performed at a step size of 6.25 msecs (e.g., z−d 402 is 6.25 msecs) to find a peak value that includes an initial estimate of the estimated delay. In this example, a second search (e.g., fine search) is performed at a step size of 62.5 μs (e.g., z−d 402 is 62.5 μs) to find the final estimate (e.g., delay 312) created by the WiFi link 306 and the audio sound signal 308.
At block 506, feeding the estimated delay to an adaptive filter is performed. In an implementation, a delay insertion component (e.g., delay insertion 314) may be implemented as an interface between the delay estimator 310 and an adaptive filter component (e.g., adaptive filter component 202). In this implementation, the adaptive filter component 202 may include a self-adjusting transfer function to provide an output (e.g., y(n) 216) that closely resembles the value of the picked-up signal d(n) 214.
At block 508, determining difference between the output of the adaptive filter component and the pick-up signal is performed. In an implementation, a differential component (e.g., differential component 218) may subtract the output y(n) 216 from the picked-up signal d(n) 214.
At block 510, determining if threshold value is satisfied is performed. In an implementation, the differential component 218 may provide an error output (e.g., e(n) 220) that is compared to a threshold value for performing another delay estimation. For example, if the error output e(n) 220 exceeds the threshold value (e.g., 0.01), then following YES at block 504, another cross-correlation is performed to estimate delay by the delay estimator 310. Otherwise, following NO at block 512, the error output e(n) 220 is provided to far-end talker (e.g., far-end talker 102-2), which includes a completely cancelled echo signal if the error output e (n) 220 is zero value. In an implementation, the delay estimator 210 may not have to perform the cross-correlation continuously since a near-end environment do not vary (i.e., delay profile of the environment is almost constant).
Realizations in accordance with the present invention have been described in the context of particular embodiments. These embodiments are meant to be illustrative and not limiting. Many variations, modifications, additions, and improvements are possible. Accordingly, plural instances may be provided for components described herein as a single instance. Boundaries between various components, operations and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of claims that follow. Finally, structures and functionality presented as discrete components in the various configurations may be implemented as a combined structure or component. These and other variations, modifications, additions, and improvements may fall within the scope of the invention as defined in the claims that follow.
In at least one implementation, computing device 600 typically includes at least one processing unit 602 and system memory 604. Depending on the exact configuration and type of computing device, system memory 604 may be volatile (such as RAM), non-volatile (such as ROM, flash memory, etc.) or some combination thereof. System memory 604 may include an operating system 606, one or more program modules 608 that implement the long delay echo algorithm, and may include program data 610. A basic implementation of the computing device 600 is demarcated by a dashed line 614.
The program module 608 may include a module 612 configured to implement the one-tap connection and synchronization scheme as described above. For example, the module 612 may carry out one or more of the method 500, and variations thereof, e.g., the computing device 600 acting as described above with respect to the device 102.
Computing device 600 may have additional features or functionality. For example, computing device 600 may also include additional data storage devices such as removable storage 616 and non-removable storage 618. In certain implementations, the removable storage 616 and non-removable storage 618 are an example of computer accessible media for storing instructions that are executable by the processing unit 602 to perform the various functions described above. Generally, any of the functions described with reference to the figures may be implemented using software, hardware (e.g., fixed logic circuitry) or a combination of these implementations. Program code may be stored in one or more computer accessible media or other computer-readable storage devices. Thus, the processes and components described herein may be implemented by a computer program product. As mentioned above, computer accessible media includes volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. The terms “computer accessible medium” and “computer accessible media” refer to non-transitory storage devices and include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other non-transitory medium that may be used to store information for access by a computing device, e.g., computing device 600 and wireless mobile device 102. Any of such computer accessible media may be part of the computing device 600.
In one implementation, the removable storage 616, which is a computer accessible medium, has a set of instructions 630 stored thereon. When executed by the processing unit 602, the set of instructions 630 cause the processing unit 602 to execute operations, tasks, functions and/or methods as described above, including method 500 and any variations thereof.
Computing device 600 may also include one or more input devices 620 such as keyboard, mouse, pen, voice input device, touch input device, etc. Computing device 600 may additionally include one or more output devices 622 such as a display, speakers, printer, etc.
Computing device 600 may also include one or more communication connections 624 that allow the computing device 600 to communicate wirelessly with one or more other wireless devices, over wireless connection 628 based on near field communication (NFC), Wi-Fi, Bluetooth, radio frequency (RF), infrared, or a combination thereof.
It is appreciated that the illustrated computing device 600 is one example of a suitable device and is not intended to suggest any limitation as to the scope of use or functionality of the various embodiments described.
Unless the context indicates otherwise, the term “Universal Resource Identifier” as used herein includes any identifier, including a GUID, serial number, or the like.
In the above description of example implementations, for purposes of explanation, specific numbers, materials configurations, and other details are set forth in order to better explain the present invention, as claimed. However, it will be apparent to one skilled in the art that the claimed invention may be practiced using different details than the example ones described herein. In other instances, well-known features are omitted or simplified to clarify the description of the example implementations.
The inventors intend the described example implementations to be primarily examples. The inventors do not intend these example implementations to limit the scope of the appended claims. Rather, the inventors have contemplated that the claimed invention might also be embodied and implemented in other ways, in conjunction with other present or future technologies.
Moreover, the word “example” is used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “example” is not necessarily to be construed as preferred or advantageous over other aspects or designs. Rather, use of the word example is intended to present concepts and techniques in a concrete fashion. The term “techniques”, for instance, may refer to one or more devices, apparatuses, systems, methods, articles of manufacture, and/or computer-readable instructions as indicated by the context described herein.
As used in this application, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or.” That is, unless specified otherwise or clear from context, “X employs A or B” is intended to mean any of the natural inclusive permutations. That is, if X employs A; X employs B; or X employs both A and B, then “X employs A or B” is satisfied under any of the foregoing instances. In addition, the articles “a” and “an” as used in this application and the appended claims should generally be construed to mean “one or more”, unless specified otherwise or clear from context to be directed to a singular form.
These processes are illustrated as a collection of blocks in a logical flow graph, which represents a sequence of operations that may be implemented in mechanics alone or a combination with hardware, software, and/or firmware. In the context of software/firmware, the blocks represent instructions stored on one or more computer-readable storage media that, when executed by one or more processors, perform the recited operations.
Note that the order in which the processes are described is not intended to be construed as a limitation, and any number of the described process blocks may be combined in any order to implement the processes or an alternate process. Additionally, individual blocks may be deleted from the processes without departing from the spirit and scope of the subject matter described herein.
The term “computer-readable media” includes computer-storage media. In one embodiment, computer-readable media is non-transitory. For example, computer-storage media may include, but are not limited to, magnetic storage devices (e.g., hard disk, floppy disk, and magnetic strips), optical disks (e.g., compact disk (CD) and digital versatile disk (DVD)), smart cards, flash memory devices (e.g., thumb drive, stick, key drive, and SD cards), and volatile and non-volatile memory (e.g., random access memory (RAM), read-only memory (ROM)).
Unless the context indicates otherwise, the term “logic” used herein includes hardware, software, firmware, circuitry, logic circuitry, integrated circuitry, other electronic components and/or a combination thereof that is suitable to perform the functions described for that logic.
The following examples pertain to further embodiments. A device comprising: a wireless display (WiDi) component adapted to transmits an electrical audio signal through a wireless link, wherein the electrical audio signal is transformed into an audio sound signal that is received by the device; a delay estimator component adapted to perform cross-correlation between the electrical audio signal and the received audio sound signal to estimate total delay, wherein the total delay includes a delay due to the wireless link and multipath delay traversed by the received audio sound signal; a delay insertion component adapted to insert the estimated total delay to an adaptive filter for echo cancellation; and an adaptive filter configured to perform echo cancellation algorithm.
In certain implementations, a device wherein the electrical audio signal is received from a far-end device through a wired or wireless communication channel.
In certain implementations, a device wherein the electrical audio signal is transmitted by the WiDi component to a WiDi compatible display device using the wireless link.
In certain implementations, a device wherein the delay estimator component performs the cross-correlation by implementing a first coarse search to find a peak cross-correlation.
In certain implementations, a device wherein the delay estimator component performs the cross-correlation on the peak cross-correlation due to the first coarse search, wherein the cross-correlation is implemented by a second fine search that includes a unit delay that is smaller than the unit delay that is used in the first coarse search.
In certain implementations, a device wherein the delay estimator component performs the cross-correlation on the peak cross-correlation due to the first coarse search, wherein the cross correlation is implemented by a second fine search that includes a different and/or lesser number of samples than the samples used on the first coarse search.
In certain implementations, a device wherein the delay insertion component acts as an interface between the delay estimator and the adaptive filter.
In certain implementations, a device wherein the adaptive filter implements a transfer function that includes a short tail length.
In certain implementations, a device wherein the adaptive filter includes a configured threshold value to determine whether another delay estimation is performed.
In certain implementations, a device wherein the adaptive filter includes an output that resembles the picked-up audio sound signal.
A method of implementing echo cancellation algorithm for long delayed echo in a device comprising: receiving an electrical audio signal and a picked-up signal, wherein the picked-up signal includes an additional delay due to a wireless display (WiDi) feature of the device; performing cross-correlation between the electrical audio signal and the picked-up signal to estimate delay; feeding the estimated delay to an adaptive filter; determining difference between an output of the adaptive filter and the picked-up signal; and outputting an error signal that includes the difference between the output of the adaptive filter and the picked-up signal.
In certain implementations, a method wherein the electrical audio signal is streamed by a WiDi component through a wireless link, wherein the wireless link, includes a path for the additional delay.
In certain implementations, a method wherein the cross-correlation is performed by implementing a first search to find a peak cross-correlation that includes an initial estimated delay.
In certain implementations, a method wherein the cross-correlation is performed on the peak cross-correlation to find the estimated delay, wherein the cross-correlation uses a second search that includes a unit delay that is smaller than the unit delay that is used in the first search.
In certain implementations, a method wherein the cross-correlation is not continuously performed since a near-end environment do not vary.
In certain implementations, a method wherein the cross-correlation is performed when the difference between the output of the adaptive filter and the picked-up signal is greater than a configured threshold value.
In certain implementations, a method wherein the output of the adaptive filter is derived by using least mean squares (LMS) algorithm, normalized LMS (NLMS) algorithm, or root mean square (RMS) algorithm.
In certain implementations, a method wherein the adaptive filter implements a transfer function that includes a short tail length.
In certain implementations, a method wherein the adaptive filter includes the output that resembles the picked-up signal to satisfy a configured threshold value.
In certain implementations, a method further comprising self-adjusting a transfer function by the adaptive filter according to an optimization algorithm that is driven by the error signal.
At least one computer accessible medium that performs a method of implementing echo cancellation algorithm for long delayed echo comprising: receiving an electrical audio signal and a picked-up signal by a device; performing cross-correlation between the electrical audio signal and the picked-up signal to estimate delay, wherein the estimated delay includes an additional delay in a wireless path that is used by a wireless display (WiDi) feature of the device; sending the estimated delay to an adaptive filter; determining an error signal that includes difference between an output of the adaptive filter and the picked-up signal; and outputting the error signal that is below a threshold value, wherein the threshold value indicates cancellation of the long delayed echo.
In certain implementations, a computer accessible medium wherein the electrical audio signal is streamed by the WiDi feature of the device to display device through the wireless path, wherein the display device transforms the electrical audio signal to an audio sound signal that is picked-up by the device.
In certain implementations, a computer accessible medium wherein the cross-correlation is performed by implementing a first coarse search to find a peak cross-correlation that includes an initial estimated delay.
In certain implementations, a computer accessible medium wherein the cross-correlation is performed on the peak cross-correlation to find final estimated delay, wherein the cross-correlation uses a second fine search that includes a unit delay that is smaller than the unit delay that is used in the first coarse search.
In certain implementations, a computer accessible medium wherein the cross-correlation is performed when a threshold value is not satisfied.
In certain implementations, a computer accessible medium wherein the output of the adaptive filter is derived by using least mean squares (LMS) algorithm, normalized LMS (NLMS) algorithm, or root mean square (RMS) algorithm.
In certain implementations, a computer accessible medium wherein the adaptive filter implements a transfer function that includes a short tail length.
In certain implementations, a computer accessible medium wherein the adaptive filter includes the output that resembles the picked-up signal to satisfy a configured threshold value.
In certain implementations, a computer accessible medium further comprising comparing the difference in a differential component to a configured threshold value.
In certain implementations, a computer accessible medium further comprising self-adjusting a transfer function by the adaptive filter according to an optimization algorithm that is driven by the error signal.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/US12/41599 | 6/8/2012 | WO | 00 | 6/19/2013 |