I have search a bit to try to find a similar questions, but I have not been able to find any leads.

There are techniques to programmatically detect steady tones in audio, such as the Goertzel algorithm. I have been trying to find a way to detect a frequency sweep of some kind. My specific application is to monitor the audio from a security camera, and detect, say, when a door prop or car alarm is triggered. If it matters, one can assume that the sound will repeat many times, and that the frequency is a smooth sweep, and not discreet tones.

I don't want to base it strictly off of amplitude, since the frequency response is sometimes very non-linear on these cheap cameras, and other noises can be a source of false alarms. Also, the alarm source may be distant.


1 Answer 1


If you know the signal of interest in advance, you can pre-record it and constantly calculate correlation between recorded sample and incoming signal.

  • Record a sample sound from a channel to be analyzed (you can record a number of periods)
  • Reverse it
  • Use reversed signal as an impulse response for FIR filter (this also is known as "matched filter") - filter will output a peak when signal of interest passes through it.

If you are interested in general varying tone detection (much more difficult problem), look at the chirplet transform - the sort of wavelet transform which uses varying frequency wavelets (chirplets) as its basis. People used it to count wolf howls, for example.

  • $\begingroup$ Thanks. This gives me a good starting point in to where I need to look. $\endgroup$
    – hashbang
    Apr 5, 2015 at 23:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.