我想建立我的语法来接受多个数字。当我重复数字(例如说“二十一”)时,它有一个错误。所以我不断减少代码来找出问题所在。我为语法生成器编写了以下代码:
string[] numberString = { "one" };
Choices numberChoices = new Choices();
for (int i = 0; i < numberString.Length; i++)
{
numberChoices.Add(new SemanticResultValue(numberString[i], numberString[i]));
}
gb[1].Append(new SemanticResultKey("op1", (GrammarBuilder)numberChoices), 1, 2);
现在,当我发音“one one”时,它仍然给我这个例外
当我用谷歌搜索它时,它指出这是我的代码之外的异常,我想知道这是 Microsoft.Speech dll 中的错误还是我遗漏了一些东西
Edit 1:
我研究了代码,并将识别设置为异步,如下所示:
sre.RecognizeAsync(RecognizeMode.Multiple);
代替
sre.Recognize();
现在,当我说“二十一”时,它会出现以下异常:
base = {“规则‘root’中重复的语义键‘op1’。”}
我知道问题出在语法上,但我确实为“op1”重复了它。我缺少什么?
我最终使用识别出的文本自行解析它
在
void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
我解析了识别的字符串:
e.Result
代替
recoResult.Semantics["op1"].Value.ToString())
因为 .Semantics 对象抛出上面提到的异常。
我真的很想知道解决方案,如果有人有经验的话
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)