[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