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'重复了这个问题.我错过了什么?
我最终使用识别出的文本自行解析它
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 对象抛出上面提到的异常。
我真的很想知道解决方案,如果有人有经验的话
| 归档时间: |
|
| 查看次数: |
289 次 |
| 最近记录: |