[Speex-dev] Distorted output in fixed-point AEC

Jean-Marc Valin jmvalin at jmvalin.ca
Sat Jan 8 09:26:54 PST 2011


The Speex AEC is simply not designed to deal with non-linear echo, as is 
the case when clipping of AGCs are involved. Make sure all your path is 
linear or forget about the Speex AEC.


On 11-01-03 11:31 AM, Omer Gilad wrote:
> Hi,
> I couldn't find a discussion that specifically addresses this, so here
> it is.
> I'm using Speex AEC in my mobile VoIP application to cancel speaker
> echo. The used version is 1.2rc1 from the website, and I'm compiling
> with fixed-point.
> On most occasions, the AEC works very well and cancels most of the echo
> (combined with the preprocessor).
> On some devices, where the microphone signal gets a bit distorted
> (because of sensitivity or some internal AGC pass), the AEC outputs
> distorted and unacceptable voice, while only augmenting the echo signal
> instead of cancelling it.
> I have tried a few things:
> 1. Compile in floating point - solves it, but irrelevant to some devices
> which don't have an FPU and can't handle this. I actually use the FP
> version on devices that DO support it.
> 2. Check where it reproduces - on any device where the recording gets
> clipped every now and then, and also on devices that normalize their mic
> input.
> I'm a bit desperate about this, and almost getting to the point of
> debugging the AEC itself - my guess is that it's a lot of integer overflows.
> I'm willing to send voice samples that reproduce the problem.
> Did anyone experience that or has some insight?
> Thanks ahead,
> Omer

More information about the Speex-dev mailing list