使用SemanticResultKey时的TargetInvocationException

时间:2015-05-29 13:46:52

标签: c# .net 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);

现在,当我发出&#34;一个&#34;它仍然给我这个例外

enter image description here

当我用Google搜索时,它声明这是我的代码之外的例外,我想知道这是Microsoft.Speech dll中的错误还是我遗漏了某些内容

修改1:

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

sre.RecognizeAsync(RecognizeMode.Multiple);

而不是

sre.Recognize();

现在当我说&#39;二十一时,例如它会得到这个例外: base = {&#34;重复的语义键&#39; op1&#39;在规则&#39; root。&#34;}

我知道问题出在语法上,但我确实重复了#op;&#39;。我错过了什么?

1 个答案:

答案 0 :(得分:1)

我最后使用识别的文本自己解析它 在

void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)

我解析了识别的字符串:

e.Result

而不是

recoResult.Semantics["op1"].Value.ToString())

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

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