我试图在语音模式下创建一个GRXML语法,它将在文本中找到序列号。这里是我尝试查找三位数后跟三个字母的示例:
<grammar
xmlns="http://www.w3.org/2001/06/grammar"
xml:lang="en"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/06/grammar
http://www.w3.org/TR/speech-grammar/grammar.xsd"
version="1.0"
mode="voice"
root="main"
tag-format="semantics/1.0"
>
<rule id="main" scope="public">
<ruleref special="GARBAGE"/>
<item repeat="3">
<ruleref uri="#digit"/>
<tag>out = out + rules.digit;</tag>
</item>
<item repeat="3">
<ruleref uri="#letter"/>
<tag>out = out + rules.letter;</tag>
</item>
<ruleref special="GARBAGE"/>
</rule>
<rule id="letter">
<one-of>
<item>A</item>
<item>B</item>
<item>C</item>
<item>D</item>
<item>E</item>
<item>F</item>
<item>G</item>
<item>H</item>
<item>I</item>
<item>J</item>
<item>K</item>
<item>L</item>
<item>M</item>
<item>N</item>
<item>O</item>
<item>P</item>
<item>Q</item>
<item>R</item>
<item>S</item>
<item>T</item>
<item>U</item>
<item>V</item>
<item>W</item>
<item>X</item>
<item>Y</item>
<item>Z</item>
</one-of>
</rule>
<rule id="digit">
<one-of>
<item>0<tag>out="0";</tag></item>
<item>Zero<tag>out="0";</tag></item>
<item>1<tag>out="1";</tag></item>
<item>One<tag>out="1";</tag></item>
<item>2<tag>out="2";</tag></item>
<item>Two<tag>out="2";</tag></item>
<item>3<tag>out="3";</tag></item>
<item>Three<tag>out="3";</tag></item>
<item>4<tag>out="4";</tag></item>
<item>Four<tag>out="4";</tag></item>
<item>5<tag>out="5";</tag></item>
<item>Five<tag>out="5";</tag></item>
<item>6<tag>out="6";</tag></item>
<item>Six<tag>out="6";</tag></item>
<item>7<tag>out="7";</tag></item>
<item>Seven<tag>out="7";</tag></item>
<item>8<tag>out="8";</tag></item>
<item>Eight<tag>out="8";</tag></item>
<item>9<tag>out="9";</tag></item>
<item>Nine<tag>out="9";</tag></item>
</one-of>
</rule>
</grammar>
这个语法的问题是它需要在每个字符之间使用空格或其他分隔符(如逗号或句号)。这意味着只检测此类1 2 3 A B C
之类的序列,但不会检测字符彼此接触的序列,例如12 3 A B C
。我正在使用Microsoft Speech SDK进行测试。如何更新它能找到我想要的语法?谢谢。