[Speex-dev] echo cancellation on PDA

Jean-Marc Valin jean-marc.valin at usherbrooke.ca
Thu Nov 2 19:27:20 PST 2006

Nicholas Xu wrote:
> I did the test on another PDA which runs XScale 416Mhz CPU, the EAC
> arithmetic could be done in 1ms, but for the previous PDA (TI OMAP
> 168Mhz), it take more than 100ms!

Wow! I knew some ARM cores could suck, but this is really impressive!
Some possible explanations:
1) Compiler sucks really bad
2) Somehow, some routines ended up being compiled as floating-point
3) Cache is set to write-through mode

> Though EAC could run in time on the new PDA, it did no help to cancel
> the echo, here is my test scenario:
> Init echo_state:
>    echo_state=speex_echo_state_init(160,1120);
>    int tmp=8000;
>    speex_echo_ctl(echo_state,SPEEX_ECHO_SET_SAMPLING_RATE,&tmp);

Most of the times, the problem is due to improper synchronization. I
recommend you make recordings, look at the signals try processing
off-line. Oh, and read the manual if not done already. Also note that
1.2beta1 has a bug in the echo canceller, for which the fix is at


> 2006/11/3, Jean-Marc Valin <jean-marc.valin at usherbrooke.ca>:
>> >> Are you by any chance using an insane sampling rate and/or tail
>> length.
>> >> Try a sampling rate of 8000 Hz, 128-sample frame size and 1028-sample
>> >> tail length.
>> > In my appliation, the sampling rate is 8000 Hz, and time stamp is
>> > 20ms, doesn't it mean I should initialize echo_state like
>> > speex_echo_init_state(160,n*160)?
>> That's fine -- as long as n is reasonable, let's say in the order of 8.
>> Are you using just the echo canceller or the preprocessor too (try just
>> the echo canceller).
>>        Jean-Marc
> _______________________________________________
> Speex-dev mailing list
> Speex-dev at xiph.org
> http://lists.xiph.org/mailman/listinfo/speex-dev

More information about the Speex-dev mailing list