I am currently coding a school assignment. I have a 1.5s recording of someone's speech that has 4 rogue cosines mixed in. With sampling rate 16000Hz, I divided the recording into frames of 1024 samples with an overlap of 512 samples.
I picked up a frame that has no speech mixed in so that the rogue cosines are not influenced by the the speaker's voice.
Here is the resulting plot of the magnitude of the discrete fourier transform (the phase part is not needed right now):
With a range from 0 to 8000Hz, with the frequency bins sized 16000/1024=15.625Hz, I was able to pinpoint the frequencies of these out. It's about 875, 1750, 2625, 3500, each in Hz.
My first question is this: what does the vertical axis reprezent on the DFT? Yes, it's the magnitude, but what does it really mean? Does it mean that the cosine wave with the frequency 875 Hz has an amplitude of 30? Or is it 60 as there is also the negative frequency?
Our next goal was to filter these out. Okay, so I constructed a filter that has zeroes at those frequencies (and their conjugated pairs for the negative frequencies). Here is what its transfer function looks like:
The coefficients of zeroes are:
$$ 1, -4.847, 12.176 , -20.048 ,23.521, -20.048, 12.176 ,-4.847 , 1 $$
The coefficient of a singular pole is: $$1$$
I thought that would destroy these four frequencies, but it, however, destroyed all frequencies up to about 12000Hz.
Here is the frequency response graph:
To sum it up, there are two things I do not understand:
The meaning of the vertical axis in DFT and its relationship with the amplitudes of the cosines im looking for.
Why the filter filtered out almost everything in my signal.