Freeswitch mod_pocketsphinx - распознавание речи
Pocketsphinx - свободно распространяемый движок распознавания речи (ASR).
mod_pocketsphinx - модуль FS.
https://freeswitch.org/confluence/display/FREESWITCH/Mod+pocketsphinx
Пример Pizza Demo
Рассмотрим использование mod_pocketsphinx на примере из FS wiki.
Данный пример содержит исправленные, полностью рабочие скрипты в отличии от поставляемых с исходниками.
Пример использует движок javascript mod_v8, а не spidermonkey.
Итак, в FS должны быть загружены модули:
freeswitch@> module_exists mod_v8 true freeswitch@> module_exists mod_pocketsphinx true
Конфиги модулей стандартные из исходников:
../autoload_configs/pocketsphinx.conf.xml ../autoload_configs/v8.conf.xml
Pocketsphinx.conf.xml
<configuration name="pocketsphinx.conf" description="PocketSphinx ASR Configuration"> <settings> <!--dft_confirm is threshold (default 400): higher the number the louder you have to talk to be considered "talking"--> <param name="threshold" value="300"/> <!--dft_min is for silence-hits (default 35): number of hits below threshold before detecting "stop talking"--> <param name="silence-hits" value="25"/> <param name="listen-hits" value="1"/> <param name="auto-reload" value="true"/> <!--<param name="language-weight" value="1"/>--> <param name="narrowband-model" value="zero_ru_semi"/> <!--<param name="wideband-model" value="wsj1"/>--> <param name="dictionary" value="ru.dic"/> </settings> </configuration>
Скачайте и распакуйте в удобное для вас место архив сценария javascript:
Передайте выполнение диалплана движку v8
, указав путь к исполняемому скрипту,
как вы можете видеть, я поленился даже скопировать скрипт из исходников:
<extension name="pizza_demo"> <condition field="destination_number" expression="^(2997)$"/> <condition field="${module_exists(mod_v8)}" expression="true"/> <condition field="${module_exists(mod_pocketsphinx)}" expression="true"> <action application="javascript" data="/usr/src/freeswitch/scripts/javascript/ps_pizza.js"/> </condition> </extension>
Скачайте и распакуйте аудио в директорию FS ../sounds.
В примере использована директория /usr/share/freeswitch/sounds/custom/pizza
Если вы используете другой путь, укажите его в файле ps_pizza.js.
/***************** Set audio params *****************/ asr.setAudioBase("/usr/share/freeswitch/sounds/custom/pizza/"); asr.setAudioExt(".wav");
Скачайте и распакуйте grammar
файлы.
В примере директория grammar файлов FS: /usr/share/freeswitch/grammar/
С FS из бинарников устанавливается звуковая модель communicator:
# ls -1 /usr/share/freeswitch/grammar/model/communicator
feat.params
mdef
means
noisedict
sendump
transition_matrices
variances
Но на всякий случай еще звуковая модель:
wsj_all_sc_5000_20080401.tar.gz
Модели в приведенном примере расположены (FS установлен из пакетов) в:
/usr/share/freeswitch/grammar/model/
Вот вроде и все, вся логика находится в модуле ../js_modules/SpeechTools.jm
Скрипт доведен до рабочего состояния для использования с mod_v8.