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

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

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

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

Ответы

Ответ 1

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

Здесь объясняется другая опция для значительного распознавания лексики:

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

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

Ответ 2

Что касается форматов LM:

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

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

Здесь также описание CMU SLM Toolkit: http://www.speech.cs.cmu.edu/SLM/toolkit_documentation.html

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

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

В целом:

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

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

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

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

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

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

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