Я пытаюсь разработать приложение на основе голоса, которое будет принимать пользовательский ввод как речь и выполнять некоторые действия на основе ввода. Это мое первое предприятие в этой технологии, и я учусь, пока его разрабатываю.
Я использую Microsoft SAPI, поставляемый с dotnet 4, для распознавания речи. До сих пор я узнал о двух типах режимов, которые он поддерживает.
Распознавание речи (SR) имеет два режима работы:
Режим диктовки - неограниченная речь в свободной форме
режим интерпретации, который использует встроенную грамматику, предоставляемую
распознаватель для конкретного языка. Это распознаватель по умолчанию.
Режим грамматики - сопоставляет произнесенные слова с одной или несколькими конкретными контекстно-свободными грамматиками (CFG). CFG - это структура, которая определяет
конкретный набор слов, и сочетание этих слов, которые могут быть
используемый. В основных терминах CFG определяет предложения, которые действительны для
SR. Грамматика должна поставляться приложением в виде
предварительно скомпилированные файлы грамматики или предоставляемые во время выполнения в форме W3C
Разметка спецификации грамматики распознавания речи (SRGS) или более старая
Спецификация CFG. Windows SDK включает в себя компилятор грамматики:
gc.exe.
Так что, по сути, какие бы слова я ни указывал в грамматике, движок распознавал бы только те. Но я также хочу включить текст произвольной формы вместе со структурированной грамматикой. Примером тому могут служить имена людей. Если я хочу записать имя из речи, мне нужно указать это имя в грамматике, но это невозможно, если приложение открыто для любого пользователя.
Есть ли способ извлечь некоторый текст, который уже не является частью грамматики?
Как я могу заставить систему распознавать такие предложения, как «Меня зовут Гари и мне 25 лет». Название может быть абсолютно любым, как я могу определить его в моей грамматике?