我在Windows7 64位上的VS2012中使用System.Speech.Recognition。
我的问题是,当用户开始说话时,识别引擎似乎听到所说的一切(即整个句子“请关闭活动程序”)并尝试将整个句子与我的语法相匹配。由于可靠性,我不希望必须匹配整个句子,并且只想听关键词,例如“关闭”和“活动程序”。
根据我的理解,引擎会将用户输入“请关闭活动程序”映射到单个正确的响应,而我希望它有一些方法可以识别单个输入中有多个“命中”。
如果用户在每个单词之间放置间隙以便将它们全部作为单独的输入进行处理,那么我现在的工作正常。但问题是当您正常说话并且它接受整个句子作为单个输入时。
有什么方法可以让引擎只检测输入中的关键词,而不必在整个输入的语法中找到匹配? (或者可能是在我的语法中设置正则表达式的方法?)
我正在使用一个简单的SpeechRecognitionEngine和一个由Choices构建的语法。
答案 0 :(得分:1)
您需要在选择中包含Garbage规则,然后它才能将句子的其他部分与垃圾相匹配。使用识别器实现关键字定位并不简单,因为您无法正确调整检测/误报率。专业解决方案可能会更好。