语音识别语法规范:语义结果

时间:2014-05-12 22:11:07

标签: grammar speech

我目前正在使用Microsoft Kinect SDK开发语音识别应用程序。该应用程序的目标是加载包含语法的任何(有效)XML文件,并使用它来处理语音。

我正在通过开发不那么简单的语法来测试应用程序,在此过程中我还没有想出如何返回特定的语义值,特别是名称。例如,在以下语法中:

<grammar version="1.0" xml:lang="en-US" root="rootRule" tag-format="semantics/1.0-literals" xmlns="http://www.w3.org/2001/06/grammar">

<!-- Ask for person's related information (age, location, name, etc.) -->

<rule id="rootRule">
    <one-of>
        <!-- Ask person name -->
        <item>
            <tag>AnswerToNameQuestion</tag>
            <one-of>
                <item> my name is </item>
                <item> people call me </item>
            </one-of>
            <ruleref uri="#names"/>
        </item>

        <!-- Ask person location -->
        <item>
            <tag>QuestionOfLocation</tag>
            <one-of>
                <item> do you know where is </item>
                <item> can you tell me where  </item>
                <item> where did </item>
            </one-of>
            <ruleref uri="#names"/>
        </item>

    </one-of>
</rule>

<!-- Answer person name -->
<rule id="names">
    <item>
        <one-of>
            <item> peter </item>
            <item> john  </item>
            <item> danny </item>
        </one-of>
    </item>
</rule>

 </grammar>

当一个人说出他们的名字时,我希望语义是那个人的名字。例如,对于问题&#34;你的名字是什么&#34; (不包括在这个语法中)和回复&#34;我的名字是-insert name - &#34;,我希望语义结果是人的名字而不仅仅是&#34; AnswerToNameQuestion&#34;正在返回的语义结果。 任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

在SpeechRecognized事件处理程序中。你可以得到&#34;文本句子&#34;如果查询event.Result.Text属性而不是event.Result.Semantics.Value。您可以使用此第二个属性从文本字符串中删除不相关的部分。 例如,如果有人说&#34;我的名字是彼得&#34;,在SpeechRecognized事件处理程序中你将拥有:

event.Result.Text =&#34;我的名字是Peter&#34;

event.Result.Semantics.Value =&#34; AnswerToNameQuestion&#34;