如何使用 Microsoft SAPI 捕获句子中间的单词?
这个SAPI语法捕获单词名称是句子的中间。
<GRAMMAR LANGID="409">
<RULE NAME="SOUNDLOG" TOPLEVEL="ACTIVE">
<OPT>
<DICTATION MAX="INF"/>
</OPT>
<L>
<P>name</P>
</L>
<OPT>
<DICTATION MAX="INF"/>
</OPT>
</RULE>
</GRAMMAR>
因此,如果我说“我的名字是 André”,则会识别出“名字”这个词。 有更好的方法吗?
this SAPI grammar catch the word name is the middle of a sentence.
<GRAMMAR LANGID="409">
<RULE NAME="SOUNDLOG" TOPLEVEL="ACTIVE">
<OPT>
<DICTATION MAX="INF"/>
</OPT>
<L>
<P>name</P>
</L>
<OPT>
<DICTATION MAX="INF"/>
</OPT>
</RULE>
</GRAMMAR>
So, if I say "My name is André", the word "name" is identified.
Is there a better way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当您获得识别时,与识别关联的 SPPHRASE 数据包含子规则和属性数据以及它们在识别中出现的位置。
因此,如果您有“名称”的规则或属性标记,则可以找到与“名称”关联的单词。
例如,给定您的语法,
如果将其更改为,
您可以找到与“名称”相对应的单词,如下所示:
此代码专门查找属性所涵盖的文本。但是,通常最好使用 val 属性来标识项目,而不将代码显式绑定到语法。这允许您在不更改代码的情况下调整语法(或添加等效值)。要使用这些值,只需在获取属性后使用 SPPHRASEPROPERTY.pszValue 或 vValue 字段(而不是使用 ISpPhrase::GetText)。
When you get the recognition, the SPPHRASE data associated with the recognition contains the subrules and property data and where they occur in the recognition.
So, if you had a rule or property tag for 'Name', you could find the words associated with 'Name'.
For example, given your grammar
if you change it to
you could find the words that correspond to 'name' like this:
This code looks specifically for the text covered by the property. However, it's often better to use the val attributes to identify items without binding your code explicitly to the grammar. This allows you to tweak the grammar (or add equivalent values) without changing your code. To use the values, simply use the SPPHRASEPROPERTY.pszValue or vValue fields after fetching the property (instead of using ISpPhrase::GetText).