DSPRelated.com
Forums

echo canceller initial convergence

Started by Unknown February 15, 2006
Hi All,

I am trying to implement a long tail (selectable 512/1024 taps) echo
canceller thats compliant at least with tests 2 and 3 of g.168. The
implementation is using leaky NLMS,
coded in C using 16 bit fixed point arithmetic (the coefficients are
also stored as 16 bit, not
32). I have two concrete questions and, in addition to those, wanted to
put out a "general call
for advice". The questions are:

1. g.168 test 2A states that the EC needs to converge within 1s. I am
having a really rough
    time meeting that requirement. Closest I can come is ~2s. I
understand this is in part
    due to the large amount of taps in the EC filter. Can anyone
suggest some approaches
    I can take to try and fit in the required convergence time?

2. For most input levels I can achieve >35dB0 ERLE, which satisfies the
spec. but there are
    a few cases with strong far end signals for which the ERLE of my
implementation drops
    bellow 35dB0. Can anyone comment on the chances of meeting 35dB0
ERLE with 16 bit
    coefficients?

Beyond the above two questions, I would be extremely gratefull for any
advice related to
implementing a line echo canceller.

Thanks,
Ljubisa Bajic

Hello,

I guess your are using very small step size as well (I don't know if
you are using fixed or variable step size). The requirement to use
small step size is because of speech singal nature.

The step size control is the key design parameter for faster
convergence.
One way is to decorrelate speech signal using some pre-whitened filter.
This will help to increase step size without sacrifying much into
MSE(ERLE).

Some peopple use subband methods(SUBAND NLMS) for large tap size which
inheritably whitens speech signal to some extent.

You can have a look with Prof. Ali Sayed website with various adaptive
algorthms as well as step size designing - this may be  bit theoretical
but you can  extract the right thing.


http://www.ee.ucla.edu/faculty/bios/sayed.htm

Regarding prewhitened filter design and computational  savings at the
same time can be found in many references.
Cheers,
Santosh

eternal_nan@yahoo.com wrote:
> Hi All, > > I am trying to implement a long tail (selectable 512/1024 taps) echo > canceller thats compliant at least with tests 2 and 3 of g.168. The > implementation is using leaky NLMS, > coded in C using 16 bit fixed point arithmetic (the coefficients are > also stored as 16 bit, not > 32). I have two concrete questions and, in addition to those, wanted to > put out a "general call > for advice". The questions are: > > 1. g.168 test 2A states that the EC needs to converge within 1s. I am > having a really rough > time meeting that requirement. Closest I can come is ~2s. I > understand this is in part > due to the large amount of taps in the EC filter. Can anyone > suggest some approaches > I can take to try and fit in the required convergence time? > > 2. For most input levels I can achieve >35dB0 ERLE, which satisfies the > spec. but there are > a few cases with strong far end signals for which the ERLE of my > implementation drops > bellow 35dB0. Can anyone comment on the chances of meeting 35dB0 > ERLE with 16 bit > coefficients? > > Beyond the above two questions, I would be extremely gratefull for any > advice related to > implementing a line echo canceller. > > Thanks, > Ljubisa Bajic
I doubt you can obtain high performance using NLMS (i.e. fast & 
robust/stable convergence) for speech & music signals.  There are far 
better ways of implementing long tail (selectable 512/1024 taps) echo 
canceller.

As a reference, see for example the high performance demo of the 
EchoKiller, Compandent's Acoustic Echo Canceler designed for speech and 
music signals:
http://www.Compandent.com/products_echokiller.htm

DFG

eternal_nan@yahoo.com wrote:
> Hi All, > > I am trying to implement a long tail (selectable 512/1024 taps) echo > canceller thats compliant at least with tests 2 and 3 of g.168. The > implementation is using leaky NLMS, > coded in C using 16 bit fixed point arithmetic (the coefficients are > also stored as 16 bit, not > 32). I have two concrete questions and, in addition to those, wanted to > put out a "general call > for advice". The questions are: > > 1. g.168 test 2A states that the EC needs to converge within 1s. I am > having a really rough > time meeting that requirement. Closest I can come is ~2s. I > understand this is in part > due to the large amount of taps in the EC filter. Can anyone > suggest some approaches > I can take to try and fit in the required convergence time? > > 2. For most input levels I can achieve >35dB0 ERLE, which satisfies the > spec. but there are > a few cases with strong far end signals for which the ERLE of my > implementation drops > bellow 35dB0. Can anyone comment on the chances of meeting 35dB0 > ERLE with 16 bit > coefficients? > > Beyond the above two questions, I would be extremely gratefull for any > advice related to > implementing a line echo canceller. > > Thanks, > Ljubisa Bajic >