我在 XML 中为 C# 定义了多个规则。加载文件并最终调用 RecognizeAsync(RecognizeMode.Multiple) 以实现我希望成为连续识别的内容。SpeechRecognized 事件正确地从语法文件中返回已识别的文本。
现在,我希望有一个规则接受“二比三的比例”,但返回显示文本“2:3 的比例”。我定义了以下规则,它可以很好地返回 "ratio of 2:3:" :
<rule id="ratio" scope="public">
<example>ratio of 2 to 3</example>
ratio of
<ruleref uri="#numbers"/><tag>$.value1=$$; </tag>
<item> to </item>
<ruleref uri="#numbers"/><tag>$.value2=$$;</tag>
<tag>$="ratio of "+ $.value1+ ":" +$.value2;</tag>
</rule>
但由于这是一条最底层的规则,有多个规则调用它,我发现将“2:3”呼应到更高规则的唯一方法是每个更高的规则也使用语义解释。这意味着对原本不需要语义的规则进行大量额外的编码。
那么,在 XML 规则“ratio”中是否有让它返回“ratio 2:3”而不使用语义?或者更重要的是,在 XML 中是否有指定“二比三的比率”中可识别的单词“to”实际上是“:”?或者就此而言,如何将显示从“to”更改为“two”或“to”或“too”或“:”?
感谢您的任何建议。