https://d226lax1qjow5r.cloudfront.net/blog/blogposts/voice-transcription-pipeline-in-php-with-vonage-dr/Blog_Voice-Transcription-Pipeline_1200x600.png

Transcripción de voz en PHP con Vonage

Publicado el May 4, 2021

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

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 US

Y 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:

APP_ID=voice-aws-transcribe-php LANG_CODE=en-US SAMPLE_RATE=8000 AWS_VERSION=latest AWS_S3_ARN= AWS_S3_BUCKET_NAME='' AWS_S3_RECORDING_FOLDER_NAME='' VONAGE_APPLICATION_PRIVATE_KEY_PATH='./private.key' VONAGE_APPLICATION_ID=

NOTA: Todos los marcadores de posición señalados con <> deben actualizarse.

Plugin sin servidor

Instale el serverless-dotenv-plugin con el siguiente comando:

npm i -D serverless-dotenv-plugin

Despliegue en Lambda

Con todo lo anterior actualizado correctamente, ahora puede utilizar Serverless para desplegar la aplicación en AWS Lambda.

serverless deploy

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.

Compartir:

https://a.storyblok.com/f/270183/384x384/b3c7ffaf85/adamculp.png
Adam CulpAntiguos alumnos de Vonage

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.