I've been looking around and found some great C/C++/Java libraries like CMU Sphinx or Windows SAPI. I did not like SAPI, and CMU Sphinx is way too complicated... would need months to understand how it works.

So I would like to start writing my own library, even it would be crap, but to understand all the parts how to recognize a word in real-time.

Now comes in my head a question,... how to match digital input to a given word? How to make it without seconds delay?

So what I understand is that I pass the input into buffer and I have to process it. First I try to create some spectrogram (time, frequency, amplitude) and then to use Fast Fourier Transform. In the database/list I will have stored words with their phonemes.

But how do I match these phonemes with FFT output? I simply do not understand all the steps.

  • $\begingroup$ How big will the vocabulary be? Will each utterance only be one word? $\endgroup$ – Aaron Dec 24 '13 at 16:10
  • $\begingroup$ I have not thought about it yet, but something about 1 million english words. But it is already about implementation, I am still stuck at the understanding of how it works. $\endgroup$ – Wiggler Jtag Dec 24 '13 at 16:38
  • 1
    $\begingroup$ The implementation can be different for small vocabulary and large vocabulary systems. $\endgroup$ – Aaron Dec 24 '13 at 17:12
  • 1
    $\begingroup$ There's a reason CMU Sphinx is complicated: speech recognition is hard. I think it'll take you less time to learn how to use one of these frameworks than to learn all the required signal processing/statistics theory and then implement it as efficiently as teams of other programmers did. Large vocabulary, speaker-independent speech recognition is a tough problem. $\endgroup$ – pichenettes Dec 24 '13 at 17:42
  • 1
    $\begingroup$ If you want introduction in CMUSphinx, you can visit CMUSphinx tutorial cmusphinx.sourceforge.net/wiki/tutorial, it explain speech recognition basics. Also you can ask quesitons online on #cmusphinx chat on irc. $\endgroup$ – Nikolay Shmyrev Dec 26 '13 at 1:23

There is a massive range of possible sounds that a human might recognize (or mis-recognize) as the same word in their language. The problem is searching a large dimensional space representing all those possibilities (continuous variations of spectral and timing differences) for the closest match, perhaps also given some context around the search target for the most probable of multiple near matches. This is a computational complexity problem that can sometimes be reduced in time by more computational power (a 1000 processor server or supercomputer might be able to do it in less than "seconds" of delay).

Or you can search over less degrees-of-freedom with less robustness or accuracy, and perhaps miss most possible word matches.


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.