New echo suppressor in SVN

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dear all,

[FYI, just posted this on http://blog.pjsip.org/]

As many have probably experienced it first hand, the echo suppressor (ES) in
pjmedia sucks, to put it mildly. And this has made matters worse since ES
plays such a major role in PDA's and/or mobile devices/smartphones, since
echoes are heavily present on these devices and we can't really put the
Accoustic Echo Canceller (AEC) on these devices due to the high processing
requirements of the AEC (see our results in Evaluating PJMEDIA Performance
article [1]).

So we scrapped the old echo suppressor and wrote another one from scratch.
And I think this one works quite well.

First of all, it's low-complexity so it doesn't require high processing
requirements. We tested on a PocketPC 2003 PDA with 312MHz StrongARM CPU, it
only uses less than 0.5% (half percent) of CPU. So it's very affordable for
these devices.

And most importantly, I think it works! It suppresses echo significantly,
and also it allows double-talk, where both parties are talking at the same
time. This is a very important to allow enjoyable conversation between two
people, so we've made sure that the new echo suppressor supports this.

For those who care with the details, the ES works by comparing the audio
level pattern in the input signal from the microphone with the audio level
pattern in the playback signal during the learning process. It calculates
the correlation values for each tail position up to the configured echo tail
length, and finds out which tail position has the best correlation value.
This position is then marked as the echo position. While doing this, the ES
also notes the gain factors, that is how much de-amplification to be applied
to the input signal in order to remove the echo from the input. Once the
tail position is found, the ES then applies the appropriate gain factor
according to the state of the conversation (e.g. I'm talking you're silent,
you're silent I'm talking, we're both talking, etc.).

This works pretty well. On the downside though, we noticed that the ES still
seems to let a quiet echo to pass and transmitted back to remote party,
depending on the signal level at the time. For now we allow this to happen
since the echo level is very low and  doesn't seem to be too annoying, and
lacking enough experience with the new algorithm we don't want to make it
cut signals too aggressively yet since it may inadvertently cut the "good"
signal.

The new echo suppressor is available in SVN as pjmedia/echo_suppress.c [2],
and it will be included in the next release.

Enjoy
 - Benny



[1] http://blog.pjsip.org/2008/07/08/evaluating-pjmedia-performance/
[2]
http://trac.pjsip.org/repos/browser/pjproject/trunk/pjmedia/src/pjmedia/echo_suppress.c
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/attachments/20080815/96342552/attachment.html 


[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux