TargetInvocationException при использовании SemanticResultKey
Я хочу построить мою грамматику, чтобы принять несколько чисел. Когда я повторяю число, как "двадцать один", возникает ошибка. Поэтому я продолжал сокращать свой код, чтобы найти проблему. Я нашел следующий фрагмент кода для разработчика грамматики:
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);
Теперь, когда я произношу "один", это все еще дает мне это исключение
Который, когда я гуглил на это, он заявляет, что это исключение за пределами моего кода, мне интересно, это ошибка в Microsoft. Speech DLL или я что-то упустил
Изменить 1:
Я поиграл с кодом и признал Async следующим образом:
sre.RecognizeAsync(RecognizeMode.Multiple);
вместо
sre.Recognize();
теперь, когда я говорю "двадцать один", например, он получает это исключение: base = {"Дублированный семантический ключ" op1 "в правиле" root ".}}
Я знаю, что проблема в грамматике, но я повторил ее для "op1". Что мне не хватает??
1 ответ
Я закончил, используя распознанный текст, чтобы разобрать его сам в
void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
Я разобрал строку, узнал:
e.Result
Вместо
recoResult.Semantics["op1"].Value.ToString())
поскольку объект.Semantics выдает исключение, упомянутое выше.
Я действительно хочу знать решение, если кто-то имеет опыт работы с ним