all, I have an audio recording that contains several frequency-modulated elements (think animal calls like birds/bats). I have read this file into Matlab using 'audioread' and plotted the oscillogram from which I took timing information (duration, interval of calls, etc...). I then used the 'spectrogram' function to plot the frequencies. I don't fully understand the output of this function [s,f,t] = spectrogram(signal,window,overlap,fft,Fs). I know that 's' should yield my frequencies but this is a matrix of complex numbers and I'm not sure what to do with it. There is a ton of information on generating these values but I can't seem to find anything about what to do after. My ultimate goal is to isolate each element of the audio file (i.e. each chirp/call) and determine the highest, lowest, and peak frequencies as well as overall bandwidth. The method I used to isolate each call is to use the on- and offset of each element to determine a slice and then perform a separate FFT (using spectrogram function) for each slice. This gives me 's','f', and 't' for each element but I'm still not sure how to manipulate this output to get the desired metrics. If anyone has a solution for all or part of my issue, or can perhaps just explain the concepts I am missing, I would be very appreciative.
This is an example of the type of audio files I have. This was generated using an FFT size 512.
When I attempt to isolate the first element in the above spectrogram, I take a time slice and generate another spectrogram (also FFT = 512) and get this. This is not actually what I want to generate.
I would like to see something like this (a zoomed in version of the first plot).
So that I can measure these parameters, preferably not by hand as there are hundreds of thousands of them.