Миру - мир. А Вам - пломбир!
Доброго времени суток, сообщники!
Задача: слать аудио разговора в магический чёрный ящик, а в ответ получать текстовое представление разговора. На чём оно будет работать внутри и платформа – не особо важно, поэтому выбор инструмента ограничивается только бесплатностью (или хотя бы наличием демо-версии) и качеством распознавания.
Много букв – подробное описание ситуации. Для ответа на насущные вопросы №2 читать не обязательно.
Что пробовал. Без особых хлопот скомпилил полную версию (не 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 ничего похожего на нужное не видать.
Задача: слать аудио разговора в магический чёрный ящик, а в ответ получать текстовое представление разговора. На чём оно будет работать внутри и платформа – не особо важно, поэтому выбор инструмента ограничивается только бесплатностью (или хотя бы наличием демо-версии) и качеством распознавания.
Много букв – подробное описание ситуации. Для ответа на насущные вопросы №2 читать не обязательно.
Что пробовал. Без особых хлопот скомпилил полную версию (не 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 ничего похожего на нужное не видать.
Родина слышит, родина знает?
Увы, в моём случае всё проще – записи в колл-центрах всегда ведутся с уведомлением обоих сторон.
Я написал это под катом "много букв". На Гугл натыкался.
Из категории внешних API нашёл только двух кандидатов: Google Speech API (документирован чуть менее, чем никак) и Yandex SpeechKit (доступ открывается только по личному запросу). Качество распознавания у обоих ужасное для моих задач: более 50% слов пропущено, а на фразы типа "да щас секундочку" Яндекс вообще выдал "дрочат" с вероятностью 45% (и это его лучший результат). Лол.
А они в принципе бывают - хорошие распознавалки речи?
> А они в принципе бывают - хорошие распознавалки речи?
Да, бывают. По-сравнению с этими распознавалками общего назначения, существуют специализированные и обучаемые. Вторая категория действует примерно так: скармливаем много аудио с текстами этих аудио (словарь), крафтим из этого акустическую модель, а затем тренируем и настраиваем языковую модель. Для тренировки пользуемся методом "поиграться со
шрифтамикоэффициентами, коих с десяток, да ещё можно юзать различные комбинации математических моделей. В результате получаем распознавалку с тренированной моделью точность которой, в идеальных условиях, порядка 90-95%. В не идеальных порядка 70% и выше.