iphone - россии - swift speech recognition




Построение openears совместимой языковой модели (2)

Старый вопрос, но, возможно, ответ все еще интересен. OpenEars теперь имеет встроенную генерацию языковых моделей, поэтому один из вариантов - это динамическое создание моделей в приложении по мере необходимости, используя класс LanguageModelGenerator, который использует библиотеку MITLM и NSScanner для выполнения той же задачи, что и упомянутый выше инструментарий CMU. , Обработка корпуса с> 5000 слов на iPhone займет очень много времени, но вы всегда можете использовать Simulator, чтобы запустить его один раз и получить вывод из папки документов и сохранить его.

Другой вариант для распознавания большого словаря объясняется здесь:

Создание файла языковой модели ARPA с 50000 слов

Сказав это, я должен отметить как разработчик OpenEars, что ограничение инструмента CMU в 5000 слов очень близко соответствует максимальному размеру словаря, который, вероятно, будет иметь приличную точность и скорость обработки на iPhone при использовании Pocketsphinx. Итак, последним предложением было бы либо переосмыслить вашу задачу, чтобы она абсолютно не требовала большого распознавания слов (например, поскольку OpenEars позволяет переключать модели на лету, вы можете обнаружить, что вам не нужна одна огромная модель, но можно обойтись несколькими более мелкими, которые вы можете переключать в разных контекстах), или использовать сетевой API, который может распознавать большой словарь на сервере (или создать свой собственный API, который использует Sphinx4 на вашем собственном сервере). Удачи!

Я делаю некоторые разработки в речи в текст и в текст в речь, и я нашел OpenEars API очень полезным.

Принцип этого API на основе cmu-slm заключается в том, что он использует языковую модель для отображения речи, прослушиваемой устройством iPhone. Поэтому я решил найти большую модель на английском языке для поддержки механизма распознавания речи API. Но я не смог понять формат английской модели данных voxfourge для использования с OpenEars.

Кто-нибудь знает, как я могу получить файлы .languagemodel и .dic для английского языка для работы с OpenEars?


Относительно форматов LM:

AFAIK большинство языковых моделей используют стандарт ARPA для языковых моделей. Языковые модели Sphinx / CMU компилируются в двоичный формат. Вам понадобится исходный формат, чтобы преобразовать Sphinx LM в другой формат. Большинство других языковых моделей представлены в текстовом формате.

Я бы рекомендовал использовать инструментарий распознавания речи HTK; Подробная документация здесь: http://htk.eng.cam.ac.uk/ftp/software/htkbook_html.tar.gz

Вот также описание инструментария УУЗР CMU: http://www.speech.cs.cmu.edu/SLM/toolkit_documentation.html

Вот пример языковой модели в формате ARPA, которую я нашел в сети: http://www.arborius.net/~jphekman/sphinx/full/index.html

Вы, вероятно, хотите сначала создать ARPA LM, а затем преобразовать его в любой двоичный формат, если это необходимо.

В общем:

Чтобы построить языковую модель, вам нужно много и много обучающих данных - чтобы определить, какова вероятность любого другого слова в вашем словаре, после просмотра текущего ввода в данный момент времени.

Вы не можете просто «создать» модель языка, просто добавив слова, которые вы хотите узнать - вам также нужно много обучающих данных (= типичный ввод, который вы наблюдаете при запуске приложения для распознавания речи).

Языковая модель - это не просто список слов - она ​​оценивает вероятность следующего токена (слова) на входе. Чтобы оценить эти вероятности, вам нужно запустить учебный процесс, который обрабатывает обучающие данные (например, исторические данные) и отслеживает частоты слов, чтобы оценить вышеупомянутые вероятности.

Для вашей проблемы, может быть, в качестве быстрого решения, просто предположите, что все слова имеют одинаковую частоту / вероятность.

  1. создать словарь со словами, которые вы хотите узнать (N слов в словаре)

  2. создать языковую модель, в которой вероятность каждого слова равна 1 / N (модель языка униграмм)

Затем вы можете интерполировать эту языковую модель униграмм (LM) с другим LM для большего корпуса, используя HTK Toolkit





language-model