I'm sorry if this question is incorrectly phrased, as I have never asked my own question on stack overflow. So I have a project where I want to figure out a specific characteristic through their sound, and my current idea is basically to do a fast fourier transform, and get the frequencies and amplitudes of all the peaks, then feed that into a neural network to get a prediction for that sound's class. So I'm doing a reduced run, with only two classes, two 5 minute audios which I then slice into hundreds of smaller randomly sized snippets. Then I used NumPy's fft.fft function and got a super noisy frequency domain back: The frequency domain for class one The frequency domain for class two There is a clear characteristic peak on all of the class two spectra, but the data is so noisy, when I use the SciPy find_peaks function it returns, like, a gazillion peaks (obviously, the data is pretty much all peak). Then I decided to apply a Savitsky Golay filter, but the characteristic peaks's amplitude is greatly reduced by this. The smoothed over frequency domain for class two, notice that the peak is much smaller than what is shown on the non smoothed one Now my question is basically, how can I only find the peaks I want? I tried also using the prominence parameter on the find_peaks function, but it doesn't seem to actually change anything, and it's documentation doesn't make much sense to me. Futher also, I figured the best type of neural network for this use would be an RNN since the number of peaks is variable, but I'd like to get a second opinion on if I'm finding the best parameters and if an RNN would notice these changes. What I expect when I analyze more classes is basically that the amplitude of the characteristic class 2 peak would increase and a few other peaks would appear. Continue reading...