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
Narrow band energy and echo cancellation
Started by ●August 5, 2003
Reply by ●August 5, 20032003-08-05
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
Reply by ●August 6, 20032003-08-06
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
Reply by ●August 6, 20032003-08-06
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
Reply by ●August 6, 20032003-08-06
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
Reply by ●August 7, 20032003-08-07
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
Reply by ●August 8, 20032003-08-08
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 GivensIf 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