CMUSphinx PocketSphinx - распознавать все (или большое количество) слов

Прежде чем я попытался использовать PocketSphinx для Android, я использовал API распознавания голоса Google. Мне не нужно было устанавливать имя поиска или файл словаря. Он просто узнал каждое сказанное.

Теперь, в PocketSphinx, мне нужно это сделать. Но я могу только найти, как установить распознавание для одного слова, или установить словарь (те, которые доступны в демонстрационном проекте, имеют только несколько слов), что распознаватель считает, что это единственные слова, что означает, что если кто-то говорит что-то подобное, Распознаватель считает свое слово, указанное в словаре.

Я просто хочу спросить: как я могу задать несколько имен поиска, или как я могу настроить его для распознавания всех доступных слов (или даже большого их количества)? Может быть, у кого-то есть файл словаря с большим количеством слов?

Ответ 1

  До того, как я попытался использовать PocketSphinx для Android, я использовал API распознавания голоса Google. Мне не нужно было задавать имя для поиска или файл словаря. Он просто узнавал каждое сказанное слово.

Google API распознает большой, но все еще ограниченный набор слов. Долгое время не удавалось распознать "Spotify". В автономном распознавателе речи Google используется около 50 тыс. Слов, как описано в их публикации.

Я просто хочу спросить, как я могу задать несколько поисковых имен или как настроить распознавание всех доступных слов (или даже большого их количества)? Может быть, у кого-то есть файл словаря с большим количеством слов?

Демонстрация включает в себя распознавание большого словарного запаса с языковой моделью (прогнозная часть) Для загрузки доступна более крупная языковая модель для английского языка, например модель родового языка En-US.

Простой код для запуска распознавания выглядит следующим образом:

 recognizer = defaultSetup()
   .setAcousticModel(new File(assetsDir, "en-us-ptm"))
   .setDictionary(new File(assetsDir, "cmudict-en-us.dict"))
   .getRecognizer();
  recognizer.addListener(this);

  // Create keyword-activation search.
  recognizer.addNgramSearch(NGRAM_SEARCH, new File(assetsDir, "en-us.lm.bin"););

  // Start the search
  recognizer.startListening(NGRAM_SEARCH);

Однако их нелегко вписать в устройство и декодировать в реальном времени. Если вы хотите декодировать речь в режиме реального времени с большим словарным запасом, вам необходимо передавать аудио на сервер. Или вам нужно ограничить словарный запас и язык небольшим подмножеством общего английского языка. Вы можете узнать больше о распознавании речи в CMUSphinx в учебнике.

Ответ 2

Обновление, в 2019 году всем рекомендую попробовать библиотеку Kaldi на Android. Вы можете найти демоверсию здесь. Это на самом деле большой словарь распознавания речи, работающий в режиме реального времени (70 тыс. Слов в LM).