Программное обеспечение с открытым исходным кодом для транскрибирования речи в аудиофайлах - PullRequest
18 голосов
/ 30 сентября 2011

Кто-нибудь может порекомендовать надежное программное обеспечение с открытым исходным кодом для транскрибирования английской речи в wav-файлы? Две основные программы, которые я исследовал: Sphinx и Julius , но мне так и не удалось заставить их работать, и документация для каждой из них по расшифровке файлов в лучшем случае отрывочна .

Я занимаюсь разработкой 64-битной Ubuntu 10.04, репозитории которой включают sphinx2 и julius, а также julius акустический модал voxforge для английского языка. Я сосредоточен на расшифровке файлов, а не на прямой обработке звука с микрофона, потому что я разочаровался в ожидании, что подобные проекты будут работать со звуковой системой Ubuntu. Это не удар по Ubuntu, так как я могу отлично записывать звук с помощью своего микрофона, используя Audacity, но ни одна из систем не может получить доступ к моему микрофону, поэтому я надеюсь, что смогу просто настроить их, просто прочитав файл.

Я впервые попробовал Sphinx2, из пакета Ubuntu sphinx2-bin. Несмотря на то, что пример sphinx2-demo, по-видимому, работал над расшифровкой файла, документации по конфигурации практически нет, поэтому я не уверен, как настроить его для чтения из произвольного файла wav. Аудио файл, используемый в демонстрационной версии, имеет недокументированный формат «16 КБ», на который косвенно ссылаются через 2 файла конфигурации. Существует краткая реклама, описывающая sphinx2-demo как запуск sphinx2-batch, но проверка скрипта показывает, что он на самом деле вызывает sphinx2-непрерывный. Хуже того, в документации --help для каждого скрипта перечисляется около 6 дюжин опций, и не упоминается, какие из них являются обязательными или необязательными. В целом, отсутствие документации по сфинксу и низкое качество существующей документации сводят меня с ума.

Затем я попробовал Julius, снова из пакета Ubuntu, который был неожиданно недавним (4.1), учитывая, что версия, используемая в быстром запуске Voxforge, - 3.5. Пакет, кажется, включает немного лучшую документацию и даже пример, написанный на Python (/ usr / share / doc / julius-voxforge / examples / controlapp). Прочитав документы примера, я попытался адаптировать его для чтения из файла, создав файл filelist.txt, содержащий текст «hello.wav», относящийся к файлу с тем же именем, в котором содержится запись того, кто сказал «привет». Поместив их в один каталог, я запустил:

julius -input file -filelist filelist.txt -C julian.jconf

получение ответа:

### read waveform input
Error: adin_file: sampling rate != 16000 (8000)
Error: adin_file: error in parsing wav header at hello.wav
Error: adin_file: failed to read speech data: "hello.wav"
0 files processed

Повторная попытка с указанием абсолютных имен файлов для filelist.txt и hello.wav приводит к той же ошибке.

Я также попробовал вызов Julius, использованный в примере, для записи непосредственно с микрофона:

julius -input mic -C julian.jconf

Я вызывал это несколько раз, и ответ варьировался в зависимости от ошибки:

Cannot read /dev/dsp

и

STAT: AD-in thread created
<<< please speak >>>

В последнем случае, что бы я ни говорил в микрофон, ничего не происходит. Я не могу сказать, не может ли он по-прежнему читать микрофон или что-то читает, но просто не может транскрибировать звук.

Я не уверен, что с этим делать. Ошибки, которые я получаю, не оставляют мне много дел. Почему он не может прочитать WAV? Почему он не может читать / dev / dsp? Почему тогда он может читать / dev / dsp, но никак не реагирует?

Кто-нибудь еще имел любой успех с распознавателями речи с открытым исходным кодом, особенно в Linux?

1 Ответ

14 голосов
/ 01 октября 2011

Почему он не может прочитать wav?

Он сообщает, что файл имеет неправильную частоту дискретизации (8000) вместо запрошенной (16000).Частота дискретизации очень важна для программного обеспечения для распознавания речи.

Почему он не может читать / dev / dsp?

В последних версиях Ubuntu используется Pulseaudio Framework вместоОСС.Версия, которую вы пытаетесь использовать, использует OSS, поэтому вам нужно установить пакет oss-совместимости из вашего дистрибутива, чтобы вернуть поддержку OSS.

Вы можете попробовать более новую версию Julius с поддержкой pulseaudio

Почему тогда кажется, что он может читать / dev / dsp, но никак не реагирует?

Аудиовход не работает должным образом.

Есть кто-нибудьеще был какой-нибудь успех с распознавателями речи с открытым исходным кодом, особенно в Linux?

Конечно, посмотрите это видео как пример того, что люди делают с CMUSphinx:

http://www.youtube.com/watch?v=vfaNLIowSyk

Я предлагаю вам пересмотреть пакет CMUSphinx, который является ведущим механизмом распознавания речи с открытым исходным кодом.На сайте много документов, их просто нужно прочитать.Помните, что распознавание речи - это сложная область, в которой вы можете получить отличные результаты, но вам также нужно тратить свое время на понимание технологии.Как и в случае с любым другим доменом.

Короче говоря, для расшифровки файла с помощью CMUSPhinx необходимо выполнить 3 простых шага:

  1. Возьмите файл wav и повторите выборку до 8 кГц 16битовый монофайл с sox:
sox input.wav -r 8000 -c 1 resampled.wav
Установка карманного сфинкса 0,7
apt-get install pocketsphinx
Декодировать файл
pocketsphinx_continuous -samprate 8000 -infile resampled.wav

Результат будет распечатан на стандартный вывод.Чтобы закрыть регистратор, добавьте перенаправление stderr в / dev / null

pocketsphinx_continuous -infile resampled.wav 2> /dev/null
...