【问题标题】:How do I load a text grammar in a SAPI 5.4 C# program?如何在 SAPI 5.4 C# 程序中加载文本语法?
【发布时间】:2010-08-29 05:22:04
【问题描述】:

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

我找到了一个SAPI 5.4 compatible text grammar here的例子

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

有人知道怎么做吗?谢谢!

【问题讨论】:

    标签: c# xml sapi


    【解决方案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) 测试了该代码。

    【讨论】:

    • 只是一个结语。为了使用 SpSharedRecoContext,您需要添加对 COM 对象“Microsoft Speech Object Library”的引用,然后使用命名空间 SpeechLib。
    猜你喜欢
    • 2012-08-09
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多