Пусть распознавание речи выберет одно слово из предложения
Я работаю с System.Speech.Recognition в VS2012 на 64-битной Windows7.
Моя проблема в том, что когда пользователь начинает говорить, механизм распознавания, кажется, слушает все, что было сказано (то есть все предложение "Пожалуйста, закройте активную программу") и пытается сопоставить это предложение с моей грамматикой. Из-за надежности я не хочу соответствовать целым предложениям и хотел бы слушать только ключевые слова, такие как "закрыть" и "активная программа".
Из того, что я понимаю, движок отобразит пользовательский ввод "Пожалуйста, закройте активную программу" на один правильный ответ, в то время как я хотел бы, чтобы он распознал, что в этом одном входе было несколько "хитов".
То, что у меня теперь хорошо работает, если пользователь помещает пропуски между каждым словом, чтобы они все обрабатывались как отдельные входные данные, но проблема в том, когда вы говорите нормально, и он принимает все предложение как один вход.
Есть ли какой-нибудь способ заставить движок определять только ключевые слова из входных данных, не находя соответствия в моей грамматике для всего входного сигнала? (или, возможно, способ установить регулярное выражение в моей грамматике?)
Я использую простой SpeechRecognitionEngine с грамматикой, построенной из вариантов.
1 ответ
Вам нужно включить правило мусора в ваш выбор, тогда оно сможет сопоставить другую часть предложения с мусором. Реализовать поиск ключевых слов с помощью распознавателя непросто, поскольку вы не сможете правильно настроить частоту обнаружения / ложной тревоги. Специализированное решение может быть лучше.