
Teilen Sie:
Adam ist ein Entwickler und Berater, der gerne Ultraläufe absolviert, bloggt und anderen dabei hilft, Technologien zu zähmen, um erstaunliche Dinge zu erreichen, und der ein unstillbares Verlangen hat, Mentoren zu sein und zu helfen.
Voice Transcription Pipeline in PHP mit Vonage
Lesedauer: 6 Minuten
In diesem Beitrag werden Sie eine Voice-Transkriptionspipeline erstellen. Das Ziel ist die Verwendung von Amazon Transcribe zu verwenden, um eine gesamte Konversation in Kanälen zu verarbeiten und die Ergebnisse dann in eine RDS MySQL-Datenbankinstanz einzufügen. Um dies zu erreichen, werden zwei AWS Lambda Funktionen: eine HTTP-Anwendung um eine MP3-Datei abzurufen und an Amazon Transcribe zu übermitteln, und eine Callback-Funktion nach Abschluss der Transkription, um die Ergebnisse in einer MySQL-Datenbank zu speichern.
Voraussetzungen
PHP 7.4 (Aktualisierung
serverless.ymlfür andere Versionen)Composer installiert global
Node.js und npm
Vonage API-Konto
Um dieses Tutorial durchzuführen, benötigen Sie ein Vonage API-Konto. Wenn Sie noch keines haben, können Sie sich noch heute anmelden und mit einem kostenlosen Guthaben beginnen. Sobald Sie ein Konto haben, finden Sie Ihren API-Schlüssel und Ihr API-Geheimnis oben auf dem Vonage-API-Dashboard.
In diesem Lernprogramm wird auch eine virtuelle Telefonnummer verwendet. Um eine zu erwerben, gehen Sie zu Rufnummern > Rufnummern kaufen und suchen Sie nach einer Nummer, die Ihren Anforderungen entspricht.
Anweisungen zur Einrichtung
Klonen Sie die nexmo-community/voice-channels-aws-transcribe-php von GitHub, und navigieren Sie in das neu erstellte Verzeichnis, um fortzufahren.
Composer zur Installation von Abhängigkeiten verwenden
Dieses Beispiel erfordert die Verwendung von Composer, um Abhängigkeiten zu installieren und den Autoloader einzurichten.
Angenommen, Sie haben Composer global installiert habenausführen:
composer install AWS-Einrichtung
Sie müssen Folgendes erstellen AWS-Anmeldeinformationen wie angegeben durch Serverless.
Erstellen Sie außerdem ein neues AWS S3 Bucket und notieren Sie sich die URL zur späteren Verwendung.
Verknüpfen Sie die App mit Vonage
Erstellen einer Vonage-Anwendung über die Befehlszeilenschnittstelle
Installieren Sie die CLI, indem Sie diese Anweisungen. Damit erstellen Sie eine neue Vonage Voice Anwendung, die auch eine answer_url und event_url für die in AWS Lambda ausgeführte Anwendung einrichtet:
vonage apps:create aws-transcribe --voice_answer_url=https://<your_hostname>/webhooks/answer --voice_event_url=https://<your_hostname>/webhooks/event
HINWEIS: Sie verwenden <your_hostname> als Platzhalter in diesem Befehl. Später, wenn Sie die durch die Bereitstellung in AWS Lambda bereitgestellten URLs kennen, müssen Sie diese Teile der URLs über das Vonage API Dashboard Einstellungen für Ihre Anwendung aktualisieren.
WICHTIG: Es werden eine Anwendungs-ID und ein privater Schlüssel zurückgegeben. Die Anwendungs-ID wird sowohl für den vonage apps:link Befehl und für die .env Datei später benötigt. Eine Datei namens private.key wird an demselben Ort/Ebene wie server.jsstandardmäßig erstellt.
Beziehen Sie eine neue virtuelle Nummer
Wenn Sie noch keine Nummer haben, erhalten Sie eine von Vonage. Dies kann auch über die Befehlszeile erfolgen, indem Sie diesen Befehl ausführen:
vonage numbers:search USUnd den Kauf einer der verfügbaren Numbers, die beim Laufen zurückgegeben werden:
vonage numbers:buy <number>
Verknüpfen Sie die virtuelle Nummer mit der Anwendung
Verknüpfen Sie schließlich die neue Nummer mit der erstellten Anwendung, indem Sie diese ausführen:
vonage apps:link YOUR_APPLICATION_ID --number=<number>
Update Umwelt
Benennen Sie die mitgelieferte .env.dist Datei in .env und aktualisieren Sie die Werte nach Bedarf:
HINWEIS: Alle Platzhalter, die mit <> gekennzeichnet sind, müssen aktualisiert werden.
Serverloses Plugin
Installieren Sie das serverless-dotenv-plugin mit dem folgenden Befehl:
Auf Lambda bereitstellen
Wenn Sie alle oben genannten Punkte erfolgreich aktualisiert haben, können Sie nun mit Serverless verwenden, um die App in AWS Lambda.
Anmerkung: Besuchen Sie unbedingt das Vonage-API-Dashboard und aktualisieren Sie die answer und event URLs für Ihre Anwendung mit den von der Bereitstellung bereitgestellten Werten.
Transkription in eine Datenbank migrieren
Wenn Sie nur die Transkription benötigen, ist alles erledigt. Um jedoch die Migration der Transkriptionsergebnisse in die Datenbank zu automatisieren, muss eine weitere Funktion implementiert werden. Klonen Sie diese nexmo-community/aws-voice-transcription-rds-callback-php an einen anderen Ort und folgen Sie den Anweisungen in der README, um es zum Laufen zu bringen. Die Anweisungen sind identisch mit denen, die oben für die erste Funktion gemacht wurden.
Den Auslöser erstellen
Nachdem Sie die zweite Funktion hinzugefügt haben, können Sie zu CloudWatch in Ihrer AWS-Konsole und wählen Sie Ereignisse und Starten um eine neue Ereignisregel zu erstellen.
Legen Sie die Regel wie folgt fest:
Ereignis-Muster
Ereignismuster erstellen, um Ereignisse nach Dienst abzugleichen
Dienstname = Transcribe
Ereignistyp = Statusänderung des Transkriptionsauftrags
Spezifische(r) Status = ABGESCHLOSSEN
Wählen Sie als Ziel die oben erstellte Lambda-Funktion #2
Scrollen Sie nach unten und klicken Sie auf Details konfigurieren.
Geben Sie der Regel einen aussagekräftigen Namen und eine Beschreibung, und aktivieren Sie sie.
Klicken Sie auf . Regel erstellen um sie abzuschließen.
Jetzt sind Sie bereit für den Test.
Verwendung
Wenn die Einrichtung abgeschlossen ist, sollten Sie Ihre virtuelle Nummer von jedem Telefon aus anrufen können. Sie hören eine Meldung, dass Sie verbunden sind, und dann wird die Nummer des Empfängers angerufen.
Nachdem Sie aufgelegt haben, wird die MP3-Datei von Vonage abgerufen und in AWS S3 hochgeladen. Anschließend wird ein Transkriptionsauftrag gestartet. Der Auftrag kann nach der Anmeldung auf der Website der AWS-Konsole überwacht werden.
Nach Abschluss der Transkription löst CloudWatch die Lambda-Funktion zum Parsen der Transkription und Einfügen in die Datenbank aus.
Nächste Schritte
Wenn Sie Fragen haben oder Probleme auftreten, können Sie sich an @VonageDev auf Twitter oder in der Vonage Entwickler-Gemeinschaft Slack-Team. Viel Glück!
