[Speex-dev] Notch Filter in AEC

Steve Underwood
Thu, 04 Mar 2010 02:05:44 -0000

On 03/03/2010 10:22 PM, QianBin wrote:
> Hi,
>
>     But in fact, it really affects the voice quality. One of my tester
says, "Is your mouth far way from the mic?"
>     Could you explain why we should cut 200hz below?
>
We already said it affects the quality when the voice is compressed. Are
you asking why that should be?

Even with a simple form of lightly lossy compression like alaw/ulaw, a
big low frequency waveform can push the coder into using coarse steps,
so the more interesting energy in the middle of the voice band is coded
with those coarse steps - i.e. poorly.

Low bit rate codecs, like G.729 or speex, usually apply their own fast
rolloff filter for low frequencies - e.g. G.729 rolls off its input
hard, with a turnover at 140Hz - their whole coding methodology tends to
break down without that.

The telephone network normally rolls off hard below about 300Hz, so this
actually perfectly normal voice for a phone call.

A second reason to remove the bass frequencies is if you don't you can
get nasty echoes if the audio is sent to the PSTN. Analogue PSTN
interfaces don't always remove the bass frequencies, and digital
interfaces (BRI/E1/T1) never do. If you sent those frequency through an
analogue segment of the network, the hybrids can do horrible non-linear
things that the echo cancellers cannot handle. To protect their own
stability, echo cancellers may insert their own bass filter when then
switch on, but its poor practice to rely on that. Its better not to
throw the bass frequencies at them.

>> The notch filter is specifically designed to cut below 200 Hz when
>> working in narrowband. In wideband, the cutoff is more around 50 Hz.
The
>> reason is that in narrowband operation (irrespective of the codec),
>> you're not really supposed to have anything below ~200 Hz, but a
lot of
>> people forget that.
>>
>> 	Jean-Marc
>>
>> On 2010-03-03 02:40, brant wrote:
>>
>>> Hi,
>>>
>>>     The notch filter in AEC is only used to remove DC signal, and
the time of convergence is not important, right?
>>> If so, I think preset value of notch_radius is too small, and it
causes noticeable distortion(freq<  200hz cut).
>>> There is a picture in attachment to show signals under different
radius in time-domain.
>>>    By setting notch_radius to 0.999 for all sampling rates, I found
better voice effect(distortion), while AEC still
>>> working fine.
>>>
Steve