我一直在使用SRGS语法和SAPI 5.4来定义命令和控制语法。现在我想切换到文本语法,这样它们就可以与SAPI 5.1 (甚至可能是SAPI 4?)兼容。
我找到了一个SAPI 5.4 compatible text grammar here的例子
我希望在运行时从它的XML文件加载该语法,而不是使用语法编译器工具,然后将该语法的二进制版本作为资源包含在内。理想情况下,我希望能够在内存中创建一个XDocument,然后让Speech.Recognizer侦听这些命令。
有人知道怎么做吗?谢谢!
发布于 2010-08-29 05:22:04
要使用文本语法,您必须直接与SAPI交互(通过包含Microsoft Speech Object Library) -而不仅仅是使用更高级别的System.Speech。
因此,如果您复制了上面链接的文本语法并将其另存为sol.xml (在SAPI SDK示例中),则可以使用以下代码加载它:
SpSharedRecoContext reco = new SpSharedRecoContext();
ISpeechRecoGrammar grammar;
grammar = reco.CreateGrammar();
grammar.CmdLoadFromFile("sol.xml");
grammar.CmdSetRuleIdState(0, SpeechRuleState.SGDSActive);我用XP (5.1)、Visa (5.3)和7 (5.4)测试了这些代码。
https://stackoverflow.com/questions/3588739
复制相似问题