I have to calculate the periodicity of a audio signal like this: enter image description here You can see by eye, that the volume rises the highest every second "blob". The spectogram (that is visualized logarithmically) shows this periodicity quite good.

The first idea to calculate this was with autocorrelation. But when doing this with the volume in dB I didn't get any clear results: enter image description here

Should I use the fast fourier transform to do the auto correlation with the frequency? Is there any preprocessing that is important with audio signals? I'm fairly new to audio processing and data science in general.

My second thought was to use a convolutional neural network and use the volume and frequency to train the model. But that requires more training data to configure the system.

Here is the FFT of the ACF: enter image description here

  • $\begingroup$ Seems like you should get a nice peak if you take the FFT of that ACF, did you plot that? CNN will require labeled training data, and it seems creating such data for this might be cumbersome. $\endgroup$
    – Engineer
    Jan 4 '21 at 16:19
  • $\begingroup$ @Engineer I get a peak, but I'm confused why: i.imgur.com/UAV8QKQ.png Is the yellow line with z value 0 my periodicity? $\endgroup$
    – c111
    Jan 4 '21 at 18:00
  • $\begingroup$ That is a spectrogram, which is like taking a bunch of FFTs over time (that is why you have time on the x-axis and FFT bins on the y-axis). This is good since as we thought there is a strong peak in there at a specific frequency. A good estimate of the frequency at which those volume increases are happening will be wherever that peak is (you need to know your sampling rate to convert FFT bin to frequency). $\endgroup$
    – Engineer
    Jan 4 '21 at 19:12
  • $\begingroup$ Thanks for your help so far! Oh yeah, my bad. This is the FFT: imgur. I don't show the units because frankly I'm confused what they are. The y-axis is in log10, the peak is at 124. Because of the FFT I have to double it, right? So 248. But it should be 5333 because my signal repeats every 1.33 seconds at 4000Hz. Or does that just mean that the frequency 248Hz is most frequent when the signal repeats? $\endgroup$
    – c111
    Jan 5 '21 at 9:19
  • $\begingroup$ @c111, the yellow line corresponds to the peak frequency of your signal but it seems that's not what you're after, is it? If you want to find the periodicity of those blobs (that look like an AM signal), you could try computing the envelope of your signal signal ( easy to do), and then running an FFT on the envelope data. $\endgroup$
    – dsp_user
    Jan 5 '21 at 11:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.