# Filtering Overlapping Frequencies in sound file

I have been given a sound file of a plane passing over a rain forest filled with birds. I am supposed to filter out the sound of the plane as it flies over. I've accomplished this with various types of filters in MATLAB, but I always run into one problem. I can either cut out all of the plane and lose some of the background rain forest noise, or leave (almost) all of the rainforest noise and leave a decent amount of airplane noise. This is the frequency spectrum of the original sound file: (Sorry for the crappy image.) Note the different colors represent left and right channels. From the plot, the majority of the plane's frequency is in the 0-1000 Hz range. The plane is clearly heard however until I use a high pass filter to remove everything from around 1700 Hz to 0 like so: I suspect that the plane is causing that spike around 1700 Hz but evidently the rain forest is still producing lower frequency noise than that.

What would be the best method to remove that spike while keeping all that extra rain forest frequency?

EDIT:

Here is the plot of the time domain. Note how the plane gradually gets louder than fades away.

The sampling frequency is 22050 samples/sec.

And the spectrogram.

• How do the signals look in the time domain ? Dec 6, 2014 at 0:21
• @Gilles added the time domain plot Dec 6, 2014 at 4:20
• Perhaps Time-Frequency filtering can help. Can you include a spectrogram?
– ThP
Dec 6, 2014 at 8:23
• @jollypianoman Is that the number of samples or time on the x-axis ? What's your sampling frequency? Dec 6, 2014 at 11:01
• @ThP I'm not familiar with that technique. Is it something that could be implemented easily in MATLAB? I've included my spectrogram. Dec 6, 2014 at 15:22

## 2 Answers

In my opinion, the best approach for this kind of spectrally-overlapping noise is to use blind source separation techniques, like independent component analysis (ICA) or time-frequency masking, or sparse source decomposition. Look up the work of Emmanuel Vincent, Kostas Kokkinakis, or Philipos Loizou. These methods work best when some statistics of the noise are time-independent, and the SNR is small or negative, as appears to be the case in your example. Vincent has some MATLAB code available on the web.

Get Adobe Audition. In the spectrogram mode, find the noise you want to remove. Copy unwanted-noise-free blocks from similar areas (copy, paste, undo, mute, mix-paste) and adjust the volume of some areas by a few decibels to make it look smooth.