Может ли кто-нибудь рекомендовать надежное программное обеспечение с открытым исходным кодом для расшифровки речи на английском языке в wav файлах? Две основные программы, которые я исследовал, Sphinx и Julius, но мне никогда не удавалось либо работать, и документация с каждым при расшифровке файлов в лучшем случае отрывочна.
Я развиваюсь на 64-битном Ubuntu 10.04, чьи репозиции включают sphinx2 и julius, а также voxforge julius, акустический модальный для английского. Я сосредоточен на расшифровке файлов, вместо прямой обработки звука с микрофона, потому что я отказался от ожидающих таких проектов, как работа с звуковой системой Ubuntu. Это не стук против Ubuntu, так как я умею записывать звук с помощью своего микрофона, используя Audacity, но ни одна система не может получить доступ к моему микрофону, поэтому я надеюсь, что смогу просто настроить их, просто прочитав из файла.
Я сначала попробовал Sphinx2, из пакета Ubuntu sphinx2-bin. Несмотря на то, что образец sphinx2-demo, похоже, работал над расшифровкой файла, практически нет документации по конфигурации, поэтому я не уверен, как бы настроить это для чтения из произвольного wav. Аудиофайл, используемый в демонстрации, находится в некотором недокументированном формате "16k", на который косвенно ссылаются два файла конфигурации. Там краткое описание, описывающее sphinx2-demo как выполняемое sphinx2-пакет, но проверка script показывает, что он на самом деле вызывает sphinx2-непрерывный. Хуже того, --help docs для каждого списка script содержит около 6 десятков опций и не упоминает, какие из них необходимы или необязательны. В целом отсутствие документации по сфинксу и низкое качество существующей документации приводят меня в бешенство.
В следующий раз я попробовал Julius, опять же из пакета Ubuntu, который был на удивление недавним (4.1), учитывая версию, используемую в быстром старте Voxforge, - 3.5. Пакет, как представляется, содержит немного лучшую документацию и даже пример, написанный на Python (/usr/share/doc/julius-voxforge/examples/controlapp). Прочитав пример docs, я попытался адаптировать его для чтения из файла, создав файл 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?