Este proyecto demuestra el uso de Text-to-Speech (TTS) mediante Fast AGI en Asterisk, utilizando la librería MsEdgeTTS para generar archivos de audio a partir de texto utilizando el servicio de TTS de Microsoft Edge.
- Node.js instalado en el sistema.
- Acceso a un sistema con Asterisk para implementar el AGI.
Sigue estos pasos para configurar el entorno de fastAgi-tts-edge
en tu sistema.
-
Clonar el Repositorio
cd /opt/ git clone https://github.com/giandiego/fastAgi-tts-edge.git
-
Instalar Dependencias
Navega al directorio del proyecto clonado y ejecuta:
cd fastAgi-tts-edge npm i --force
-
Instalar y Correr con PM2
PM2 es un gestor de procesos para aplicaciones Node.js, que facilita correr y manejar tu aplicación en producción.
npm install pm2 -g pm2 start npm --name "fastAgi-tts-edge" -- run start pm2 startup pm2 save
Para validar que la aplicación esté corriendo correctamente, puedes utilizar:
pm2 status
Dentro de asterisk:
[ivr_edge_tts]
exten => s,1,Answer()
same => n,AGI(agi://localhost:4573/tts,"BIENVENIDOS A AULA ÚTIL, SI CONOCE EL NÚMERO DE ANEXO MÁRQUELO AHORA, MARQUE 0 PARA COMUNICARSE CON LA OPERADORA,PARA SOPORTE TÉCNICO MARQUE 1, PARA VENTAS MARQUE 2 Ó ESPERE EN LÍNEA QUE UNO DE NUESTRAS OPERADORAS LO ATENDERÁ\; GRACIAS.",es)
same => n,Hangup()
Para revisar el log de la aplicación y depurar posibles errores:
pm2 log
-
Para eliminar la instancia de la aplicación:
pm2 delete all
-
Para reiniciar la aplicación:
pm2 restart all
-
Para remover el inicio automático:
pm2 unstartup systemd
La aplicación utiliza voxo-agi
para manejar llamadas AGI con Asterisk, y MsEdgeTTS
para convertir texto en habla utilizando el servicio de TTS de Microsoft Edge. La conversión de audio para un formato adecuado para Asterisk se realiza mediante sox
.
El flujo principal del script realiza los siguientes pasos:
- Recibe una llamada y el texto a convertir en voz.
- Genera un archivo de TTS utilizando
MsEdgeTTS
. - Convierte el archivo de TTS a un formato adecuado para Asterisk usando
sox
. - Reproduce el archivo convertido en la llamada.
- Limpia los archivos temporales generados en el proceso.
Las contribuciones son bienvenidas. Por favor, siente libre de fork el repositorio y enviar tus pull requests.
GNU