[Speex-dev] Echo Canceller on Windows Mobile

Dennis Liu dennis.liu at mobidia.com
Mon Feb 11 17:01:25 PST 2008




From: Mohammed Sulaiman [mailto:mhh.sulaiman at talk21.com] 
Sent: Monday, February 11, 2008 12:53 AM
To: Dennis Liu
Subject: RE: [Speex-dev] Echo Canceller on Windows Mobile


Hi, thanks. One question did you use these 2 functions 



No, I didn't use them. I use my own code to buffer microphone and speaker


or do you have your audio in a single thread

and use 

Yes, I have my audio thread.


The AEC slows down our code real bad, i take it this where the optimisation
comes in. So far we have just used some of the PREPROCESSOR definitions that
come with the library. Are you saying we need to actually hand optimise
(modify)the code as well? Did you use assembly language for this?

 Definitely you have to work on your own to optimize the code. I haven't
used assembly so far since the efficiency on WM5/6.



Dennis Liu <dennis.liu at mobidia.com> wrote:

I've worked on implementing Speex AEC to smartphone on the exactly same
platform as you have. The result is pretty good. I can remove most of the
acoustic echo. I'm still tuning the performance to minimize the remaining
echo. Here are the key points: 

1.	You have to sync microphone and speaker properly; otherwise it
wouldn't give you a good result.
2.	You have to optimize Speex AEC in order to run on mobile device in
real time.







From: speex-dev-bounces at xiph.org [mailto:speex-dev-bounces at xiph.org] On
Behalf Of Mohammed Sulaiman
Sent: Friday, February 08, 2008 7:55 AM
To: Speex-dev at xiph.org
Subject: [Speex-dev] Echo Canceller on Windows Mobile


Hi Jean Marc,


We are running the speex echo canceller code on a Windows Mobile smartphone
using a TI OMAP 201MHz 850. We are making voip calls and audio is working
without echo canceller code. Simply adding the following 2 functions whether
the echo cancellation is wired in (ie  we use the output frame ) or not
performance becomes terrible. Note 2 separate threads are used to handle


Playing Audio thread:

Write to codec

speex_echo_playback(echo_state, echo_frame);


Capturing audio thread:

Receive buffer

speex_echo_capture(echo_state, input_frame, output_frame);


We have compiled for fixed point.

We are using codec buffer size of 256 bytes ie 128, 16bit samples.


SpeexEchoState* iEchoState = speex_echo_state_init(ECHO_FRAME_SIZE,





Any ideas?


Do you know whether any one has this running on Windows Mobile platforms





Sent from Yahoo!
vt=51949/*http:/uk.docs.yahoo.com/mail/winter07.html>  - a smarter inbox.




Support the World Aids Awareness campaign this month with Yahoo!
vt=51947/*http:/uk.promotions.yahoo.com/forgood/>  for Good 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.xiph.org/pipermail/speex-dev/attachments/20080211/a21cea7d/attachment.htm

More information about the Speex-dev mailing list