[Speex-dev] trouble getting speex_echo_cancel() to work

Thorvald Natvig speex at natvig.com
Thu Jun 2 06:58:53 PDT 2005

> - set sampling rate to 8 kHz (at least for now)
> - make sure the far end signal in the playback signal is always a bit in
> advance (never late) compared to the mic signal.
> - Set the tail length to something around 100 ms.
> Also, if you're using two different soundcards (as I understand) for the
> playback and the capture, you're *never* going to get echo canceller to
> work because the playback and capture need to be *exactly* in sync.

I did a bit more testing, and ended up creating a set of testsamples, as 

ideal.pcm => me saying "This is what I'd like to hear"
junk.pcm => me saying "With a bit of luck, this is gone"
mixdown.pcm => ideal.pcm, with junk.pcm started 7 ms later and 3 dB lower.

(All of this as 8000 Hz, 16-bit signed)

I then copied junk.pcm to play.sw, mixdown.pcm to mic.sw and ran testecho. 
The output sounds almost identical to the mixdown, and far from "ideal".

As a 2nd test, I made play.sw and mic.sw identical (both the mixdown). 
The result is the same as the mixdown, with the volume slowly decaying 
until it's about 15 dB lower at the end of the 8 sec sample.

Somewhat encouraged by this, I made a much longer set of samples, and in 
the mixdown I inserted the "desired" sound 5 seconds into the mix to let 
the filter have time to adapt. Indeed, after a few seconds,  the echo is 
reduced by about 15 dB, but that will still be loud enough to be annoying 
and distractive when talking.

Are there any tunable parameters I can set to allow the echo canceller to 
be a bit more aggressive?

More information about the Speex-dev mailing list