Bienvenidos, el día de hoy veremos como habilitar el Automatic Speech Recognition (ASR) de Vosk en Asterisk-18.
Antes de iniciar recuerda que debemos disponer de Asterisk-18 instalado y su código fuente para la correcta instalación e integración de Vosk.
Instalación de Docker
# apt-get install ca-certificates curl gnupg lsb-release
# cd /usr/src/
# curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
# apt-get update
# apt-get install docker-ce docker-ce-cli containerd.io
Instalación de servidor Vosk
# docker run -d -p 2700:2700 alphacep/kaldi-es:latest
# docker ps
Descarga de código fuente módulo Vosk-Asterisk
# cd /usr/src/
# git clone https://github.com/alphacep/vosk-asterisk
Compilación de módulo res_speech_vosk
# cd /usr/src/vosk-asterisk/
# ./bootstrap
# ./configure --with-asterisk=/usr/src/asterisk-18.9.0/ --prefix=/usr
# make
# make install
# cp /usr/src/vosk-asterisk/conf/res_speech_vosk.conf /etc/asterisk/
Carga de módulo res_speech_vosk.so
# asterisk -rvvv
*CLI> module load res_speech_vosk.so
Se debería observar un mensaje como el siguiente:
== Registered speech recognition engine 'vosk'
== Made 'vosk' the default speech recognition engine
Loaded res_speech_vosk.so => (Vosk Speech Engine)
Configuración de plan de marcado
En el siguiente ejemplo vamos a emplear un archivo extensions.conf vacío y agregamos la siguiente configuración:
# mv /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.sample
# vim /etc/asterisk/extensions.conf
[asr]
exten => s,1,Answer
same => n,Wait(1)
same => n,SpeechCreate
same => n,SpeechBackground(hello)
same => n,Verbose(0,Result was ${SPEECH_TEXT(0)})
same => n,Hangup()
Guardamos los cambios en el archivo, nos conectamos a Asterisk, recargamos la configuración del plan de marcado y verificamos la creación del mismo así:
# asterisk -rvvv
*CLI> dialplan reload
*CLI> dialplan show asr
Llamada de prueba
Antes de hacer la prueba debes tener registrada una extensión en tu servidor Asterisk, si no lo haz hecho visita
esta entrada.
A continuación vamos a generar una llamada desde la linea de comandos de Asterisk hacia nuestro Softphone MicroSIP así:
# asterisk -rvvv
*CLI> channel originate LOCAL/1001@internal extension s@asr
Una vez contestemos la llamada deberíamos escucha un hello y luego debemos iniciar a hablar, observaremos en la línea de comandos como se va reconociendo nuestra voz a través de Vosk así:
-- Executing [s@asr:5] Verbose("Local/1001@internal-00000007;1", "0,Result was esto es una prueba de reconocimiento de voz") in new stack
Result was esto es una prueba de reconocimiento de voz
-- Executing [s@asr:6] Hangup("Local/1001@internal-00000007;1", "") in new stack
¡Felicitaciones! Hemos configurado el ASR Vosk en Asterisk.
muy bueno~
ResponderBorrar