使用SemanticResultKey时的TargetInvocationException

Kas*_*v92 8 .net c# speech-recognition speech-to-text

我想建立我的语法以接受多个数字.当我重复这个数字就像说'二十一'时,它有一个错误.所以我不断减少我的代码以找到问题.我为语法构建器提供了以下代码:

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);
Run Code Online (Sandbox Code Playgroud)

现在,当我发出"一个"时,它仍然给了我这个例外

在此输入图像描述

当我搜索它时,它声明这是我的代码之外的一个例外,我想知道这是Microsoft.Speech dll中的错误还是我遗漏了一些东西

编辑1:

我玩了代码,并将识别为Async,如下所示:

sre.RecognizeAsync(RecognizeMode.Multiple);
Run Code Online (Sandbox Code Playgroud)

代替

sre.Recognize();
Run Code Online (Sandbox Code Playgroud)

现在,当我说'二十一'时,它会得到这个例外:base = {"规则'root中的重复语义键'op1'."}

我知道问题在于语法,但我确实为'op1'重复了这个问题.我错过了什么?

Kas*_*v92 1

我最终使用识别出的文本自行解析它

void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
Run Code Online (Sandbox Code Playgroud)

我解析了识别的字符串:

e.Result
Run Code Online (Sandbox Code Playgroud)

代替

recoResult.Semantics["op1"].Value.ToString())
Run Code Online (Sandbox Code Playgroud)

因为 .Semantics 对象抛出上面提到的异常。

我真的很想知道解决方案,如果有人有经验的话