2015-08-05 9 views
1

Я хочу создать небольшую «диалоговую систему» ​​на основе фонемы, которая слушает речь, преобразует ее в строку фонем (как бы ни было неправильно это не имеет значения), обрабатывает/сохраняет эти и воспроизводит их обратно на фонеме. Я стремлюсь использовать либо фестиваль/mbrola с ним, либо espeak. все работает на малине pi (проект называется лепет pi).Задание пути к акустической модели в pocketsphinx

я следовал по-настоящему хорошие инструкции здесь: https://wolfpaulus.com/jounal/embedded/raspberrypi2-sr/

и я также получить хорошее признание с помощью команды:

pocketsphinx_continuous -hmm /usr/local/share/pocketsphinx/model/en-us/en-us -lm 3199.lm -dict 3199.dic -samprate 16000/8000/48000 -inmic yes 

теперь я прочитал эту статью о признании фонемы здесь на SourceForge сайт: http://cmusphinx.sourceforge.net/wiki/phonemerecognition

и также понял, что, очевидно, prealpha5 имеет новый двоичный формат. статья о фонеме распознавани гласит, что в основном английская фонема распознавань является частью пакета установки по умолчанию, и, таким образом, предлагает проверить его с помощью:

pocketsphinx_continuous -infile test/data/goforward.raw -hmm en-us -allphone model/en-us/en-us-phone.lm.dmp -backtrace yes -beam 1e-20 -pbeam 1e-20 -lw 2.0 

я считать, что фонема статья относится к более старым версиям (карманный) сфинкс, так как он отсылая к .dmp вместо .bin файла и расширением, так что я пробовал:

pocketsphinx_continuous -infile test/data/goforward.raw -hmm en-us -allphone model/en-us/en-us-phone.lm.bin -backtrace yes -beam 1e-20 -pbeam 1e-20 -lw 2.0 

, но я получил следующее сообщение об ошибке:

ERROR: "acmod.c", line 83: Folder 'en-us' does not contain acoustic model definition 'mdef' 

глядя на en-us, на самом деле есть только .dict, .lm.bin и файл телефона. и другой каталог en-us, содержащий файл mdef, а также несколько других. копирование его не помогает.

so, что делать? удалить установку prealpha5 и установить версию 4? или я могу скачать нужный файл где-нибудь?

ответ

2

Аргумент для -hmm, который вы установили в en-us, - это путь к папке. В вашем случае это относительный путь. Если путь lm равен model/en-us/en-us-phone.lm.bin, то -hmm путь должен быть model/en-us/en-us, а не просто en-us.

+0

хорошо, поэтому ваш намек был в правильном направлении, я думаю. Фактически en-us/en-us не работает, но модель/en-us/en-us привела к запуску программы до тех пор, пока «INFO: continu.c (303): pocketsphinx_continuous COMPILED ON », а затем она занимает около 40 секунд на малине pi 2, и я получаю список телефонов. так, YEAH это работает! но: вау, это так медленно! Я читал, что он загружает 130 тыс. слов, это делает его медленным? могу ли я обрезать файл .dict на верхние 10k (если они отсортированы по частоте)? – assadollahi

+0

Фонетическое признание медленное, потому что оно рассматривает огромное количество вариантов. Вы можете добавить параметр командной строки '-allphone_ci yes' для аргументов командной строки, чтобы сделать его более быстрым, но менее точным. Словарь из 130 тыс. Слов не имеет значения. –

+0

WOW! это намного быстрее! большое спасибо! – assadollahi