Detecting a low frequency cue in audio recording I am hoping to find a linux program or library for a language like perl or python (open to any solution though) to detect low frequency cues in an audio recording.

Ideally I would end up with a printout of timestamps in HH:MM:SS format that correspond to where the cues occur.

Here is visual example of the audio cue:


  


The cue appears to be unique waveform and there is no other sounds at this frequency through out the recording. The frequency is so low that it is in audible. Based on this I assume it must be possible to detect the cues.
You can solve this problem with a simple time based low pass filter, no need for an FFT:


Calculate the minimum integration time you want by dividing your sampling rate by the frequency you want to detect. For a 10Hz at 44100Hz, it would be 4410 samples, so let's take 4500 samples.
Then apply a low pass filter to this group of samples (choosing the right frequency cut), you will isolate the frequencies you want. I do not really know how to use them, but it should look something like this:


$$y(n) = x{(n)}+x(n-1) + ...$$


Calculate the relative power of your filtrated group of samples in dBFS (Full Scale) based on this formula:


$$p_{RMS} = \sqrt{\frac{ x_1^2 + x_2^2 + \ldots}n } $$
$$dbFS = 20\log_{10}\frac{ p_{RMS}}{p_{max}}$$
'n' behind the number of samples and 'pmax' the maximum value of a sample.

If the level you get is superior to a specific threshold of your choice (not to low, because your audio certainly have a tiny low frequency component), then there is a cue, otherwise there isn't.

As for the timestamp aspect, you can increase a variable each time you get into this low frequency detection loop, and calculate the time passed using the sampling rate. Then write an array containing the input/output time of each successful detection.

Not sure if the minimum integration time is really necessary though.