IP Library Granted Patent US 9,912,373
Granted Patent B1
US 9,912,373 · App. 15/298,216 · Granted Mar 6, 2018

Techniques to detect echoes using audio fingerprinting

Inventor: YuanYuan Wang (Sunnyvale, CA)
Assignee: WHATSAPP INC.
H04B3/23H04M7/006
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,912,373
App. No.
15/298,216
Granted
Mar 6, 2018
Kind
B1
Abstract

Techniques to detect echoes using audio fingerprinting are described. In one embodiment, an apparatus may comprise a streaming component operative to establish a audio connection between the first client device and a second client device; and receive a far-end audio stream at the first client device from the second client device via the audio connection; an audio capture component operative capture a near-end audio stream at the first client device; and an echo processing component operative to compare the near-end audio stream and the far-end audio stream to determine whether a far-end audio segment is present in the near-end audio stream; and use an echo-cancellation module at the first client device where the far-end audio segment is present in the near-end audio stream. Other embodiments are described and claimed.

Claims (58)

1. A computer-implemented method, comprising:

establishing an audio connection between a first client device and a second client device;

capturing a near-end audio stream at the first client device;

receiving a far-end audio stream at the first client device from the second client device via the audio connection;

comparing the near-end audio stream and the far-end audio stream to determine whether a far-end audio segment is present in the near-end audio stream; and

using an echo-cancellation module at the first client device where the far-end audio segment is present in the near-end audio stream, and refraining from using the echo-cancellation module at the first client device where the far-end audio segment is not present in the near-end audio stream.

2. The method of claim 1 , wherein comparing the near-end audio stream and the far-end audio stream to determine whether the far-end audio segment is present in the near-end audio stream comprises a cosine similarity comparison between a plurality of near-end audio segments from the near-end audio stream and a plurality of far-end audio segments from the far-end audio stream, the cosine similarity comparison performed on a frequency domain of the plurality of near-end audio segments and the plurality of far-end audio segments.

3. The method of claim 1 , wherein comparing the near-end audio stream and the far-end audio stream to determine whether the far-end audio segment is present in the near-end audio stream comprises:

capturing a plurality of near-end audio segments, wherein each of the plurality of near-end audio segments comprises a portion of the near-end audio stream of a predefined length;

capturing a plurality of far-end audio segments, wherein each of the plurality of far-end audio segments comprises a portion of the far-end audio stream of the predefined length; and

comparing the plurality of near-end audio segments and the plurality of far-end audio segments based on a plurality of echo delays, wherein each of the plurality of echo delays is a multiple of the predefined length.

4. The method of claim 3 , further comprising:

calculating a plurality of average cosine similarities, wherein each average cosine similarity corresponds to an echo delay of the plurality of echo delays, wherein the plurality of average cosine similarities are calculated over the plurality of near-end audio segments and the plurality of far-end audio segments;

determining a highest average cosine similarity of the plurality of average cosine similarities; and

determining the highest average cosine similarity as a detected echo where the highest average cosine similarity exceeds a predefined threshold.

5. The method of claim 3 , further comprising:

generating a plurality of near-end audio fingerprints based on the plurality of near-end audio segments;

generating a plurality of far-end audio fingerprints based on the plurality of far-end audio segments; and

comparing the plurality of near-end audio segments and the plurality of far-end audio segments based on the plurality of near-end audio fingerprints and the plurality of far-end audio fingerprints.

6. The method of claim 5 , wherein each of the near-end audio fingerprints and far-end audio fingerprints comprises a high-energy bitmask, wherein the high-energy bitmask represents high-energy portions of a division of audio segments across the frequency domain.

7. The method of claim 6 , wherein comparing the near-end audio stream and the far-end audio stream to determine whether the far-end audio segment is present in the near-end audio stream comprises a cosine similarity comparison between the plurality of near-end audio segments and the plurality of far-end audio segments, wherein the cosine similarity comparison is performed based on the plurality of near-end audio fingerprints and the plurality of far-end audio fingerprints.

8. The method of claim 7 , the cosine similarity comparison performed as a bitwise operation between the plurality of near-end audio fingerprints and the plurality of far-end audio fingerprints, the bitwise operation determining a common number of bits.

9. An apparatus, comprising:

a processor circuit on a first client device;

a network interface controller on the first client device;

a streaming component operative on the processor circuit to establish a audio connection between the first client device and a second client device via the network interface controller; and receive a far-end audio stream at the first client device from the second client device via the audio connection;

an audio capture component operative on the processor circuit capture a near-end audio stream at the first client device; and

an echo processing component operative on the processor circuit to compare the near-end audio stream and the far-end audio stream to determine whether a far-end audio segment is present in the near-end audio stream; and use an echo-cancellation module at the first client device where the far-end audio segment is present in the near-end audio stream, and refrain from using the echo-cancellation module at the first client device where the far-end audio segment is not present in the near-end audio stream.

10. The apparatus of claim 9 , wherein comparing the near-end audio stream and the far-end audio stream to determine whether the far-end audio segment is present in the near-end audio stream comprises a cosine similarity comparison between a plurality of near-end audio segments from the near-end audio stream and a plurality of far-end audio segments from the far-end audio stream, the cosine similarity comparison performed on a frequency domain of the plurality of near-end audio segments and the plurality of far-end audio segments.

11. The apparatus of claim 9 , wherein the echo processing component is further operative to:

capture a plurality of near-end audio segments, wherein each of the plurality of near-end audio segments comprises a portion of the near-end audio stream of a predefined length;

capture a plurality of far-end audio segments, wherein each of the plurality of far-end audio segments comprises a portion of the far-end audio stream of the predefined length; and

compare the plurality of near-end audio segments and the plurality of far-end audio segments based on a plurality of echo delays, wherein each of the plurality of echo delays is a multiple of the predefined length.

12. The apparatus of claim 11 , further comprising:

the echo processing component operative to calculate a plurality of average cosine similarities, wherein each average cosine similarity corresponds to an echo delay of the plurality of echo delays, wherein the plurality of average cosine similarities are calculated over the plurality of near-end audio segments and the plurality of far-end audio segments; determine a highest average cosine similarity of the plurality of average cosine similarities; and determine the highest average cosine similarity as a detected echo where the highest average cosine similarity exceeds a predefined threshold.

13. The apparatus of claim 12 , further comprising:

the echo processing component operative to generate a plurality of near-end audio fingerprints based on the plurality of near-end audio segments; generate a plurality of far-end audio fingerprints based on the plurality of far-end audio segments; and compare the plurality of near-end audio segments and the plurality of far-end audio segments based on the plurality of near-end audio fingerprints and the plurality of far-end audio fingerprints.

14. The apparatus of claim 13 , wherein each of the near-end audio fingerprints and far-end audio fingerprints comprises a high-energy bitmask, wherein the high-energy bitmask represents high-energy portions of a division of audio segments across the frequency domain, wherein comparing the near-end audio stream and the far-end audio stream to determine whether the far-end audio segment is present in the near-end audio stream comprises a cosine similarity comparison between the plurality of near-end audio segments and the plurality of far-end audio segments, wherein the cosine similarity comparison is performed based on the plurality of near-end audio fingerprints and the plurality of far-end audio fingerprints, the cosine similarity comparison performed as a bitwise operation between the plurality of near-end audio fingerprints and the plurality of far-end audio fingerprints, the bitwise operation determining a common number of bits.

15. At least one non-transitory computer-readable storage medium comprising instructions that, when executed, cause a system to:

establish an audio connection between a first client device and a second client device;

capture a near-end audio stream at the first client device;

receive a far-end audio stream at the first client device from the second client device via the audio connection;

compare the near-end audio stream and the far-end audio stream to determine whether a far-end audio segment is present in the near-end audio stream; and

use an echo-cancellation module at the first client device where the far-end audio segment is present in the near-end audio stream, and refrain from using the echo-cancellation module at the first client device where the far-end audio segment is not present in the near-end audio stream.

16. The computer-readable storage medium of claim 15 , wherein comparing the near-end audio stream and the far-end audio stream to determine whether the far-end audio segment is present in the near-end audio stream comprises a cosine similarity comparison between a plurality of near-end audio segments from the near-end audio stream and a plurality of far-end audio segments from the far-end audio stream, the cosine similarity comparison performed on a frequency domain of the plurality of near-end audio segments and the plurality of far-end audio segments.

17. The computer-readable storage medium of claim 15 , wherein comparing the near-end audio stream and the far-end audio stream to determine whether the far-end audio segment is present in the near-end audio stream comprises further instructions that, when executed, cause a system to

capture a plurality of near-end audio segments, wherein each of the plurality of near-end audio segments comprises a portion of the near-end audio stream of a predefined length;

capture a plurality of far-end audio segments, wherein each of the plurality of far-end audio segments comprises a portion of the far-end audio stream of the predefined length; and

compare the plurality of near-end audio segments and the plurality of far-end audio segments based on a plurality of echo delays, wherein each of the plurality of echo delays is a multiple of the predefined length.

18. The computer-readable storage medium of claim 17 , comprising further instructions that, when executed, cause a system to:

calculate a plurality of average cosine similarities, wherein each average cosine similarity corresponds to an echo delay of the plurality of echo delays, wherein the plurality of average cosine similarities are calculated over the plurality of near-end audio segments and the plurality of far-end audio segments;

determine a highest average cosine similarity of the plurality of average cosine similarities; and

determine the highest average cosine similarity as a detected echo where the highest average cosine similarity exceeds a predefined threshold.

19. The computer-readable storage medium of claim 18 , comprising further instructions that, when executed, cause a system to:

generate a plurality of near-end audio fingerprints based on the plurality of near-end audio segments;

generate a plurality of far-end audio fingerprints based on the plurality of far-end audio segments; and

compare the plurality of near-end audio segments and the plurality of far-end audio segments based on the plurality of near-end audio fingerprints and the plurality of far-end audio fingerprints.

20. The computer-readable storage medium of claim 19 , wherein each of the near-end audio fingerprints and far-end audio fingerprints comprises a high-energy bitmask, wherein the high-energy bitmask represents high-energy portions of a division of audio segments across the frequency domain, wherein comparing the near-end audio stream and the far-end audio stream to determine whether the far-end audio segment is present in the near-end audio stream comprises a cosine similarity comparison between the plurality of near-end audio segments and the plurality of far-end audio segments, wherein the cosine similarity comparison is performed based on the plurality of near-end audio fingerprints and the plurality of far-end audio fingerprints, the cosine similarity comparison performed as a bitwise operation between the plurality of near-end audio fingerprints and the plurality of far-end audio fingerprints, the bitwise operation determining a common number of bits.

Assignments (2)
CHANGE OF NAME Recorded Jun 22, 2021
From: WHATSAPP INC.
To: WHATSAPP LLC
Reel/Frame 056646/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 14, 2017
From: WANG, YUANYUAN
To: WHATSAPP INC.
Reel/Frame 041573/0128 →