I'm currently having a good time with voice recognition with the Microsoft's Speech Engine. It's quite simple to set up and use with C#, and allows to achieve great things with less lines of code than I first imagined.
Now, the point is that I do not really know to handle this : I understand that the engine needs to start listening, then you say a word, or a sentence, and it compares in its dictionary to see if it can see a match. If so, the program does whatever you want it to do.
What I'm scratching my head with, is that I would like the engine to "detect" words that are in his dictionary, in a complete random phrase containing one or all of those words.
For example, let's assume that the dictionnary has the following words : - "Read" - "News"
I would like to code something that would detect those specific words whenever I say for instance : - "Read me the news" - "Can you read the news" - "Read news"...
How can I achieve this ?
This functionality is called "keyword spotting". Usually you can not perform keyword spotting with speech recognition engine, you need a specific spotting package. The key issue is that engine should compare two outcomes constantly - word is found and word is not found. Speech recognition only looks for the words which are in grammar and doesn't consider other sounds. Spotting just requires a different algorithm.
There is a workaround to add many possible syllables or other sounds into speech recognition grammar and hope that engine will find them instead of keyword, but it's not a very good solution in terms of accuracy compared to specific keyword spotter.
If you are not closely tied to Microsoft's engine and you need a common language like US English or French you can implement keyword spotting with open source software toolkits for speech recognition like CMUSphinx.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With