18:28 

[Решено] Русские языковые модели для CMU Sphinx4. Или альтернативы.

Скептичный циник
Миру - мир. А Вам - пломбир!
Доброго времени суток, сообщники!

Задача: слать аудио разговора в магический чёрный ящик, а в ответ получать текстовое представление разговора. На чём оно будет работать внутри и платформа – не особо важно, поэтому выбор инструмента ограничивается только бесплатностью (или хотя бы наличием демо-версии) и качеством распознавания.


В наличии тонны записанных аудио диалогов, более-менее прилично очищенных от шумов в максимальном качестве до 16 кГц, стерео, пожатое кодеком gsm (с потерями), но, думаю, можно откопать и raw'ки. ОСь не имеет жёстких рамок, но предпочтительнее osx/w7 (для тестов) и centos6/ubuntu-like (для прода). Сами диалоги не блещут словарным запасом (и не будут) поэтому проблем с тренировкой, предполагаю, не должно быть.

Выбор инструмента. Есть два варианта инструментов: внешнее API или то, что потребует поднимать собственный сервер.
Среди первой категории я нашёл только двух кандидатов: Google Speech API (документирован чуть менее, чем никак) и Yandex SpeechKit (доступ открывается только по личному запросу). Качество распознавания у обоих ужасное для моих задач: более 50% слов пропущено, а на фразы типа "да щас секундочку" Яндекс вообще выдал "дрочат" с вероятностью 45% (и это его лучший результат). Лол.
Среди второй категории тоже два варианта: Sphinx и Julius. Судя по теоретической части, методы обработки речи у них примерно одинаковые (?), а второй японский поэтому выбрал Sphinx4.


Что пробовал. Без особых хлопот скомпилил полную версию (не pocketsphinx), запустил английские демки (HelloWorld.jar и Transcriber.jar) – работают. Ок, с помощью скриптов из sphinxtrain создал проект, скачал русские "acoustic models russian" с voxforge (в архиве я увидел только словари и языковые модели, без wav'ок для тренировки), закинул эти файлы в созданный проект.

Теперь вопросы:
1. Возможно, есть какие-нибудь API или системы, которые я не нашёл? Порекомендуете?
2. Допиливание Sphinx4:
2.1. Как скаченную с voxforge языковую модель добавить в Sphinx4?
2.2. Как собрать своё приложение, чтобы по переданной wav'ке отдавало текст по аналогии с демкой Transcriber.jar?
Или хотя бы киньтесь ссылкой на user-friendly мануал: в readme такого не нашёл, а гуглорезультаты старше 2010 года уже не актуальны. Знания java откровенно слабые.

Спасибо!

UPD. Ещё немного потыкался и напоролся на следующую проблему.

Что делал далее:
1. Файлы из акустической модели от voxforge скопировал в "sphinx4-1.0beta6/models/acoustic/wsj"
2. В конфиге "sphinx4-1.0beta6/src/apps/edu/cmu/sphinx/demo/transcriber/config.xml" изменил dictionaryPath и fillerPath компонента dictionary как описано в мануале
3. Собрал проект ant'ом
Теперь при запуске Transcriber.jar ловлю исключение:"SEVERE wsj Can't find HMM for d".

Порылся в исходниках и увидел, что в "sphinx4-1.0beta6/models/acoustic/wsj/" есть директория "dict" с какими-то файлами (морфемы и слова?). Не видел такого в мануалах, но попробовал использовать "text2dict/dict2transcript.pl" из ru4sphinx от zamiron'а, но скрипт морозится без каких-либо ошибок и вывода после строки "Dictionary tire_word.txt loaded" (а это не последний txt в директории) и ничего нового не генерируется.

Я так понял, мне нужно словарь поместить в "sphinx4-1.0beta6/models/acoustic/wsj/dict"? Но как его сгенерить автоматически из какой-нибудь уже готовой модели русского языка? В моделях с voxforge ничего похожего на нужное не видать.
запись создана: 25.01.2014 в 21:15

@темы: Вопрос, speech, recognition, Java, Computer Science, CMU Sphinx, *nix

Комментарии
2014-01-28 в 11:55 

SpiritOK
Православные красные звёзды над Кремлём канонично горят ©
В наличии тонны записанных аудио диалогов
Родина слышит, родина знает? :rotate:

2014-01-28 в 12:02 

Скептичный циник
Миру - мир. А Вам - пломбир!
Родина в любом случае всё слышит и знает (:
Увы, в моём случае всё проще – записи в колл-центрах всегда ведутся с уведомлением обоих сторон.

2014-03-05 в 12:45 

Вроде как есть движок от Google по распознаванию голоса. Не натыкались? Они используют его в голосовом поиске, распознавание весьма впечатляющее.

2014-03-05 в 14:30 

Скептичный циник
Миру - мир. А Вам - пломбир!
> Вроде как есть движок от Google по распознаванию голоса. Не натыкались?
Я написал это под катом "много букв". На Гугл натыкался.
Из категории внешних API нашёл только двух кандидатов: Google Speech API (документирован чуть менее, чем никак) и Yandex SpeechKit (доступ открывается только по личному запросу). Качество распознавания у обоих ужасное для моих задач: более 50% слов пропущено, а на фразы типа "да щас секундочку" Яндекс вообще выдал "дрочат" с вероятностью 45% (и это его лучший результат). Лол.

2014-03-05 в 19:33 

CD_Eater
в опе ещё играет детство, а жить уже надо по-взрослому
:)
А они в принципе бывают - хорошие распознавалки речи?




2014-03-06 в 02:25 

Скептичный циник
Миру - мир. А Вам - пломбир!
Забавные видео (: Гугл с Яндексом работали примерно так же. Оно и понятно – чем шире назначение, тем более размазаннее результаты по вероятностям.

> А они в принципе бывают - хорошие распознавалки речи?
Да, бывают. По-сравнению с этими распознавалками общего назначения, существуют специализированные и обучаемые. Вторая категория действует примерно так: скармливаем много аудио с текстами этих аудио (словарь), крафтим из этого акустическую модель, а затем тренируем и настраиваем языковую модель. Для тренировки пользуемся методом "поиграться со шрифтами коэффициентами, коих с десяток, да ещё можно юзать различные комбинации математических моделей. В результате получаем распознавалку с тренированной моделью точность которой, в идеальных условиях, порядка 90-95%. В не идеальных порядка 70% и выше.

Комментирование для вас недоступно.
Для того, чтобы получить возможность комментировать, авторизуйтесь:
 
РегистрацияЗабыли пароль?

ru_programming

главная