我正在编写一个应用程序,它应该监听用户命令并将键击发送到另一个程序。我正在使用语音识别引擎类,但我的脚本无法正常工作。
如果我使用自定义语法(只有很少的单词,如“开始”或“退出”),程序将始终识别我的一个单词,即使我说的完全不同。 对于istance,我说“stackoverflow”,程序识别“开始”。
使用默认字典,程序几乎不可能使用(我必须100%正确,否则它将无法理解)。
奇怪的是,如果我使用语音识别器而不是语音识别引擎,我的程序工作得很完美,但每当我说一些不相关的东西时它就会混乱,因为Windows语音识别会处理结果,我不希望这种情况发生。这就是我实际使用语音识别引擎的原因。
我做错了什么?
Choices c = new Choices(new string[] { "use", "menu", "map", "save", "talk", "esc" });
GrammarBuilder gb = new GrammarBuilder(c);
Grammar g = new Grammar(gb);
sr = new SpeechRecognitionEngine();
sr.LoadGrammar(g);
sr.SetInputToDefaultAudioDevice();
sr.SpeechRecognized += sr_SpeechRecognized;
几乎忘了,我不知道这是否相关,但我使用的是Visual Studio 11 Ultimate Beta。
答案 0 :(得分:4)
对于检测到的每个语音识别结果,您也会获得识别的置信度 - 低置信度表示引擎对结果“不太确定”,您可能想要拒绝它,例如:
private void SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
if (e.Result.Confidence >= 0.7)
{
//high enough confidence, use result
}
else
{
//reject result
}
}