Freeswitch mod_pocketsphinx - распознавание речи

Pocketsphinx - свободно распространяемый движок распознавания речи (ASR).

mod_pocketsphinx - модуль FS.

https://cmusphinx.github.io/

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:

ps_pizza.tar.gz

Передайте выполнение диалплана движку 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.

pizza_sounds.tar.gz

В примере использована директория /usr/share/freeswitch/sounds/custom/pizza
Если вы используете другой путь, укажите его в файле ps_pizza.js.

/***************** Set audio params *****************/
asr.setAudioBase("/usr/share/freeswitch/sounds/custom/pizza/");
asr.setAudioExt(".wav");

Скачайте и распакуйте grammar файлы.

pizza_gram.tar.gz

В примере директория 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.

  • freeswitch/mod/pocketsphinx.txt
  • Последние изменения: 2020/07/19