CMU Sphinx установка и настройка на Ubuntu 13.04. Часть 1
Меня не покидает желание реализовать систему управления умным домом с голосовым интерфейсом. Куча пультов и отдельных кнопок у меня как-то вообще не вяжется с системой "Умный дом". Смартфон, когда говорить не удобно, еще куда бы не шло. Но начнем с самого малого - научим понимать голосовые команды наш комп.
Для реализации задуманного пока есть лишь одна достойная разработка - это pocketsphinx
. Поехали?
Качаем sphinxbase-0.8
и pocketsphinx-0.8
с офф. сайта. Распаковываем в разные каталоги.
Внимание!
Если перед компиляцией sphinxbase
вы установите пакет libpulse-dev
- тогда sphinxbase
будет автоматически сконфигурирован с поддержкой pulseaudio
вместо oss-compat
и не будет требовать устройства /dev/dsp
Для установки libpulse-dev
выполните:
sudo apt-get install libpulse-de
Иначе нужно будет ставить систему OSS
:
sudo apt-get install oss-compat
Собираем оба пакета (начнем со sphinxbase
):
./configure # или> ./autogen.sh
make
make check
sudo checkinstall # или> sudo make install
sudo ldconfig
На все про все должно уйти ~ мин 15-20.. После чего в каждом каталоге будет deb
пакет для повторной установки.
Примечание
Удалить пакеты можно командой:
dpkg -r pocketsphinx
И перейдем к тестированию... Создаем любой каталог для проверки, в котором будут располагаться все последующие файлы.
Создаем файл конфига распознавания .raw
файлов config.raw.cfg
:
# Путь к каталогу, содержащему файлы акустической модели (шаблоны отдельных звуков).
-hmm /usr/local/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k
# Путь к файлу триграммной языковой модели
# Подробнее: http://www.intsys.msu.ru/invest/speech/articles/rus_lm.htm
-lm /usr/local/share/pocketsphinx/model/lm/en/turtle.DMP
# Путь к файлу словаря произношения
-dict /usr/local/share/pocketsphinx/model/lm/en/turtle.dic
# Путь к каталогу со звуковыми файлами.
# Будьте внимательны: если вы указываете путь к файлу в конфиге,
# то относительный путь ~/some-path обрабатывается неправильно
# - нужно указывать полный путь. Если вы будете прописывать аргумент
# после команды, то можете использовать относительный путь.
-cepdir /home/stas/Application/voice/cmu-sphinx/test
# Файл со списокм обрабатываемых аудиозаписей (без расширений).
-ctl audio_input.txt
# расширение обрабатываемых файлов
-cepext .raw # .raw, .mfc
# указатель принадлежности обрабатываемого файла к raw.
-adcin true
# имя файла, в который будет выведен распознанный текст.
-hyp result.txt
Примечание
Тестовый файл goforward.raw
можно взять из исходников pocketsphinx
. raw
- это формат аудиозаписи.
Создадим файлы errors.txt
, result.txt
и input.raw.txt
в том же каталоге.
В файле input.raw.txt
укажите raw
файл (без расширения), который необходимо распознать. В нашем случае это 'goforward
'.
Теперь перейдите в созданный каталог с файлами и выполните:
pocketsphinx_batch -argfile config.raw.cfg 2>./errors.txt
В идеале файл result.txt
должен содержать текст "go forward ten meters (goforward -26532)" - это распознанная запись из файла goforward.raw
. Если что-то пошло не так - смотрите в errors.txt
, обычно ошибки в путях.
Дальше вы можете протестировать распознавание ваших записей.
Запись и воспроизведение аудио
Для записи аудио с микрофона воспользуйтесь командой:
rec -r 16k -b 16 -c 1 -e signed-integer filename.raw
Для прослушивания записанного аудио используйте команду:
play -r 16k -b 16 -c 1 -e signed-integer filename.raw
Внимание!
Если, при распознавании записанного аудио, вы получаете ошибку:
FATAL_ERROR: "continuous.c", line 153: Failed to calibrate voice activity detection
- Прослушайте записанный аудио-файл и убедитесь что ваш голос звучит;
- Попробуйте в начале записи добавить задержку ~ 4 сек.
#TTS, #voice