Vosk es el motor, una aplicación escrita en Python y basada en redes neuronales que reconoce palabras en varios idiomas (según el diccionario que se cargue) y que funciona de forma independiente (no requiere conexiones a otros sistemas) por lo que instalas el servidor, cargas el diccionario del idioma que deseas, lo ejecutas y ya está el puerto listo para enviarle audio y que el motor lo convierta a texto.
Instalación Servidor
La instalación del servidor no puede ser más sencilla:
1 |
docker run -d -p 2700:2700 alphacep/kaldi-es:latest |
Ejecutamos este docker que corre en background y nos abre el puerto 2700 para que nos conectemos vía websocket y enviarle el audio.
Conectándonos al servidor Vosk
Luego tan solo hay que descargar un cliente websocket para enviarle el archivo wav (formateado a 8Khz y mono)
1 2 3 |
git clone https://github.com/alphacep/vosk-server cd vosk-server/websocket ./test.py test.wav |
Si no funciona debemos instalar:
1 2 |
yum install python3 python3-devel pip-3 install websockets |
Python 3.9
1 2 3 4 5 6 7 8 9 10 |
wget https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tgz tar xzf Python-3.9.6.tgz cd Python-3.9.6 ./configure --enable-optimizations make altinstall Verificar la version python3.9 --version |
Actualizar PIP
1 |
/usr/local/bin/python3.9 -m pip install --upgrade pip |
Instalar nuevamente
1 |
pip3.9 install websockets |
Cliente Asterisk para conectar el ASR de Vosk
La gente de AlphaCep ha publicado un módulo para Asterisk, FreeSwitch y Jigasi (el módulo que utiliza Jitsi)
https://github.com/alphacep/vosk-asterisk
1 2 3 4 5 6 7 |
git clone https://github.com/alphacep/vosk-asterisk.git git clone https://github.com/asterisk/asterisk cd vosk-asterisk ./bootstrap ./configure --with-asterisk=/usr/src/asterisk-18.20.0/ --prefix=/usr make make install |
Si los archivos no los copia en la carpeta adecuada, hacemos lo siguiente:
1 2 3 4 5 |
mv /usr/lib/asterisk/modules/* /usr/lib64/asterisk/modules/ rmdir /usr/lib/asterisk/modules rmdir /usr/lib/asterisk cd /usr/lib64/asterisk/modules/ chown asterisk.asterisk * |
De esta manera, podéis utilizar el reconocedor de audio directamente desde el Dialplan de Asterisk:
1 2 3 4 5 6 |
[internal] exten = 1,1,Answer same = n,Wait(1) same = n,SpeechCreate same = n,SpeechBackground(hello) same = n,Verbose(0,Result was ${SPEECH_TEXT(0)}) |
Eso sí, nos avisan en varios sitios que el sistema de reconocimiento requiere de un sistema potente, ya que consume bastante memoria y procesador cada vez que tiene que hacer un reconocimiento, pero eso es algo común en cualquier ASR hospedado por nosotros, así que a tenerlo en cuenta si queremos instalarlo en nuestro sistema de comunicaciones.
Toda la información en la página de Vosk: https://alphacephei.com/vosk/
Su página para estar al día: https://alphacephei.com/en/news.html
Y la guía para configurarlo en Issabel: https://t.me/Issabel_channel/4