如何在SAPI 5.4 C#程序中加载文本语法?

时间:2010-08-27 23:24:53

标签: c# xml sapi

我一直在使用SRGS语法和SAPI 5.4来定义命令和控制语法。现在我想切换到文本语法,以便它们与SAPI 5.1兼容(甚至可能与SAPI 4兼容?)。

我找到了SAPI 5.4 compatible text grammar here

的示例

我想在运行时从它的XML文件中加载该语法,而不是使用语法编译器工具,然后将语法的二进制版本作为资源包含在内。理想情况下,我希望能够在内存中创建一个XDocument,然后让Speech.Recognizer监听这些命令。

有谁知道怎么做?谢谢!

1 个答案:

答案 0 :(得分:1)

要使用文本语法,您必须直接与SAPI COM交互(通过包含Microsoft语音对象库) - 而不是仅使用更高级别的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)测试了该代码。