Построение открытой языковой модели 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