# Is interpolation of an audio signal to increase frequency resolution possible?

I apologize if some of what I ask is not entirely correct, I'm new to this field, but extremely interested.

I have an Audio signal of sample rate 44.1 kHz that I want to segment into 30 frames, and get the DFT of each frame to find the magnitude of certain frequencies for that frame. However, this means that I have a frequency resolution of 30 Hz in each bin, which isn't narrow enough.

Is it possible to interpolate the data to attain more data samples? As far as I'm aware, doubling the number of points would give a 88.2 kHz sampling rate, but still give a frequency resolution of 30. Would it be possible to treat the interpolated data as still having a sample rate of 44.1 kHz?

• This question seems to be a dup of multiple others. Apr 3, 2017 at 2:39

The (very) short answer is no, interpolation does not increase resolution: no new data, no new information (Note that strictly speaking, the usage of "resolution" is not appropriate according to common definitions of the term. Check also the comment of hotpaw2, and also his answer).

A longer answer needs the following spectrum visualization (time domain, continuous frequency domain, and discrete frequency domain from left to right). I assume no aliasing for the sake of simplicity and therefore clarity. The interpolation technique preserves the information of the spectrum. The output of DFT is a set of frequency bins spanning from $$-f_s$$ to $$+f_s$$.

First, look at the continuous frequency domain, if you upsample your signal correctly, it is equivalent to increasing the sampling frequency. You wish to double the number of data, but it is just removing one-half the spectrum replicas of the sampling process.

Now, look at the discrete frequency domain. This version is normalized from $$-f_s$$ to $$+f_s$$ of the continuous frequency counterpart. As $$f_s$$ is doubled, the spectrum is then shrunk by a factor of $$1/2$$. If we call $$0 < \alpha < 1$$ the proportion of non-zero frequencies before upsampling, it becomes $$\alpha/2$$ after upsampling. Before upsampling, DFT gives you $$N$$ bins for $$\alpha$$ then $$N\alpha$$ bins for the spectrum; after upsampling it is $$2N$$ for $$\alpha/2$$ then always $$2N \times \alpha/2 = N\alpha$$ bins for the same spectrum. No, your resolution does not change at all.

To have a "better" resolution, the only way is to add more data. In your example, instead of dividing to 30 frames, divide your audio file to 15 frames.

• Thanks very much for this, I understand a lot better now! I ended up looking into Short Time Fourier Transforms with overlapping windows, a a frame rate of 25 frames per second, ending up with a frequency resolution of 10 Hz. For higher frame rates, since I couldn't interpolate the source data, I found that interpolating the output data to suffice quite well! Apr 4, 2017 at 17:14
• This answer confuses information with resolution. They are not the same, especially given the many common definitions of resolution. Dec 19, 2021 at 17:45
• @hotpaw2 I used the term "resolution" in the way I believed the OP meant by asking "Is it possible to interpolate the data to attain more data samples?". Feel free to add your own answer if you think I have misunderstood the question. Dec 19, 2021 at 17:51
• @hotpaw2 Did not notice that you did answer the question. Well, I would say that I agree "resolution" is not an appropriate term, but I don't think the answer is incorrect for this specific question. I will add your comment to my question if you don't mind. Dec 19, 2021 at 18:00

"Interpolation" consists basically of two steps. The first is convolution with an interpolation function in the time domain corresponding with a simple multiplication in the frequency domain. The second is resampling with a higher density in the time domain. If your total transform window retains the same time span in the time domain, the frequency spacing of your bins in the frequency domain doesn't change, you just get more of them. If your interpolation function does a good job at being a low-pass filter, the additional bins will be mostly zero. If your interpolation function does a bad job at being a low-pass filter, the additional bins will be mostly nonsense.

So basically if you want to increase your frequency resolution, the way to do this is to rather increase your transform window length. Which, of course, happens at the cost of your time resolution for tracking changing signal characteristics.

The overall tradeoff of time and frequency resolution when viewed as a quadratic measure is best for a Gaussian in both time and frequency space which means that for best resolution each frequency needs its own windowing function in the time domain.

Which leads to quadrature mirror filters and wavelet transforms as means to stay closer to the theoretical time/frequency resolution tradeoff (which is a hard mathematical limit related to the Heisenbergsche Unschärferelation) than a STFT can while losing some of its interpretability.

TLDR: for better frequency resolution you need longer time windows. Interpolation does not give you better resolution, it might just make for nicer bins by pushing the Nyquist frequency further away from relevantly non-zero bins. This does not add information but might make the existing information a bit nicer to interpret and manipulate at the upper range of the frequency content.

Interpolation in the frequency domain does not increase peak separation resolution, nor increase "information", but it can increase frequency estimation resolution if the signal-to-noise ratio is high enough.

You can interpolate the FFT results either by Sinc kernel interpolation (perhaps windowed), or by using a much longer zero-padded FFT, which both produce similar results. The greater density of result points generated by interpolation or a zero-padded FFT increases the probability the a plot point is closer to some random isolated spectral peak, compared to using a much lower resolution, thus likely reducing the nearest-plot-point frequency estimation error.

As others like AlexTP pointed out interpolation will not give you a better frequency resolution. If Fs is your sampling frequency and N is the number of samples in your signal, the size of your bins and hence the frequency resolution will be Fs/N. If you divide your signal / audio in 30 segments the frequency resolution will be 30 times less and my guess is this is your issue. Based on the uncertainty principle the higher the required resolution in time, the lower the resolution in frequency has to be. Based on what exactly you are trying to do you can look up STFT and wavelet transform as alternatives to FFT/DFT.