You cannot put a wild card in your grammar, of course. The recognition quality is not that bad (maybe, how you pronounce is a problem, I know from my experience (I have some accent, sometimes have to repeat things to get understood)). Now, you have only one grammar at a time (you should be able to switch grammars as you go from one mode to another in you application.
When the recognizer is running, it never recognizes any words beyond you current grammar. There can be three situation: correct positive recognition, failure to recognize and false positive. You can only detect failure to recognize:
System.Speech.Recognition.SpeechRecognitionEngine engine =
new System.Speech.Recognition.SpeechRecognitionEngine();
engine.SpeechRecognitionRejected += (source, eventInfo) => {
LogList.Items.Add(
@"What the hell are you trying to tell me?!
Say it properly if you want to get served!");
}
You can also use
System.Speech.Recognition.SpeechRecognitionEngine.SpeechDetected
,
System.Speech.RecognitionSpeechRecognitionEngine.SpeechHypothesized
.
—SA