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

Pipeline de transcription vocale en PHP avec Vonage

Publié le May 4, 2021

Temps de lecture : 6 minutes

Dans ce billet, vous allez créer un pipeline de transcription vocale. L'objectif est d'utiliser Amazon Transcribe pour traiter une conversation entière en canaux, puis d'insérer les résultats dans une base de données RDS MySQL. Pour ce faire, il faudra deux AWS Lambda : une application application HTTP pour récupérer un fichier MP3 et le soumettre à Amazon Transcribe, et une fonction de rappel fonction de rappel à la fin de la transcription pour stocker les résultats dans une base de données MySQL.

Conditions préalables

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.

Instructions d'installation

Clonez le fichier nexmo-community/voice-channels-aws-transcribe-php depuis GitHub, et naviguez dans le répertoire nouvellement créé pour continuer.

Utiliser Composer pour installer les dépendances

Cet exemple nécessite l'utilisation de Composer pour installer les dépendances et configurer l'autoloader.

En supposant que Composer est installé globalementexécutez :

composer install

Configuration d'AWS

Vous devez créer informations d'identification AWS comme indiqué par Serverless.

Créez également un nouveau AWS S3 bucket et notez l'URL pour une utilisation ultérieure.

Lier l'application à Vonage

Créer une application Vonage à l'aide de l'interface de ligne de commande

Installez l'interface de programmation en suivant les instructions suivantes. Vous l'utiliserez pour créer une nouvelle application Vonage Voice qui met également en place une interface de communication entre l'utilisateur et Vonage Voice. answer_url et event_url pour l'application exécutée dans AWS Lambda :

vonage apps:create aws-transcribe --voice_answer_url=https://<your_hostname>/webhooks/answer --voice_event_url=https://<your_hostname>/webhooks/event

REMARQUE : Dans cette commande, vous utiliserez <your_hostname> comme placeholder dans cette commande. Plus tard, lorsque vous connaîtrez les URL fournies par le déploiement sur AWS Lambda, vous devrez mettre à jour ces éléments d'URL via le tableau de bord de l'API Vonage. Tableau de bord de l'API Vonage pour votre application.

IMPORTANT : Le système renvoie un numéro d'identification de la demande et une clé privée. L'identifiant de l'application sera nécessaire pour la commande vonage apps:link ainsi que pour le fichier .env plus tard. Un fichier nommé private.key sera créé au même endroit/niveau que le fichier server.jspar défaut.

Obtenir un nouveau numéro virtuel

Si vous n'avez pas encore de numéro, obtenez-en un auprès de Vonage. Cette opération peut également être réalisée à l'aide de la CLI en exécutant la commande suivante :

vonage numbers:search US

Et l'achat d'un des numéros disponibles rendus par la course :

vonage numbers:buy <number>

Lier le numéro virtuel à l'Application

Enfin, liez le nouveau numéro à l'application créée en exécutant :

vonage apps:link YOUR_APPLICATION_ID --number=<number>

Mise à jour de l'environnement

Renommez le fichier .env.dist en .env et mettez à jour les valeurs si nécessaire :

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=

REMARQUE : Tous les espaces réservés signalés par <> doivent être mis à jour.

Plugin sans serveur

Installer le serverless-dotenv-plugin avec la commande suivante :

npm i -D serverless-dotenv-plugin

Déployer vers Lambda

Avec toutes les mises à jour ci-dessus effectuées avec succès, vous pouvez maintenant utiliser Serverless pour déployer l'application sur AWS Lambda.

serverless deploy

Remarque : Assurez-vous de visiter le Tableau de bord de l'API de Vonage et de mettre à jour les champs answer et event pour votre application avec ce qui est fourni par le déploiement.

Migration de la transcription vers une base de données

Si vous n'avez besoin que de la transcription, tout est fait. Cependant, pour automatiser la migration des résultats de la transcription vers la base de données, il faudra déployer une autre fonction. Clonez cette fonction nexmo-community/aws-voice-transcription-rds-callback-php à un autre endroit et suivez les instructions dans le README pour le rendre opérationnel. Les instructions sont identiques à ce qui a été fait ci-dessus pour la première fonction.

Créer le déclencheur

Après avoir ajouté la deuxième fonction, vous pouvez naviguer vers CloudWatch dans votre console AWS et sélectionner Événements et Démarrer pour créer une nouvelle règle d'événement.

Définissez la règle comme suit :

  • Modèle d'événement

  • Construire un modèle d'événement pour faire correspondre les événements par service

  • Nom du service = Transcrire

  • Type d'événement = Changement d'état du travail de transcription

  • Statut(s) spécifique(s) = ACHEVÉ

  • En tant que cible, sélectionnez la fonction Lambda #2 créée ci-dessus.

  • Faites défiler vers le bas et cliquez sur Configurer les détails.

  • Donnez à la règle un nom et une description significatifs, puis activez-la.

  • Cliquez sur Créer une règle pour terminer.

Vous êtes maintenant prêt à tester.

Utilisation

Une fois le déploiement terminé, vous devriez pouvoir passer un appel vers votre numéro virtuel à partir de n'importe quel téléphone. Vous entendrez un message indiquant que vous êtes connecté, puis le numéro du destinataire sera appelé.

Après avoir raccroché, le fichier MP3 sera récupéré de Vonage et téléchargé sur AWS S3. Ensuite, une tâche de transcription sera lancée. Le travail peut être contrôlé sur le site web de la console AWS après connexion.

Une fois la transcription terminée, CloudWatch déclenchera la fonction Lambda pour analyser la transcription et l'insérer dans la base de données.

Prochaines étapes

Si vous avez des questions ou rencontrez des problèmes, vous pouvez contacter @VonageDev sur Twitter ou vous renseigner dans la Communauté des développeurs de Vonage sur Slack. Bonne chance.

Partager:

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

Adam est un développeur et un consultant qui aime l'ultra-course, les blogs, et qui aide les autres à apprivoiser la technologie pour accomplir des choses étonnantes avec un désir insatiable de mentorat et d'aide.