[Speex-dev] AEC learning behaviour

Ken Smith ken at alanta.com
Tue May 24 08:23:39 PDT 2011

I'll only add that in my experience, the echo canceller + echo suppressor
removes significantly more of the echo than the echo canceller by itself. In
our testing, the echo canceller by itself removed about 65% of the echo
(which isn't good enough), and the echo canceller + echo suppressor removed
about 90% (which is good enough for 1:1 conversations).

What was key to getting this to work (this was in Silverlight) was enabling
a buffer to hold the recorded audio for about 200 ms before submitting it to
the echo canceller. By default, the Speex pre-processor only holds it for
about 20 ms, and we found that wasn't nearly long enough, at least in our
particular environment. We tested a variety of different buffer lengths on a
variety of different kinds of hardware, before settling on 200 ms as
producing the best results on the widest range of systems. But of course,
this was in Silverlight, which I strongly suspect adds a bit more latency
than other environments, so 200 ms probably isn't the best if you've got
better direct access to the hardware. But I also suspect that 20 ms likely
isn't the best either. It would actually be helpful if this were a
configurable value in the Speex preprocessor. (Someone want to take that on?

Ken Smith
Cell: 425-443-2359
Email: ken at alanta.com
Blog: http://blog.wouldbetheologian.com/

2011/5/24 Jean-Marc Valin <jmvalin at jmvalin.ca>

> The fact that the AEC takes a few seconds to converge is normal. The
> fact that it needs to completely re-converge in the middle of a call
> probably indicates that something went "wrong" in the audio
> capture/playback. For example, that could be an overrun/underrun in
> the soundcard buffer, or the user changing a volume control after the
> AEC, or moving the speakers, ... anything that changes the impulse
> response.
>    Jean-Marc
> Arun Raghavan <arun.raghavan at collabora.co.uk> a écrit :
> > Hello,
> > We've integrated the speex echo canceller into PulseAudio, and coupled
> > with the AGC/denoiser, it works reasonably well and has been a breeze to
> > plug in, so thank you!
> >
> > One thing we're seeing, though, is that the canceller seems to take some
> > time (a few seconds) to "learn", so initially the echo is clearly
> > audible and it slowly fades out. This sometimes occurs in the middle of
> > a call as well (the echo becomes loud again and fades away in a few
> > seconds).
> >
> > With the echo suppressor enabled, the learning time seems to drop, but
> > the final echo remains higher than without suppression, and is still
> > sufficiently audible to be annoying.
> >
> > Is this known behaviour? Any clues w.r.t. what might be going wrong?
> >
> > Cheers,
> > Arun
> >
> > _______________________________________________
> > Speex-dev mailing list
> > Speex-dev at xiph.org
> > http://lists.xiph.org/mailman/listinfo/speex-dev
> >
> >
> _______________________________________________
> Speex-dev mailing list
> Speex-dev at xiph.org
> http://lists.xiph.org/mailman/listinfo/speex-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.xiph.org/pipermail/speex-dev/attachments/20110524/191dccf1/attachment.htm 

More information about the Speex-dev mailing list