Forums

Narrow band energy and echo cancellation

Started by Steve Underwood August 5, 2003
Hi,

I am trying to implement a G.168 compliant echo canceller. I'm 
conversant with most aspects of cancellation, including the problems of 
mis-training on signal with strong continuous spectral lines. However, I 
have never been forced to cure this problem before. :-)

It seems clear there is no way to get a canceller through the G.168 
tests unless it freezes its adaption when the signal is too narrow band. 
My question is how do people usually detect this condition? There is a 
wealth of info on the web about most aspects of cancellers. However, on 
the narrow band topic the only things are find are notes that you need 
to deal with the problem.

I see several obvious robust solutions, but they require quite a lot of 
computation. Just looking at the energy and declaring its a tone (or say 
DTMF) if the energy is too constant seems to work, but I question its 
robustness. Something makes me think I am missing an obvious 
computationally lightweight solution. Can anyone enlighten me?

By the by. Does anyone know why the CSS in G.168 is specified at 44.1k 
samples per second, when G.168 seems purely about 8k sample per second 
telephony?

Regards,
Steve

Steve,

Here is what I am doing for the reason similar to yours:
Compute the normalized autocorrelation function of the center clipped
signal once a while. You don't have to do it continuously. If the ACF
has stable and strong maximums, the signal is not good for training.
Also, the ACF criteria may be used to detect howling due to acoustic
feedback.

Vladimir Vassilevsky, Ph.D.

DSP and Mixed Signal Design Consultant

http://www.abvolt.com
    



Steve Underwood wrote:
> > Hi, > > I am trying to implement a G.168 compliant echo canceller. I'm > conversant with most aspects of cancellation, including the problems of > mis-training on signal with strong continuous spectral lines. However, I > have never been forced to cure this problem before. :-) > > It seems clear there is no way to get a canceller through the G.168 > tests unless it freezes its adaption when the signal is too narrow band. > My question is how do people usually detect this condition? There is a > wealth of info on the web about most aspects of cancellers. However, on > the narrow band topic the only things are find are notes that you need > to deal with the problem. > > I see several obvious robust solutions, but they require quite a lot of > computation. Just looking at the energy and declaring its a tone (or say > DTMF) if the energy is too constant seems to work, but I question its > robustness. Something makes me think I am missing an obvious > computationally lightweight solution. Can anyone enlighten me? > > By the by. Does anyone know why the CSS in G.168 is specified at 44.1k > samples per second, when G.168 seems purely about 8k sample per second > telephony? > > Regards, > Steve
Steve,
I must caution you that if you detect narrowband signals and NEVER
adapt in their presence, then you would not pass test 7, the stability
test.

Maurice Givens


Steve Underwood <steveu@dis.org> wrote in message news:<bgot71$hr1$1@hfc.pacific.net.hk>...
> Hi, > > I am trying to implement a G.168 compliant echo canceller. I'm > conversant with most aspects of cancellation, including the problems of > mis-training on signal with strong continuous spectral lines. However, I > have never been forced to cure this problem before. :-) > > It seems clear there is no way to get a canceller through the G.168 > tests unless it freezes its adaption when the signal is too narrow band. > My question is how do people usually detect this condition? There is a > wealth of info on the web about most aspects of cancellers. However, on > the narrow band topic the only things are find are notes that you need > to deal with the problem. > > I see several obvious robust solutions, but they require quite a lot of > computation. Just looking at the energy and declaring its a tone (or say > DTMF) if the energy is too constant seems to work, but I question its > robustness. Something makes me think I am missing an obvious > computationally lightweight solution. Can anyone enlighten me? > > By the by. Does anyone know why the CSS in G.168 is specified at 44.1k > samples per second, when G.168 seems purely about 8k sample per second > telephony? > > Regards, > Steve
Hi Vladimir,

Vladimir Vassilevsky <vlv@abvolt.com> wrote in message news:<3F302D69.D6E27FF0@abvolt.com>...
> Steve, > > Here is what I am doing for the reason similar to yours: > Compute the normalized autocorrelation function of the center clipped > signal once a while. You don't have to do it continuously. If the ACF > has stable and strong maximums, the signal is not good for training. > Also, the ACF criteria may be used to detect howling due to acoustic > feedback. > > Vladimir Vassilevsky, Ph.D.
I thought about autocorrelation, but it rung high compute alarm bells. However, after thinking about this some more I think you have the right approach. The autocorrelation need only be calculated every 10ms (maybe much longer) to be effective. The compute load is not, therefore, that bad. Using autocorrelation certainly gets to the heart of the problem, and identifies exactly the kind of signal that will be troublesome. Lets see how well it works...... Regards, Steve
Hi Maurice,

I really appreciate getting some input from one of the people behind
the G.168 spec. I already understood the issue you describe, but your
prompting has made me think a little more about it. It seems a lot of
commercially available G.168 compliant packages are compliant in
everything but test 7 :-) I have seen several that list test 7 as the
only test they do not even try to pass. However, passing it doesn't
seem too big a problem (unless I am missing something).

If I detect narrowband energy and save a known good set of coeffs.
that were adapted before it, I can then restore those coeffs. when the
narrow band energy ceases. In the meantime, I can adapt to the
narrowband energy and zap it. The case of a freshly initialised
canceller, starting with narrowband energy injected, is just an
extreme case, where the only set of coeffs to go back to is all zeros.
I then adapt on the first non-narrowband energy from this all zeros
condition. Since the coeffs adapted with narrowband energy are useless
for anything but that signal, starting from scratch on the
non-narrowband energy seems like no loss.

Does that strategy leave me with any serious problems?

Regards,
Steve


maurice.givens@ieee.org (Maurice Givens) wrote in message news:<eb93cce8.0308060650.dd67b54@posting.google.com>...
> Steve, > I must caution you that if you detect narrowband signals and NEVER > adapt in their presence, then you would not pass test 7, the stability > test. > > Maurice Givens
Steve,
When I worked on G.168 (through the 2002 version) the manufacturers
represented in the group all passed test 7 (including us).  At first
glance, what you suggest seems OK.

Maurice Givens


steveu@coppice.org (Steve Underwood) wrote in message news:<80bddbd7.0308061718.4806b8c7@posting.google.com>...
> Hi Maurice, > > I really appreciate getting some input from one of the people behind > the G.168 spec. I already understood the issue you describe, but your > prompting has made me think a little more about it. It seems a lot of > commercially available G.168 compliant packages are compliant in > everything but test 7 :-) I have seen several that list test 7 as the > only test they do not even try to pass. However, passing it doesn't > seem too big a problem (unless I am missing something). > > If I detect narrowband energy and save a known good set of coeffs. > that were adapted before it, I can then restore those coeffs. when the > narrow band energy ceases. In the meantime, I can adapt to the > narrowband energy and zap it. The case of a freshly initialised > canceller, starting with narrowband energy injected, is just an > extreme case, where the only set of coeffs to go back to is all zeros. > I then adapt on the first non-narrowband energy from this all zeros > condition. Since the coeffs adapted with narrowband energy are useless > for anything but that signal, starting from scratch on the > non-narrowband energy seems like no loss. > > Does that strategy leave me with any serious problems? > > Regards, > Steve > > > maurice.givens@ieee.org (Maurice Givens) wrote in message news:<eb93cce8.0308060650.dd67b54@posting.google.com>... > > Steve, > > I must caution you that if you detect narrowband signals and NEVER > > adapt in their presence, then you would not pass test 7, the stability > > test. > > > > Maurice Givens
Hi Maurice,

maurice.givens@ieee.org (Maurice Givens) wrote in message news:<eb93cce8.0308070644.20690628@posting.google.com>...
> Steve, > When I worked on G.168 (through the 2002 version) the manufacturers > represented in the group all passed test 7 (including us). At first > glance, what you suggest seems OK. > > Maurice Givens
If you can get through all the other tests, getting through 7 as well doesn't look too additionally difficult. When I did Google searches on aspects of echo cancellation, it obviously threw up all the product sheets as well as papers on the subject. I saw several that say in big letters "FULLY COMPLIANT WITH G.168-2000" and in very small letters "except for test 7". Steve