Можно ли использовать WIndows Speech Recognition Engine в игре произношения слов? - PullRequest
3 голосов
/ 18 мая 2010

Я использую для создания приложения, которое использует механизм распознавания речи Windows или SAPI. Это как игра для произношение , что дает вам оценку, когда вы произносите это правильно. но когда я начал эксперименты с SAPI, он плохо распознается, если только вы не загрузите в него грамматику (XML), это даст лучший результат распознавания.

но проблема сейчас в том, что самое близкое произношение из введенного текста будет распознано. например:

База данных -> dedebase -> правильно.

даже если вы неправильно произнесете это. это дает вам правильные ответы.

без использования грамматики xml

когда вы говорите «база данных», вы получаете «в базе / базе / базе данных / и т.д ...»

пожалуйста, оставьте свой ответ, предложение, уточнение. голосует за лучший ответ.

is it possible or not?

кстати, я использую Delphi-компилятор в проектах ....

Ответы [ 3 ]

4 голосов
/ 26 мая 2010

Я бы сделал две вещи:

  1. Преобразование исходного текста в фонемы с использованием ISpEnginePronception :: GetPronunciations .
  2. Используйте грамматику диктовки и модель языка произношения, чтобы заставить SAPI вернуть вам набор фонем. Для этого вызовите ISpRecoGrammar :: LoadDictation (L "Произношение", SPLO_STATIC).
  3. Сравните распознанные фонемы с целевыми фонемами.

Обратите внимание, что ISpEnginePronasion недоступен в SAPI 5.1, поэтому он ограничен Vista и Windows 7.

2 голосов
/ 23 марта 2011

Если цель игры состоит в том, чтобы побудить пользователя говорить с использованием произношения, наиболее близкого к «стандартному произношению» для данного языка (например, 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

2 голосов
/ 18 мая 2010

Для того, что вы хотите, вероятно, лучше не использовать грамматику. Но для этого требуется, чтобы пользователи проходили «минимальную» базовую подготовку механизма распознавания речи. Это не очень долго и относительно приятно. И это действительно влияет на точность распознавания (поверьте, у меня сильный французский акцент на английском).
Его можно даже включить в качестве предварительной практики для самой игры.
Может показаться интересным увидеть этот сеанс CodeRage 4 на «Приложения речи Delphi (zip)»

...