gpt4 book ai didi

c# - Microsoft Speech - 识别和提取可变长度的数字

转载 作者:太空宇宙 更新时间:2023-11-03 11:16:32 24 4
gpt4 key购买 nike

我正在尝试让某种语法在我的语音识别中发挥作用。

我的语法定义如下:

<rule id="showFlight">
<example>Show me Alaska Airlines flight number 2117</example>
<example>Where is US Airways flight 45</example>
<item>
<one-of>
<item>show me</item>
<item>where is</item>
</one-of>
</item>
<item>
<ruleref uri="#airline" />
<tag>out.Carrier = rules.airline;</tag>
</item>
flight
<item repeat="0-1">number</item>
<item repeat="1-">
<ruleref uri="#digit" />
<tag>out.Number = rules.digit;</tag>
</item>
</rule>

我的问题在于最后一个数字。我定义语法中可以存在一位或多位数字,这行得通。但是当我去提取我的 OnSpeechRecognized 回调中的值时,我只得到了最后一个数字。

    public override bool OnSpeechRecognized(object sender, Microsoft.Speech.Recognition.SpeechRecognizedEventArgs e)
{
String output = String.Format("Recognition Summary:\n" +
" Recognized phrase: {0}\n" +
" Confidence score {1}\n" +
" Grammar used: {2}\n",
e.Result.Text, e.Result.Confidence, e.Result.Grammar.Name);
Console.WriteLine(output);

// Display the semantic values in the recognition result.
Console.WriteLine(" Semantic results:");
//Console.WriteLine(e.Result.Semantics["Flight"].Value);

foreach (KeyValuePair<String, SemanticValue> child in e.Result.Semantics["ShowFlight"])
{
Console.WriteLine(" {0} is {1}",
child.Key, child.Value.Value ?? "null");
}
Console.WriteLine();

...

或者,更直接地说:

e.Result.Semantics["ShowFlight"]["Number"].Value.ToString()

如果我说“二一一七”,["Number"] 中的唯一数字是 7。同样,如果我说“四五”,我返回的唯一数字是 5。

如何提取航类号中所有说出的数字?

另外,有没有我可以加载的 secret 内部语法,可以让我轻松识别“四五”和“四十五”?

最佳答案

您可以简单地将最后一个“item”元素替换为以下内容:

  <tag>out.Number = &quot;&quot;</tag>
<item repeat="1-">
<ruleref uri="#digit" />
<tag>out.Number += rules.digit;</tag>
</item>

这会将所有已识别的数字连接到 out.Number

关于第二个问题,遗憾的是没有这种“ secret 内部语法”。您必须自己编写代码。

关于c# - Microsoft Speech - 识别和提取可变长度的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12503418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com