
Compartir:
Adam es un desarrollador y consultor al que le gusta correr a toda velocidad, bloguear y ayudar a otros a domar la tecnología para conseguir cosas increíbles, con un deseo insaciable de servir de mentor y ayudar.
Transcripción de voz en PHP con Vonage
Tiempo de lectura: 6 minutos
En este post, crearás un canal de transcripción de voz. El objetivo es utilizar Amazon Transcribe para procesar una conversación completa en canales y, a continuación, insertar los resultados en un archivo RDS MySQL. Para lograr esto se necesitarán dos AWS Lambda de AWS: una aplicación HTTP para recuperar un archivo MP3 y enviarlo a Amazon Transcribe, y una función de función de devolución de llamada al finalizar la transcripción para almacenar los resultados en una base de datos MySQL.
Requisitos previos
PHP 7.4 (actualización
serverless.ymlpara otras versiones)Composer instalado globalmente
Node.js y npm
Vonage API Account
To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.
This tutorial also uses a virtual phone number. To purchase one, go to Numbers > Buy Numbers and search for one that meets your needs.
Instrucciones de instalación
Clonar el nexmo-community/canales-de-voz-aws-transcribe-php de GitHub y navegue hasta el directorio recién creado para continuar.
Utilizar Composer para instalar dependencias
Este ejemplo requiere el uso de Composer para instalar dependencias y configurar el autoloader.
Suponiendo que tiene Composer instalado globalmenteejecute:
composer install Configuración de AWS
Deberá crear credenciales de AWS como se indica en Serverless.
Además, cree un nuevo bucket de AWS S3 y anota la URL para utilizarla más adelante.
Vincula la aplicación a Vonage
Crear una aplicación de Vonage mediante la interfaz de línea de comandos
Instale la CLI siguiendo estas instrucciones. Utilizarás esto para crear una nueva aplicación de Vonage Voice que también configure una aplicación de answer_url y event_url para la aplicación que se ejecuta en AWS Lambda:
vonage apps:create aws-transcribe --voice_answer_url=https://<your_hostname>/webhooks/answer --voice_event_url=https://<your_hostname>/webhooks/event
NOTA: Utilizará <your_hostname> como marcador de posición en este comando. Más adelante, después de conocer las URL proporcionadas al implementar en AWS Lambda, tendrás que actualizar estas piezas de las URL a través del Panel de API de Vonage para tu aplicación.
IMPORTANTE: Esto devolverá un ID de aplicación y una clave privada. El ID de aplicación será necesario para el comando vonage apps:link así como para el archivo .env más adelante. Se creará un archivo llamado private.key en la misma ubicación/nivel que server.jspor defecto.
Obtener un nuevo número virtual
Si aún no tienes un número, obtén uno de Vonage. Esto también se puede lograr mediante la CLI ejecutando este comando:
vonage numbers:search USY comprando uno de los Numbers disponibles que devuelve la carrera:
vonage numbers:buy <number>
Vincular el número virtual a la aplicación
Por último, vincule el nuevo número a la aplicación creada ejecutando:
vonage apps:link YOUR_APPLICATION_ID --number=<number>
Actualizar el medio ambiente
Cambie el nombre del archivo .env.dist a .env y actualice los valores según sea necesario:
NOTA: Todos los marcadores de posición señalados con <> deben actualizarse.
Plugin sin servidor
Instale el serverless-dotenv-plugin con el siguiente comando:
Despliegue en Lambda
Con todo lo anterior actualizado correctamente, ahora puede utilizar Serverless para desplegar la aplicación en AWS Lambda.
Nota: Asegúrese de visitar el Panel de API de Vonage y actualizar los campos answer y event de tu aplicación con lo que proporciona la implementación.
Migrar la transcripción a una base de datos
Si sólo necesita la transcripción, ya está todo hecho. Sin embargo, para automatizar la migración de los resultados de la transcripción a la base de datos será necesario implementar otra función. Clone esto nexmo-community/aws-voice-transcription-rds-callback-php a otra ubicación y siga las instrucciones en el README para ponerlo en marcha. Las instrucciones son idénticas a lo que se hizo anteriormente para la primera función.
Crear el activador
Después de añadir la segunda función, puede navegar a CloudWatch en su Consola de AWS y seleccionar Eventos y Comenzar para crear una nueva regla de eventos.
Establezca la regla de la siguiente manera:
Patrón de eventos
Construir un patrón de eventos para emparejar eventos por servicio
Nombre del servicio = Transcribir
Tipo de Evento = Cambio de Estado del Trabajo de Transcripción
Estado(s) específico(s) = COMPLETADO
Como Target seleccione la función Lambda #2 creada anteriormente
Desplácese hacia abajo y haga clic en Configurar detalles.
Dé a la regla un nombre y una descripción significativos, y actívela.
Haga clic en Crear regla para completarla.
Ahora estás listo para la prueba.
Utilización
Una vez completado el despliegue, debería poder realizar una llamada a su número virtual desde cualquier teléfono. Oirás un mensaje de conexión y, a continuación, se llamará al número del destinatario.
Después de colgar, el archivo MP3 se recuperará de Vonage y se subirá a AWS S3. A continuación, se iniciará un trabajo de transcripción. El trabajo se puede monitorizar en el sitio web de la consola de AWS tras iniciar sesión.
Una vez finalizada la transcripción, CloudWatch activará la función Lambda para analizar la transcripción e insertarla en la base de datos.
Próximos pasos
Si tiene alguna pregunta o se encuentra con problemas, puede ponerse en contacto con @VonageDev en Twitter o consultar en la Comunidad de desarrolladores de Vonage en Slack. Buena suerte.
