【发布时间】:2016-11-19 09:08:10
【问题描述】:
我一直在使用 Microsoft Speech API(SAPI,5.3)为我的应用程序(显然是 Windows,C++,Win8 SDK)添加语音识别支持,除了一些与加载语法文件有关的跳跃之外,它正在工作很好。
但是,我无法弄清楚如何从从文件加载的语法中枚举规则(或者如果这可能的话)。显然,当您手动/动态构建语法时,您是在自己创建规则。但是,似乎没有一种方法可以从从文件加载的语法中枚举规则。 IspRecoGrammar::GetRule() 似乎是我能找到的最接近能够查询规则的东西,但它旨在检索单个已知规则(它需要规则名称或 id)。
目前我只是自己解析 XML 并提取规则名称,但这并不是一个完整的解决方案;我需要同时支持 XML 和 二进制语法配置文件,后者避开了我目前的解决方法。
任何有 SAPI 经验的人都知道我可以如何做到这一点?
【问题讨论】:
-
您在这里试图实现的更高层次的目标是什么? (AKA - 为什么你认为你需要枚举 SAPI 规则?)
-
感谢您的回复,埃里克。简而言之,我需要根据加载的语法规则预先验证我拥有的其他数据。此其他数据按名称引用规则,因此在加载此其他数据时,我想验证数据引用的语法规则(名称)实际上是否有效。
-
除了前面提到的 XML 处理之外,我可以(并且已经)通过简单地不验证然后将规则添加到通过 SAPI 识别回调遇到的“已知集”来获得,但是对于捕获数据错误,这不是一个非常强大的解决方案。