Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

We were looking for some topics related to audio analysis and found acoustic fingerprinting. As it is, it seems like the most famous application for it is for identification of music.

Enter our manager, who requested us to research and possible find an algorithm or existing code that we can use for this very simple approach (like it's easy, source codes don't show up like mushrooms):

  1. Always-on app for listening
  2. Compare the audio patterns to a single audio file (assume sound is a simple beep or beep-beep)
  3. If sound is detected, send notification to server

With a flow this simple, do you think acoustic fingerprinting is a broad approach to use? Should we stop and take another approach? Where to best start?

We haven't started anything yet (on the development side) on this regard, so I want to get other opinion if this is pursuit is worth it or moot.

share|improve this question
this is still pretty vague. if i get this straight, you want to recognise just one specific sound? – Timothy Groote Jun 25 '13 at 11:04
Just one specific sound sample. For example, a 2-sec WAV file with sound like beep-beep or ding-dong. – IBG Jun 26 '13 at 0:55
up vote 6 down vote accepted

If the audio you are searching for really is just a simple beep, you don't want to go to the trouble of using acoustic fingerprinting, there's a much simpler algorithm designed for exactly that purpose, its called the Goertzel Algorithm . You most likely can find a library that implements the algorithm in your language of choice. This is the algorithm used by automated telephone systems to detect what digit on the phone keypad is pressed by listening to the beeps at various frequencies being sent.

For the algorithm to work best your beep should be "simple" in that it is either a sine wave at a single known frequency (or even better a "Dual Tone" beep with two sine waves at separate known frequencies which is what telephone keypad tones are). The algorithm will check a set of samples and determine if the frequencies are present above a preset loudness threshold. If they do, you will want to run an additional test to make sure that there isn't a lot of extraneous noise going on at the time since, for example, white noise will excite all frequencies.

share|improve this answer
I've edited my question. Thanks for the answer, it's a good lead. – IBG Jun 26 '13 at 0:31
I forgot to accept it before, but I've used this argument to deal with my manager. Sorry it took more than a year. – IBG Dec 9 '14 at 7:19

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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