我一直在使用Microsoft Speech API(SAPI,5.3)为我的应用程序(Windows,显然,C++,Win8 SDK)添加语音识别支持,除了一些与加载语法有关的箍跳转文件工作得很好。SAPI规则枚举
但是,我无法弄清楚如何枚举从文件加载的语法中的规则(或者甚至可能)。显然,当您手动/动态地构建语法时,您自己正在创建规则。但是,没有出现是从文件加载的语法中枚举规则的一种方法。 IspRecoGrammar :: GetRule()似乎是我能够查找规则的最接近的东西,但它旨在用于检索单个已知规则(它需要规则名称或ID)。
目前我只是简单地解析XML并拔出规则名称,但这不是一个完全的解决方案;我需要支持XML 和二进制语法配置文件,后者避开了我目前的解决方法。
任何有SAPI经验的人都知道我会怎样做到这一点?
你试图在这里实现的更高层次的目标是什么? (AKA - 为什么你认为你需要列举SAPI规则?) –
感谢您的回复,Eric。总之,我需要预先验证其他数据,以反对加载的语法的规则。这些其他数据通过名称引用规则,因此在加载其他数据时,我想验证数据引用的语法规则(名称)实际上是有效的。 – SBD
除了前面提到的XML处理之外,我可以(并且已经)通过简单地不验证然后将规则添加到“已知集合”,因为它们是通过SAPI识别回调遇到的,但这不是一个非常强大的解决方案捕获数据错误。 – SBD