[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 

speex_echo_playback 

speex_echo_capture

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

 

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.

 

Thanks



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.

 

 

Regards,

Dennis

 


  _____  


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
audio.

 

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,
ECHO_FILTER_SIZE);

 

ECHO_FRAME_SIZE = 128

ECHO_FILTER_SIZE = 1024

 

Any ideas?

 

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

 

Regards

  


  _____  


Sent from Yahoo!
<http://us.rd.yahoo.com/mailuk/taglines/isp/control/*http:/us.rd.yahoo.com/e
vt=51949/*http:/uk.docs.yahoo.com/mail/winter07.html>  - a smarter inbox.

 

  

  _____  

Support the World Aids Awareness campaign this month with Yahoo!
<http://us.rd.yahoo.com/mailuk/taglines/isp/control/*http:/us.rd.yahoo.com/e
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