3

How do I take the average of multiple fast Fourier transforms (ffts)?

I have multiple audios that I want to take the fft of and then average these results to smooth out the random noise that appears in each audio. The ffts of the audios are shown in the graph below.

A plot of power against frequency for a range of audios

However the problem I'm having is that I can't work out how to ensure that all the arrays I'm averaging have the same length and the same frequency spacing, because sampling the audios at a rate inversely proportional to their length makes them the same size, however it changes the frequency spacing of each audio sample.

What I'm trying to do is find a way to average all these results so I can look for trends in the signal. The audios are from a particular species of birds, so averaging across multiple recordings would give me an insight into the frequencies at which this species communicates at and could be used to do the same for other species.

1 Answers1

2

One simple solution is to pick a fixed-size window (of $w$ samples). Then, break down each audio sample into multiple windows, compute the FFT on each window, and average all of the results.

Another possible approach is to pick a fixed array length $L$; take the output of the FFT on each sample and resize that array to be of length $L$ using upscaling/downscaling; and then average all of those length-$L$ arrays.

I don't know which is best -- I am not an expert on signal processing, and what is best for your needs might depend on your particular situation and what you'll do with the results.

D.W.
  • 167,959
  • 22
  • 232
  • 500