数字和字母序列的GRXML语法,例如序列号

时间:2018-01-23 16:13:50

标签: speech-recognition grammar voice-recognition

我试图在语音模式下创建一个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进行测试。如何更新它能找到我想要的语法?谢谢。

0 个答案:

没有答案