我一直在使用Microsoft Speech API(SAPI,5.3)为我的应用程序添加语音识别支持(Windows,显然是C ++,Win8 SDK),除了与加载语法文件有关的一些箍跳它工作得很好。
但是,我无法弄清楚如何从文件加载的语法中枚举规则(或者甚至可能)。显然,当您手动/动态构建语法时,您自己就会创建规则。但是,没有出现作为从文件加载的语法枚举规则的方法。 IspRecoGrammar :: GetRule()似乎是我能找到的最接近查询规则的东西,但它用于检索单个已知规则(它需要规则名称或id)。
目前我只是简单地解析XML并删除规则名称,但这并不是一个完整的解决方案;我需要支持XML 和二进制语法配置文件,后者会回避我当前的解决方案。
任何有SAPI经验的人都知道我可以做到这一点吗?
答案 0 :(得分:0)
似乎IspRecoGrammar::GetRule()
仍然可以满足您的需求。拥有一组已知良好的规则名称,并在加载其他数据时,如果规则名称不在已知的良好名称集中,请使用IspRecoGrammar::GetRule()
验证规则名称。如果有效,请将其添加到集合中。 (你也可能有一组已知的坏名字。)