我正在为将使用 Microsoft 的语音 SDK 进行语音识别的软件构建 GRXML 语法。
标签必须遵循标签格式“properties-ms/1.0”,我没有找到任何具体的文档(除了没有回答我问题的 MSDN)。
我主要关心的是标记数字,以便将识别的文本(如“一二三四”)转换为数字“1234”。这是想法:
<rule id="CODE">
<item repeat="4">
<ruleref uri="#DIGIT"/>
</item>
</rule>
<rule id="DIGIT">
<one-of>
<item>
one
<tag>"1"</tag>
</item>
<item>
two
<tag>"2"</tag>
</item>
<item>
three
<tag>"3"</tag>
</item>
<item>
four
<tag>"4"</tag>
</item>
<item>
five
<tag>"5"</tag>
</item>
</one-of>
</rule>
这没有串联,但至少我得到了每个数字的语义值。
但是,当我对数字使用这样的规则时,程序在运行时会中断,抛出一个异常,指出“规则'CODE'中的语义值已经设置并且无法更改。”。
如何使语义标记与 DIGIT 规则的“重复”一起工作?我不希望将我的 CODE 规则分成 4 个相同的项目,每个项目都有不同的语义键:在我的语法中还有其他情况,其中位数不固定。
此外,有没有办法连接标签以便为数字提供一般语义含义。