Is there any Application, Programming Library or Theory that could be used to identify human language phrases in a set of audio files, so as to calculate the frequency of occurrence of each such phrase. For example, how often does the phrase "Thank You" occur in these files?

One solution might be to convert the audio to an International Phonetic Alphabet form but I cant find such a tool.

I'm basically trying to find patterns in speech and the frequency at which they occur. Of course the pattern for "Thank You" is slightly different in different dialects, but I've no problem in having different matches in such cases.


This is not a simple problem. Almost certainly any "home-brewed" system you create looking for "frequency patterns" is going to have horrible performance, unless it develops complexity comparable to full-fledged speech recognizer. The reason for this is that recognizing speech, while it seems like a simple task to our ears, is in fact quite complex, and requires large amounts of context to have good accuracy. What I'm trying to say is that if you just try to recognize the phonemes from the audio locally, you're going to get gibberish. You need to take into account the neighboring phonemes, the vocabulary of the language being spoken, and the large scale structure and content of the surrounding sentences in order to get anywhere near human level performance.

At the end of the day if you try to write something which "recognizes frequency patterns of speech" from scratch, you're going to be reinventing the wheel, and a pretty dang big wheel at that.

For this reason, the best thing for you to do would be to take an existing speech recognition system, and modify its output to suit your needs. I would suggest using CMU Sphinx to decode the audio into an N-Best list, and then search this list for the text you are looking for. CMU Sphinx has good recognition performance and is highly configurable.

  • $\begingroup$ Will this work with any language or is it for English only? How does it treat dialects? $\endgroup$ – Baz Feb 26 '13 at 13:42
  • $\begingroup$ It has trained models for a variety of languages. You can train it on any language you like if you have the appropriate training data. It can also do adaptation, where it tweaks a model to work better for a given individual or dialect (see cmusphinx.sourceforge.net/wiki/tutorialadapt) $\endgroup$ – Jeremy Salwen Feb 26 '13 at 13:48
  • $\begingroup$ Is it trained with both an audio and test corpus? Does the data in the audio corpus have to match up exactly with the text corpus? I have a text corpus for the language with 35 million words but no audio. $\endgroup$ – Baz Feb 26 '13 at 14:29
  • $\begingroup$ The acoustic model is separate from the language model. You can read about custom language models here cmusphinx.sourceforge.net/wiki/tutoriallm and custom acoustic models here cmusphinx.sourceforge.net/wiki/tutorialam . You can borrow LM and AM from similar languages, or adapt the AM from a similar language with only a small amount of data from the language you want. cmusphinx.sourceforge.net/wiki/tutorialadapt . CMU Sphinx is well documented. $\endgroup$ – Jeremy Salwen Feb 26 '13 at 17:06

Your Answer

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

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