Как я могу использовать System.Speech, чтобы распознать точную фразу как команду?
Например, допустим, я хочу команду "center", которая щелкает мышью в центре экрана. Тривиальный пример, но меня больше интересуют грамматические аспекты этого.
Что, если я только хочу соответствовать "центру"?
Так что, если я сделаю паузу, скажу "центр", а затем сделаю паузу, это совпадение.
Но если я скажу "я нахожусь в центре комнаты", я не получу совпадение.
Следующий код, кажется, соответствует слову "центр" независимо от того, в какой части фразы оно произнесено:
Choices center = new Choices( new string[] { "center" } );
SemanticResultKey centerKeys = new SemanticResultKey( "center", center );
GrammarBuilder centerGrammarBuilder = new GrammarBuilder();
centerGrammarBuilder.Append( centerKeys );
speechRecognitionEngine.UnloadAllGrammars();
speechRecognitionEngine.LoadGrammar(new Grammar(centerGrammarBuilder));
1 ответ
Речевые машины обычно делают достойную работу, убеждаясь, что они не распознают грамматическое слово в середине предложения. Но не всегда, если вы нашли один из тех крайних случаев, когда движок распознает термины в середине предложения, я могу порекомендовать две вещи.
- Добавьте правило мусора к вашей грамматике, затем проигнорируйте любое событие распознавания, которое содержит правило мусора. Обычно это не рекомендуется (но может работать), так как люди редко используют компромиссы правил мусора, сделанные во время построения модели, и производительность снижается. Также вы можете заметить, что он работает лучше в некоторых языковых моделях, чем в других. Опять же, это является следствием построения и настройки модели. (внутри grxml это будет выглядеть так: < ruleref special = "GARBAGE" />) http://msdn.microsoft.com/en-us/library/system.speech.recognition.srgsgrammar.srgsruleref.garbage(v=VS.85).aspx
- Проверьте и настройте достоверность своего итогового слова. Даже если он распознает середину предложения, вы должны получить гораздо более низкий показатель достоверности для этой фразы. К сожалению, эта настройка иногда требует много звука, чтобы получить правильный.