【发布时间】:2015-05-29 13:46:51
【问题描述】:
我想构建我的语法来接受多个数字。当我像说“二十一”这样重复数字时,它有一个错误。所以我一直在减少我的代码以找到问题。我为语法生成器找到了以下代码:
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 中的一个错误还是我遗漏了什么
编辑 1:
我玩弄了代码,并将识别设为异步如下:
sre.RecognizeAsync(RecognizeMode.Multiple);
而不是
sre.Recognize();
现在,例如,当我说“二十一”时,它会出现以下异常: base = {"规则'root'中的重复语义键'op1'。"}
我知道问题出在语法上,但我确实为“op1”重复了它。我错过了什么??
【问题讨论】:
-
查看 TargetInvocationException 的内部异常。这通常会告诉你另一边出了什么问题。
-
我不能这样做,因为源代码被锁定.. 它的 Microsoft.Speech dll
-
我的意思是Exception类有一个叫做InnerExeception的属性。当抛出 TargetInvocationException 时,另一端发生的异常通常会包含在该属性中。因此,如果您在代码中捕获 TargetInvocationException 并在此处设置断点,您应该可以了解 Microsoft.Speech 中出了什么问题。
-
是的,我知道,但是在这个异常中,它会打开另一个页面,其中提到它无法访问,并且没有内部异常可以单击它并查看异常。
-
它甚至不会在尝试和捕获中被捕获
标签: c# .net speech-recognition speech-to-text