Removing high frequency hum from audio

  • Follow


This should be a familiar problem to many of you. I recorded animal
vocalizations at 100kHz, and they have a frequency content from 200Hz
to about 35kHz. Unfortunately (what with old age...) I didn't hear that
a TV monitor in the room generated a very strong 16kHz and 32kHz.
It's quite stable in frequency but with a strong (regular) amplitude
modulation. I am having a heck of a hard time removing the 16k. I can't just
notch filter it, because with the amplitude modulation I have to have a
somewhat wide filter, and there's signal there I don't want to remove.

I was hoping for an adaptive method to remove this high frequency hum. I
tried filtering the signal from 15k to 17 k, and minimizing an energy
functional of the form
(signal - A(t)*sin(2*pi*16000*t + phase)),
with the amplitude A(t) a second order polynomial, or filtering very
narrowly around 16k and using the Hilbert transform to determine the
amplitude of the 16k sinusoid, and then determine the phase as above, and
that reduces the noise quite a bit, but not enough.

Is there another obvious method I am missing.
I would think there should be a way, Kalman-filtering-style, to track the
16k hum, period by period, and subtract it, but I can't seem to implement
it.  Any algorithms out there (Matlab would be best) that could help me out?

			TIA!

						Didier

-- 
Didier A Depireux         ddepi001@umaryland.edu  didier@isr.umd.edu
20 Penn Str - S218E   http://neurobiology.umaryland.edu/depireux.htm
Anatomy and Neurobiology                   Phone: 410-706-1272 (lab)
University of Maryland                                   -1273 (off)
Baltimore MD 21201 USA                           Fax: 1-410-706-2512
0
Reply Didier 2/4/2005 5:32:41 AM

Didier A. Depireux wrote:
> This should be a familiar problem to many of you. I recorded animal
> vocalizations at 100kHz, and they have a frequency content from 200Hz
> to about 35kHz. Unfortunately (what with old age...) I didn't hear that
> a TV monitor in the room generated a very strong 16kHz and 32kHz.
> It's quite stable in frequency but with a strong (regular) amplitude
> modulation. I am having a heck of a hard time removing the 16k. I can't just
> notch filter it, because with the amplitude modulation I have to have a
> somewhat wide filter, and there's signal there I don't want to remove.
> 
> I was hoping for an adaptive method to remove this high frequency hum. I
> tried filtering the signal from 15k to 17 k, and minimizing an energy
> functional of the form
> (signal - A(t)*sin(2*pi*16000*t + phase)),
> with the amplitude A(t) a second order polynomial, or filtering very
> narrowly around 16k and using the Hilbert transform to determine the
> amplitude of the 16k sinusoid, and then determine the phase as above, and
> that reduces the noise quite a bit, but not enough.
> 
> Is there another obvious method I am missing.
> I would think there should be a way, Kalman-filtering-style, to track the
> 16k hum, period by period, and subtract it, but I can't seem to implement
> it.  Any algorithms out there (Matlab would be best) that could help me out?

Didier,

I think you may achieve better results by modeling the source of the 
hum. It looks like the cause is the horizontal deflection drive circuit 
in the TV monitor. It applies a high-voltage sawtooth-shaped waveform 
with frequency of 15734 Hz (for NTSC) to the CRT. So maybe you can model 
this waveform, synchronize it to your recorded signal, and subtract it.

Some info is available here and you can find more on the net:
http://www.ntsc-tv.com/ntsc-main-02.htm

HTH,
-- Georgi
0
Reply gbH8SPAM (21) 2/4/2005 5:39:53 PM


Didier A. Depireux wrote:

> This should be a familiar problem to many of you. I recorded animal
> vocalizations at 100kHz, and they have a frequency content from 200Hz
> to about 35kHz. Unfortunately (what with old age...) I didn't hear that
> a TV monitor in the room generated a very strong 16kHz and 32kHz.
> It's quite stable in frequency but with a strong (regular) amplitude
> modulation. I am having a heck of a hard time removing the 16k. I can't just
> notch filter it, because with the amplitude modulation I have to have a
> somewhat wide filter, and there's signal there I don't want to remove.
> 
> I was hoping for an adaptive method to remove this high frequency hum. I
> tried filtering the signal from 15k to 17 k, and minimizing an energy
> functional of the form
> (signal - A(t)*sin(2*pi*16000*t + phase)),
> with the amplitude A(t) a second order polynomial, or filtering very
> narrowly around 16k and using the Hilbert transform to determine the
> amplitude of the 16k sinusoid, and then determine the phase as above, and
> that reduces the noise quite a bit, but not enough.
> 
> Is there another obvious method I am missing.
> I would think there should be a way, Kalman-filtering-style, to track the
> 16k hum, period by period, and subtract it, but I can't seem to implement
> it.  Any algorithms out there (Matlab would be best) that could help me out?

What's to adapt? If you know the modulating frequency -- 60 HZ? -- you
need notch filters at 15750 (B/W) and at 15750 �60n, n = 1, 2, ....

Jerry
-- 
Engineering is the art of making what you want from things you can get.
�����������������������������������������������������������������������
0
Reply jya (12866) 2/4/2005 5:44:10 PM

Didier A. Depireux wrote:
> This should be a familiar problem to many of you. I recorded animal
> vocalizations at 100kHz, and they have a frequency content from 200Hz
> to about 35kHz. Unfortunately (what with old age...) I didn't hear
that
> a TV monitor in the room generated a very strong 16kHz and 32kHz.
> It's quite stable in frequency but with a strong (regular) amplitude
> modulation. I am having a heck of a hard time removing the 16k. I
can't just
> notch filter it, because with the amplitude modulation I have to have
a
> somewhat wide filter, and there's signal there I don't want to
remove.
>
> I was hoping for an adaptive method to remove this high frequency
hum. I
> tried filtering the signal from 15k to 17 k, and minimizing an energy
> functional of the form
> (signal - A(t)*sin(2*pi*16000*t + phase)),
> with the amplitude A(t) a second order polynomial, or filtering very
> narrowly around 16k and using the Hilbert transform to determine the
> amplitude of the 16k sinusoid, and then determine the phase as above,
and
> that reduces the noise quite a bit, but not enough.
>
> Is there another obvious method I am missing.
> I would think there should be a way, Kalman-filtering-style, to track
the
> 16k hum, period by period, and subtract it, but I can't seem to
implement
> it.  Any algorithms out there (Matlab would be best) that could help
me out?

What about going back to the lab to record the bacground noise
from this equipment, find a spectrum estimate of the noise
and based on that, design the inverse filter?

Rune

0
Reply allnor (8474) 2/5/2005 11:03:02 AM

I don't get this part:

"
It's quite stable in frequency but with a strong (regular) amplitude
modulation. I am having a heck of a hard time removing the 16k. I can't
just notch filter it, because with the amplitude modulation I have to
have a somewhat wide filter, and there's signal there I don't want to
remove.
"
If the frequency of the 16k tone stays constant, a tight notch should
do the trick (why a wider filter?). Amplitude modulation doesn't matter
in that case. Can you elaborate?

0
Reply an2or (301) 2/5/2005 11:44:10 AM

Andor wrote:

> I don't get this part:
> 
> "
> It's quite stable in frequency but with a strong (regular) amplitude
> modulation. I am having a heck of a hard time removing the 16k. I can't
> just notch filter it, because with the amplitude modulation I have to
> have a somewhat wide filter, and there's signal there I don't want to
> remove.
> "
> If the frequency of the 16k tone stays constant, a tight notch should
> do the trick (why a wider filter?). Amplitude modulation doesn't matter
> in that case. Can you elaborate?
> 

His interfering signal carrier frequency is VERY stable at 15750 Hz. The 
AM modulation is a 30 Hz ( TV frame rate ) rectangular wave with a duty 
cycle determined by the duration of the vertical blanking pulse. And, 
depending on the design of the interfering TV, there could be a 
dependence on the average brightness of the displayed picture.

Thus he has 16 kHz carrier with strong sidebands every 30 Hz.

Since the sounds wavelength is ~2 cm, I suppose he could also have 
misfortune of some of those sidebands displaying resonance effects.


0
Reply rowlett10 (1881) 2/5/2005 2:55:20 PM

Richard Owlett wrote:

> Andor wrote:
> 
>> I don't get this part:
>>
>> "
>> It's quite stable in frequency but with a strong (regular) amplitude
>> modulation. I am having a heck of a hard time removing the 16k. I can't
>> just notch filter it, because with the amplitude modulation I have to
>> have a somewhat wide filter, and there's signal there I don't want to
>> remove.
>> "
>> If the frequency of the 16k tone stays constant, a tight notch should
>> do the trick (why a wider filter?). Amplitude modulation doesn't matter
>> in that case. Can you elaborate?
>>
> 
> His interfering signal carrier frequency is VERY stable at 15750 Hz. The
> AM modulation is a 30 Hz ( TV frame rate ) rectangular wave with a duty
> cycle determined by the duration of the vertical blanking pulse. And,
> depending on the design of the interfering TV, there could be a
> dependence on the average brightness of the displayed picture.
> 
> Thus he has 16 kHz carrier with strong sidebands every 30 Hz.
> 
> Since the sounds wavelength is ~2 cm, I suppose he could also have
> misfortune of some of those sidebands displaying resonance effects.

Almost exactly right. For NTSC color, the frame rate is around 59.94,
making the horizontal rate 15734+. But as you point out, the harmonics
are those of the field rate, half of what I had written.

Jerry
-- 
Engineering is the art of making what you want from things you can get.
�����������������������������������������������������������������������
0
Reply jya (12866) 2/5/2005 5:48:37 PM

Jerry Avins wrote:

> Richard Owlett wrote:

(snip)

>>His interfering signal carrier frequency is VERY stable at 15750 Hz. The
>>AM modulation is a 30 Hz ( TV frame rate ) rectangular wave with a duty
>>cycle determined by the duration of the vertical blanking pulse. And,
>>depending on the design of the interfering TV, there could be a
>>dependence on the average brightness of the displayed picture.

>>Thus he has 16 kHz carrier with strong sidebands every 30 Hz.

>>Since the sounds wavelength is ~2 cm, I suppose he could also have
>>misfortune of some of those sidebands displaying resonance effects.

> Almost exactly right. For NTSC color, the frame rate is around 59.94,
> making the horizontal rate 15734+. But as you point out, the harmonics
> are those of the field rate, half of what I had written.

If it is receiving a broadcast signal it should be extremely 
stable, the FCC requirements are pretty strict.   If the source 
is local, the output of a VCR for example, it won't be quite as 
good, and if it is free running (no input signal) it could be 
almost anything.

-- glen

0
Reply gah (12236) 2/7/2005 6:37:17 PM

"Andor" <an2or@mailcircuit.com> wrote in message
news:1107603850.407068.221420@g14g2000cwa.googlegroups.com...
> I don't get this part:
>
> "
> It's quite stable in frequency but with a strong (regular) amplitude
> modulation. I am having a heck of a hard time removing the 16k. I can't
> just notch filter it, because with the amplitude modulation I have to
> have a somewhat wide filter, and there's signal there I don't want to
> remove.
> "
> If the frequency of the 16k tone stays constant, a tight notch should
> do the trick (why a wider filter?). Amplitude modulation doesn't matter
> in that case. Can you elaborate?

It comes down to the transient behavior of the filter.  The narrower the notch,
the longer it takes to achieve maximum attenuation.  You also can have
interesting effects where when the notched signal goes away, the filter actually
"generates" the notched signal for short transient period.  Basically, the
filter is ringing.  So any changes in the amplitude of the signal being notched
can cause undesirable transient behavior.

If you can, try this experiment:  set-up an IIR filter for a very narrow notch.
Inject a signal at the notch center frequency and listen to it decay.  Then mute
the injected signal and listen to the result.  The filter output will quickly
increase, and then decay to nothing.  The narrower/deeper the filter, the more
noticeable the effect.


0
Reply goldentully (492) 2/7/2005 7:00:49 PM

I remember once my boss told me a similar story: He was asked to design
a notch filter at some custom frequency. He chose a special filter
architecture suited for notching, and implemented an extremely tight
notch. Listening test confirmed that it worked (music with and withou
sine wave).

The customer sent the module back and told us to test it with a vocal
signal. We did - and it sounded like a robot effect! Appearantly, the
strong formants of the voice signal excited the filter to ring,
something which didn't happen with the music signa ...

0
Reply an2or (301) 2/7/2005 7:20:45 PM

On Fri, 04 Feb 2005 09:39:53 -0800, Georgi Beloev
<gbH8SPAM@beloev.net> wrote:

>Didier A. Depireux wrote:
>> This should be a familiar problem to many of you. I recorded animal
>> vocalizations at 100kHz, and they have a frequency content from 200Hz
>> to about 35kHz. Unfortunately (what with old age...) I didn't hear that
>> a TV monitor in the room generated a very strong 16kHz and 32kHz.
>> It's quite stable in frequency but with a strong (regular) amplitude
>> modulation. I am having a heck of a hard time removing the 16k. I can't just
>> notch filter it, because with the amplitude modulation I have to have a
>> somewhat wide filter, and there's signal there I don't want to remove.

>> I was hoping for an adaptive method to remove this high frequency hum. I
>> tried filtering the signal from 15k to 17 k, and minimizing an energy
>> functional of the form
>> (signal - A(t)*sin(2*pi*16000*t + phase)),
>> with the amplitude A(t) a second order polynomial, or filtering very
>> narrowly around 16k and using the Hilbert transform to determine the
>> amplitude of the 16k sinusoid, and then determine the phase as above, and
>> that reduces the noise quite a bit, but not enough.

>> Is there another obvious method I am missing.
>> I would think there should be a way, Kalman-filtering-style, to track the
>> 16k hum, period by period, and subtract it, but I can't seem to implement
>> it.  Any algorithms out there (Matlab would be best) that could help me out?

D,

For TVs there is a wide range of frequencies used in European
countries.  In some other countries that use PAL, the frequency is
15,625.  If a monitor (not TV) has no input signal, the freq could
vary by 450 Hz!

http://www.cctveurope.com/Monitors/monitors.html

If the monitor or TV is audible to human ears, it might be failing
because normally they are silent.

From my experience with removing 50 Hz hum in FFT, an approach could
be to make the program do a calibration by listening for, say, 5
seconds.  The TV f would be constant in f and amplitude, so just
subtract that from the appropriate f bin.  This approach has the
advantage of adapting to different countries where the TV frequency
could vary from 15 kHz to 17 kHz.  As long as the removed f and
amplitude are approximately the same as the TV f, it seems to remove
it effectively without needing to worry about the mic moving around a
room.  Assuming that the FFTsample size period is much greater than
the 16 kHz period, beat frequencies or cyclical variations in f and
amplitude could be ignored.

After that, computer monitors can vary from 35 kHz up to 100 kHz which
might be outside the freq needed.


Sig:
Work saves us from three great evils: boredom, vice and need. -Voltaire,
philosopher (1694-1778)
0
Reply rs158 (50) 2/10/2005 7:23:36 AM

I missed the start of this thread, so I hope that if I am at least heading
at a tangent.

I think a 'morphed' echo canceller configuration should be able to cancel
out any persistent signal.  If you make the learning rate very slow
(minutes) it should not be untrained too much by 'normal' duration signals.
I have not actually done this, so I don't know if it would introduce audible
ringing artifacts.

Such effects could be minimised by limiting the FIR filter block length to a
small number of coefficients, which should limit the maximum possible notch
Q and ringing (and also, unfortunately, notch depth).

Jim Adamthwaite


0
Reply secad (77) 2/14/2005 11:33:50 AM

11 Replies
38 Views

(page loaded in 0.157 seconds)

Similiar Articles:


















7/18/2012 10:51:06 PM


Reply: