Можно ли использовать WIndows Speech Recognition Engine в игре с произношением слов?
Я использую для создания приложения, которое использует механизм распознавания речи Windows или SAPI. это как игра за произношение, которая дает вам оценку, когда вы произносите это правильно. но когда я начал эксперименты с SAPI, он плохо распознается, если только вы не загрузите в него грамматику (XML), это даст лучший результат распознавания.
но проблема теперь в том, что самое близкое произношение из входного текста будет распознано. например:
База данных -> dedebase -> правильно.
даже если вы неправильно произнесете это. это дает вам правильные ответы.
без использования грамматики XML
когда вы говорите, база данных, она дает вам "в базе / базы / базы данных / и т. д..."
Пожалуйста, оставьте свой ответ, предложение, разъяснение. голосует за лучший ответ.
is it possible or not?
кстати я использую компилятор delphi на проектах....
3 ответа
Для того, что вы хотите, вероятно, лучше не использовать грамматику. Но для этого требуется, чтобы пользователи проходили "минимальную" базовую подготовку механизма распознавания речи. Это не очень долго и относительно приятно. И это действительно влияет на точность распознавания (поверьте, у меня сильный французский акцент на английском).
Это может быть даже включено в качестве предварительной практики для самой игры.
Вы можете найти интересным увидеть этот сеанс CodeRage 4 на тему "Включение речи Delphi Applications (zip)"
Я бы сделал две вещи:
- Преобразуйте исходный текст в фонемы, используя ISpEnginePronception:: GetPronunciations.
- Используйте грамматику диктовки и модель языка произношения, чтобы заставить SAPI вернуть вам набор фонем - сделайте это, вызвав ISpRecoGrammar:: LoadDictation(L "Произношение", SPLO_STATIC).
- Сравните распознанные фонемы с целевыми фонемами.
Обратите внимание, что ISpEnginePronasion недоступен в SAPI 5.1, поэтому он ограничен Vista и Windows 7.
Если смысл игры состоит в том, чтобы побудить пользователя говорить с использованием произношения, наиболее близкого к "стандартному произношению" для данного языка (например, EN-US), тогда пользователь должен обучить распознаватель адаптироваться к конкретному пользователю (без изменений) образцы речи могут быть контрпродуктивными. Отчасти вы бы научили распознаватель быть более прощающим с ошибками произношения пользователя.
Независимо от того, используете ли вы грамматическое распознавание или диктовку (пост Эрика Брауна выглядит многообещающе), вы, вероятно, также захотите посмотреть на "достоверность" баллов. Эти оценки доступны после того, как распознавание выполнено, и они дают числовое значение тому, насколько уверен распознаватель в том, что то, что на самом деле сказал пользователь, совпадает с тем, что, по мнению распознавателя, сказал пользователь. В зависимости от конфигурации распознавателя и варианта использования, доверительные оценки могут быть или не быть значимыми.
Если вы основываете свою оценку точности на текстовом представлении телефонов / фонем / произношения, быстрый и простой способ получить оценку точности - это использовать расстояние Левенштейна, алгоритм, для которого есть множество реализаций, свободно доступных в сети., Лучшим алгоритмом оценки может быть повторная синхронизация различий, причем атомарной единицей сравнения являются отдельные телефоны.
Вот некоторые ключевые слова для MSDN Doc Hunting:
ISpRecoResult -> GetPhrase -> SPPHRASE -> Rule -> SPPHRASERULE -> SREngineConfidence.
http://msdn.microsoft.com/en-us/library/ee413319%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/library/ms720460%28v=VS.85%29.aspx