• Zuhause
  • Artikel
  • Wie Sie Ihre Projekte unterrichten, um mit AWS Polly zu sprechen
Veröffentlicht am 13-03-2019

Wie Sie Ihre Projekte unterrichten, um mit AWS Polly zu sprechen

Foto von Jeff Sheldon auf Unsplash

Die Sprachausgabe kann Ihr Projekt auf eine völlig neue Ebene bringen. Sind Sie ein Hersteller, der ein neues Hausautomationswerkzeug erstellt oder ein professioneller Entwickler, der an einem kommerziellen Gerät arbeitet? Folgen Sie dieser Anleitung, um zu lernen, wie Sie Ihrem Projekt mit wenig Aufwand eine natürliche Stimme verleihen können!

TTS = Text zu Sprache

Text-To-Speech-Systeme sind nichts Neues. Das erste Mal, als ich einen Computer sprechen hörte, war manchmal im letzten Jahrhundert auf meinem Commodore C64. Es war eine kaum verständliche, monotone Roboterstimme. Noch so aufregend !!

Schneller Vorlauf bis 2019 und lauschen Sie den modernen, hochmodernen TTS-Systemen. Alexa, Siri, Cortana und andere - alle klingen so natürlich! Und sie können leicht mit echten menschlichen Sprechern verwechselt werden. Wäre es nicht schön, wenn Ihr Raspberry Pi-Projekt so mit Ihnen reden würde?

Lernen Sie AWS Polly kennen

Die Cloud-Plattform von Amazon, AWS, bietet viele einfach zu verwendende Cloud-basierte Lösungen für verschiedene Aufgaben. Von Datenbank- und Computerdiensten über IoT-Broker und verschiedene Nachrichtenwarteschlangen bis hin zur einsatzbereiten Bilderkennung. Und - das Thema des heutigen Artikels - Stand der Technik Text To Speech-Dienst AWS Polly.

AWS Polly - die Stimme hinter Amazon Alexa - unterstützt derzeit 57 verschiedene Stimmen in 19 Sprachen. Sie können zwischen Männern und Frauen, Kindern, Erwachsenen und verschiedenen Akzenten wählen - G’day Australia! - Für zusätzliche Experimente können Sie beispielsweise versuchen, dass eine japanische Stimme englischen Text sagt.

In diesem Beitrag erstellen wir eine einfache Python 3-App mit allen Bausteinen aus Text in Sprache, die Sie in Ihrem Projekt wiederverwenden können.

Wir werden Raspberry Pi mit Raspbian verwenden. Das ist nur eine Basis-Plattform - es gibt nichts Raspberry-spezifisches im Code, und es läuft problemlos auf jedem Gerät mit Internetanschluss, auf dem Sie Python installieren können, sei es Windows, Mac oder Linux.

Voraussetzungen

Wir können AWS-Services im Allgemeinen auf drei verschiedene Arten konfigurieren und nutzen:

  • AWS-Webkonsole - die grafische Benutzeroberfläche
  • Aws-cli - der Befehlszeilen-Client
  • AWS SDK - das Software Development Kit. Für Python ist dies die Bibliothek boto3.

Als Erstes installieren wir die letzten beiden mit pip3.

Pi @ polly: ~ $ sudo pip3 installiere awscli boto3
Awscli sammeln
[...]
Installierte Pakete installieren: docutils, pyasn1, rsa, urllib3, six, python-dateutil, jmespath, botocore, s3transfer, colorama, PyYAML, awscli, boto3
PyYAML-3.13 awscli-1.16.25 wurde erfolgreich installiert. Botocore-1.12.15 Colorama-0.3.9 Docutils-0.14 jmespath-0.9.3 pyasn1-0.4.4 python-dateutil-2.7.3 rsa-3.4 .2 s3transfer-0.1.13 sechs-1.11.0 urllib3-1.23

Nun können wir überprüfen, dass sowohl aws-cli als auch boto3 funktionieren.

Pi @ polly: ~ $ aws --version
aws-cli / 1.16.25 Python / 3.5.3 Linux / 4.14.70-v7 + botocore / 1.12.15
Pi @ polly: ~ $ python3 -c "import boto3; print (boto3 .__ version__)"
1.9.15

Wir benötigen auch die Pygame-Bibliothek. Es ist bereits in Raspbian vorinstalliert. Wenn Sie dieses Lernprogramm auf einer anderen Plattform befolgen, müssen Sie es möglicherweise mit pip3 install pygame installieren.

Audioausgabe testen

Da sich dieses Tutorial ausschließlich mit der Audioausgabe beschäftigt, testen wir, ob Pygame tatsächlich Sounds abspielen kann. Wir verwenden eine der mit Raspbian gelieferten Audiodateien von Scratch oder Sie können Ihre eigene MP3-, OGG- oder WAV-Datei abspielen.

Öffnen Sie in Ihrem bevorzugten Texteditor oder in einer Python-IDE wie Thonny eine neue Datei audio_test.py und fügen Sie diesen Code ein:

Speichern Sie es und führen Sie es aus, indem Sie in Thonny die Taste F5 drücken. Sie sollten einen Mann lachen hören.

Es ist wichtig, dass dies funktioniert, bevor wir weitermachen. Kein Audio funktioniert = keine Polly spricht!

AWS-Berechtigungsnachweise

Amazon bietet eine kostenlose Stufe für die meisten Dienste, sodass wir sie testen können, ohne einen Cent zu zahlen. Mit der kostenlosen Polly-Stufe können wir im ersten Jahr der Nutzung des Dienstes bis zu 5 Millionen Zeichen pro Monat konvertieren.

Ich möchte, dass sich dieser Artikel auf Polly konzentriert. Befolgen Sie daher die Schritte in einem Side-Post, um Ihre AWS-Berechtigungen zu erstellen. Wir werden sie für die zukünftigen Demos brauchen.

Stellen Sie vor dem Fortfahren sicher, dass die Anmeldeinformationen richtig konfiguriert sind.

Pi @ polly: ~ $ aws polly beschreiben-Stimmen
{
    "Stimmen": [
        {
            "Geschlecht männlich",
            "Id": "Russell",
            "LanguageCode": "en-AU",
            "LanguageName": "Australisches Englisch",
            "Name": "Russell"
        },
        ... viele weitere Stimmen aufgelistet ...
}

Wenn stattdessen ein Fehler wie dieser angezeigt wird, gehen Sie zurück zum Artikel Anmeldeinformationen und überprüfen Sie alle Schritte.

Pi @ polly: ~ $ aws polly beschreiben-Stimmen
Beim Aufrufen der DescribeVoices-Operation ist ein Fehler aufgetreten (AccessDeniedException): User: arn: aws: iam :: 123456789012: user / polly ist nicht berechtigt: polly: DescribeVoices

Hallo Polly

Wenn die Zugangsdaten vorhanden sind und Pygame-Audio funktioniert, können wir AWS Polly endlich dazu bringen, etwas zu sagen.

Foto von Vladislav Klapin auf Unsplash

Das offizielle AWS SDK (Software Development Kit) für Python heißt boto3 und unterstützt fast alle AWS-Dienste, einschließlich Polly. Es behandelt automatisch Authentifizierung, Anforderungssignierung, Antwortdekodierung usw.

Um über AWS Polly Sprache zu synthetisieren, benötigen wir im Wesentlichen nur eine Zeile Python-Code. Wir rufen polly.synthesize_speech () von boto3 an.

boto3.client ('polly'). synthesize_speech (
    OutputFormat = 'ogg_vorbis',
    VoiceId = 'Brian',
    Text = 'Hallo, ich bin Polly! Obwohl ich mich wie Brian anhöre. ')

Um die synthetisierte Sprache tatsächlich abspielen zu können, benötigen wir natürlich einige Zeilen, um die Audioausgabe des Pygames zu initialisieren. Speichern Sie diesen Code als audio_helper.py, wir werden ihn später verwenden.

Mit dem langweiligen Audiomaterial ist der eigentliche Polly-Code ein ordentliches, kurzes Programm. Speichern Sie es als hello_polly.py.

Das ist es in aller Kürze! Führen Sie es mit python3 hello_polly.py aus. Wenn die Sterne ausgerichtet sind, die Tonausgabe nicht stummgeschaltet, die Lautsprecher angeschlossen sind und die AWS-Berechtigungsnachweise gültig sind, sollten Sie es sprechen hören.

Hören Sie sich die Ausgabe alternativ hier an: hello_polly.ogg

Fortgeschrittene Gespräche

So wie HTML Text in Klartext mit Fett- und Kursivschrift, Absätzen und Bildern anreichert, führt SSML - Speech Synthesis Markup Language - ähnliche Tags ein, um eine ansprechende Sprachausgabe zu erzeugen, indem verschiedene Stimmen verwendet werden, Tempo, Tonhöhe, Lautstärke usw. geändert werden.

Um SSML zu verwenden, wickeln Sie den Text einfach in Markierungen ein und fügen Sie den Parameter TextType = 'ssml' hinzu, wenn Sie synthesize_speech () aufrufen.

Lassen Sie uns den einfachen Text in hello_polly.py durch einen einfachen SSML-Text ersetzen und als ssml_simple.py speichern. Hier sind nur die geänderten Zeilen, der Rest des Programms bleibt gleich.

Die vollständige Liste der verfügbaren SSML-Tags ist auf den von Amazon Polly unterstützten SSML-Tags von Amazon dokumentiert.

Hören Sie sich die Ausgabe hier an: ssml_simple.ogg

Ich höre Stimmen…

In den oben genannten Programmen haben wir nur die Stimmen von Brian und Emma verwendet. Polly kennt jedoch viel mehr Stimmen, die verschiedene Sprachen und Akzente sprechen - von Englisch, Deutsch oder Französisch über Japanisch und Chinesisch bis hin zu etwas unerwartetem Isländisch oder Rumänisch. Alle 19 Sprachen, viele mit unterschiedlichen Akzenten, zum Beispiel britisches, amerikanisches, australisches und indisches Englisch.

Foto von Nicholas Green auf Unsplash

Das Auflisten der verfügbaren Sprachen ist ein weiterer einfacher Aufruf von Polly API: polly.describe_voices ().

Sobald wir die Liste der Stimmen erhalten haben, können wir jede Stimme dazu bringen, sich vorzustellen. Mit etwas SSML stellen wir sicher, dass der Name in seiner Muttersprache gesagt wird, der Rest des Satzes jedoch in Englisch ist Manchmal mit einem anderen Akzent! Mit SSML und verschiedenen Stimmen können wir ein wirklich multikulturelles Erlebnis schaffen.

Hören Sie sich die Ausgabe hier an: configure_voices.ogg

Was jetzt?

Jetzt ist es an der Zeit, Ihren Projekten eine Stimme hinzuzufügen. Wie wäre es, wenn Sie Ihren auf Raspberry Pi basierenden Wecker vom langweiligen Piep-Piep-Piepton in einen personalisierten Wake-Up-Michael verwandeln! Wach auf, es ist schon 10 Uhr !! Oder wie wäre es mit einem Upgrade Ihres Twitter-Displays auf einen Twitter-Reader? Oder lassen Sie Ihre Türkamera Ihre Besucher beim Namen begrüßen? Natürlich würde dies auch eine Gesichtserkennung erfordern. Aber machen Sie sich keine Sorgen, wir werden in einem der zukünftigen Artikel darauf eingehen.

Bei Enterprise IT können wir Sie bei der Integration von AWS Polly in Ihre kommerziellen Projekte unterstützen. Oder bei allen anderen AWS-Diensten.

Sie können übrigens den gesamten Code aus diesem Artikel von meinem AWS Polly GitHub-Repository herunterladen und jetzt spielen. Buchstäblich.

Bis zum nächsten Mal!

Siehe auch

Führen Sie die folgenden Schritte aus, um mit Docker und React einen Workflow in Produktionsqualität zu erstellen