Распознавание речи с помощью sphinx-4

Распознавание речи с помощью sphinx-4

Недавно наткнулся на обзор новой системы «умного дома», русской кстати, в которой управление осуществлялось с помощью голосовых команд.

Меня это очень вдохновило. В голове сразу появилась куча безумных идей (что-то типо установки будильника голосовой командой сразу на телефон, управление торрент-клиентом, голосовая сводка погоды, сводка какой-либо статистики и т.д. и т.п.). Решил немнго копнуть в эту сторону.

Начать конечно нужно с самого главного — распознования речи, а именно преобразования голоса в текст. Почитав немного про системы распознавания речи, было выявлено, что в основном это софт под винду в виде одной программы. Очень мало информации о бибилиотеках и каких-либо опен-соурс API (платный софт я сразу отбросил), но все же я нашел очень интересную бибилиотеку под яву — Sphinx-4. Как заявлено разработчиками — это распознаватель речи полностью написанный на Java. Отлично, то, что нужно.

Очень странно, что в рунете про него почти ничего нет, разве что несколько тем на форуме VoxForge. Ну мы это быстро исправим 🙂 Разочаровавшись в поисках по рунету, я начал курить родные доки. В начале показалось, что придется провести не мало времени перед теорией и еще в два раза больше для ее применения на практике. Но это лишь первое впечатление. На практике все оказалось не так уж сложно.

 Установка (на примере Ubuntu 11.04)

Нам понадобится Apache Ant, который можно скачать либо на оф сайте, либо установить через консоль:

sudo aptitude install ant

Теперь скачаем сам sphinx4 (качаем оба архива) — http://sourceforge.net/projects/cmusphinx/files/sphinx4/1.0%20beta6/.
С помощью консоли перейдем в директорию, где будем собирать наш сфинкс (предвариетльно положив туда скачавшие архивы) и выполним следующие команды:

jar xvf sphinx4-1.0beta6-bin.zip 
jar xvf sphinx4-1.0beta6-src.zip

после чего будет создана папка sphinx4-1.0beta6.
Cоберем все это дело с помощью ant. Для этого делаем следующее в консоли:

cd sphinx4-1.0beta6
ant

если все прошло успешно в папке bld должно появиться 4 папки.

Следующий этап это установка JSAPI:

cd lib
sh ./jsapi.sh

у меня вывалилась ошибка при сборке:

./jsapi.sh: 1428: uudecode: not found

решается она установкой бибилиотеки sharutils:

sudo apt-get install sharutils

после успешного выполнения должен появится jar файл jsapi.jar.

 Использование

Теперь попробуем запустить несколько демок из папки bin. Не забудьте перед этим проверить корректную работу микрофона.
Первым поиграемся с HelloWorld.jar — это самыя простая демка из имеющихся, с помощью нее мы сможем распознать только десяток слов указаных в grammar файле (своего рода словарь, указывающий сфинксу какие слова должны быть распознаны). Пробуем запустить. Переходим в директорию сфинкса в консоли, и выполняем следующую команду:

java -mx312m -jar bin/HelloWorld.jar

после чего должны получить следующее

Loading...
Say: (Good morning | Hello) ( Bhiksha | Evandro | Paul | Philip | Rita | Will )
Start speaking. Press Ctrl-C to quit.

по выбору желаем демке доброе утро, либо просто говорим «привет» (на английском, ибо русский у нас пока не поддерживается) и называем ее именем из списка, которое вам больше по душе :), после чего видим долгожданный результат:

You said: good morning rita

Start speaking. Press Ctrl-C to quit.

Можно попробовать демку чуть посложнее — HelloNGram.jar (лежит в той же папке). Как видно из названия, она должна распознавать все, ну или почти все (во всяком случае, заглянув в словарь, я увидел там всего около сотни слов), пускается она таким же образом как и первая, в одном лишь отличие — у нас нет ограничения на произносимые слова, говорим любые инглиш вордс.

На этом пока все.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *