Serverless-Architekturen unter AWS, Teil 2 Amazon Polly und Pinpoint konfigurieren

Autor / Redakteur: Thomas Drilling / Stephan Augsten |

Als Vorbereitung für unsere serverlose Text-to-Speech-App widmet sich dieser Artikel den Grundlagen von Amazon Polly und Pinpoint. Mithilfe der beiden AWS-Dienste wollen wir Sprachnachrichten automatisiert versenden.

Anbieter zum Thema

Bucht man bei AWS eine Langwahlnummer, um Sprachnachrichten automatisiert zu verschicken, so wird diese im Menüpunkt „SMS und Sprache“ angezeigt.
Bucht man bei AWS eine Langwahlnummer, um Sprachnachrichten automatisiert zu verschicken, so wird diese im Menüpunkt „SMS und Sprache“ angezeigt.
(Bild: Drilling / AWS Germany GmbH)

Amazon Polly ist ein auf AWS betriebener Cloud-Service, mit dem sowohl Amazon-Benutzer als auch Entwickler, die Backends in AWS betreiben, einen übermittelten Text in natürliche Sprache umwandeln lassen können. Dabei greift Polly auf Machine-Learning-Algorithmen zurück, die auch mit zahlreichen anderen AWS-Diensten integriert sind.

Amazon Polly unterstützt mehrere Sprachen und bringt eine große Anzahl lebensechter Stimmen mit. So können Entwickler z. B. Anwendungen erstellen, die eine Sprachfunktion für unterschiedliche Regionen bieten. Nutzer zahlen bei Polly nur für den Text, aus dem eine Sprachausgabe generiert wird. Die von Amazon Polly erzeugte Sprachausgabe lässt sich ohne zusätzliche Kosten zwischenspeichern und wiedergeben.

Häufige Anwendungsfälle für Amazon Polly sind u. a. mobile Anwendungen wie Newsreader, Spiele, E-Learning-Plattformen, barrierefreie Anwendungen für sehbehinderte Personen sowie das schnell wachsende IoT-Segment. Wichtig: Amazon Polly ist nicht für die Verwendung mit dem Payment Card Industry Data Security Standard (PCI-DSS) oder FedRAMP zertifiziert.

Die Nutzung von Amazon Polly bietet Entwicklern viele Vorteile. Der Wichtigste besteht darin, dass es sich bei Polly um eine Cloud-basierte Lösung handelt. In Geräten verbaute Sprachausgabelösungen hingegen erfordern in der Regel erhebliche Datenverarbeitungsressourcen. Der Zugriff auf CPU, Arbeitsspeicher und Festplattenspeicher führt zwangsläufig zu höheren Entwicklungskosten und höherem Stromverbrauch bei Geräten wie Tablets, Smartphones usw.

Die Umwandlung von Text zu Sprache in der Cloud reduziert also den lokalen Ressourcenbedarf erheblich. Alle mit Polly verfügbaren Sprachen und Stimmen werden zudem in bestmöglicher Qualität ausgeliefert, etwaige Sprachverbesserungen sind für alle Endbenutzer sofort verfügbar und erfordern keine zusätzliche Aktualisierung der Geräte.

Laut Amazon verwendet Polly eine „erstklassige“ Sprachausgabetechnologie, um natürliche Sprache mit hoher Aussprachegenauigkeit zu generieren (einschließlich Abkürzungen, Langform von Akronymen, Interpretation von Datum/Uhrzeit und Klärung von Homografen). Zudem erlaubt Polly mit seiner sehr niedrigen Latenz schnelle Reaktionszeiten und eignet sich damit auch für Dialogsysteme.

Die Sprachsynthese mit Amazon Polly unterstützt mehrere Sprachen und bietet für die meisten von ihnen sowohl männliche als auch weibliche Stimmen. Mit dem bei AWS üblichen nutzungsabhängigen Preismodell von Amazon Polly fallen keine Einrichtungskosten an.

Amazon Pinpoint

Amazon Pinpoint ist ein Service, der es AWS-Nutzern ermöglicht, über mehrere so genannte Messaging-Kanäle mit ihren Kunden zu interagieren. Pinpoint ist also in erster Linie ein Steuerungs-Tool für Marketing-Kampagnen. Nutzer können damit Push-Benachrichtigungen, E-Mails, SMS-Nachrichten und Sprachnachrichten an ihre Kunden versenden lassen.

Die zentralen Begrifflichkeiten und Entitäten in Pinpoint sind Projekte, Zielgruppen, Zielgruppensegmente, Kanäle und Kampagnen. Hat man in der Pinpoint-Management-Console ein erstes Projekt erstellt, kann man einen oder mehrere Kanäle konfigurieren. Zur Verfügung stehen Push-Benachrichtigungen, E-Mail, SMS und die Option „Stimme“. Für unsere kleine Demo legen wir mit der letzten Option einen Sprachkanal ab.

Mit Hilfe eines Sprachkanals lassen sich Sprachnachrichten aus einem Textskript erstellen (oder von Lambda-getriggert von seiner App entgegennehmen), um sie über das Telefon zu übermitteln. So ist es möglich, auch Kunden zu erreichen, deren Telefonnummern keine SMS-Nachrichten empfangen können – etwa Benutzer, die Festnetz- oder VoIP-Dienste benutzen. Zum gegenwärtigen Zeitpunkt lassen sich Sprachnachrichten nur mit der SMS- und Voice-API senden. Man kann die Amazon Pinpoint Console benutzen, um spezielle Telefonnummern zum Senden von Sprachnachrichten von AWS anzufordern.

Longcodes

Bevor man also z. B. SMS-Messaging in beide Richtungen verwenden kann, um Nachrichten zu empfangen, muss man einen Kurzcode (SMS) oder Langcode (Sprache) für den SMS-/Sprach-Kanal anfordern. Die so genannte Langwahlnummer (auch als „Lange, virtuelle Nummer“ oder LVN bekannt) handelt es sich um eine – je nach Land, zu dem sie gehört, – bis zu 12-stellige Standard-Telefonnummer, die in der Regel für eine persönliche Kommunikation mit geringem Volumen gedacht ist.

Langwahlnummern können aber auch zum Senden von Testnachrichten oder von geringen Mengen von Nachrichten an die eigenen Kunden verwendet werden. Allerdings sind in den USA und Kanada die Senderaten für Langwahlnummern auf 1 Nachricht pro Sekunde beschränkt. Das Limit kann in anderen Ländern und Regionen höher oder niedriger ausfallen. Wer also unbedacht eine große Menge von Nachrichten von einer Langwahlnummer sendet, kann möglicherweise von seinem Mobilnetzbetreiber blockiert werden.

Insbesondere beim programmatischen Senden sollte man deshalb die Anzahl der Nachrichten pro Sekunde in seiner Anwendung begrenzen. Verwendet man den Sprachkanal zum ersten Mal, befindet sich das entsprechende Konto in einer Sandbox, sodass für dieses bestimmte Beschränkungen gelten. Diese Limits lassen sich allerdings jederzeit durch einen Support-Call aufheben. Das Konto wird dann aus der Sandbox entfernt und hat Produktionszugriff.

Man kann Langcodes direkt über die Pinpoint-Konsole mieten. Bei diesen Telefonnummern handelt es sich um dedizierte Nummern, die nur vom jeweiligen Pinpoint-Konto verwendet werden dürfen und auch nur für den Sprachkanal bestimmt sind. Mietet man allerdings wie erwähnt einen Langcode, der auf USA (einschließlich Puerto Rico) oder Kanada basiert, kann dieser zusätzlich auch zum Senden von SMS-Nachrichten verwendet werden.

Langwahlnummer lassen sich über die Pinpoint-Konsole aktuell nur für eine begrenzte Anzahl von Ländern und Regionen anmieten.
Langwahlnummer lassen sich über die Pinpoint-Konsole aktuell nur für eine begrenzte Anzahl von Ländern und Regionen anmieten.
(Bild: Drilling / AWS Germany GmbH)

Zum Anfordern/Mieten von Longcodes klickt man im Pinpoint-Dashboard auf „Einstellungen“ und dort im Abschnitt „SMS und Sprache“ auf „Verwalten“. Dort findet man den Button „Langwahlnummer anfordern“. Mit ihm ist es möglich, lokale Telefonnummern zu ordern, die in verschiedenen Ländern oder Regionen registriert sind. Allerdings lassen sich zurzeit nur Langcodes für eine begrenzte Anzahl von Ländern und Regionen über die Pinpoint-Konsole anmieten.

Um einen Langcode für ein Land zu erhalten, das nicht als Zielland oder -Region aufgeführt ist (wie z. B. Deutschland) müsste man einen neuen Konto- und Rechnungsunterstützungs-Fall im AWS-Support-Center öffnen. Für unsere Demo ist es aber relativ belanglos, welche Nummer beim Anruf angezeigt wird. Uns geht es primär um das Zusammenspiel der serverlosen Komponenten.

Für unsere Beispiel-App wählen wir als Zielland die USA und bei Standard-Anruftyp „Transaktional“.
Für unsere Beispiel-App wählen wir als Zielland die USA und bei Standard-Anruftyp „Transaktional“.
(Bild: Drilling / AWS Germany GmbH)

Wir verzichten also auf das Anfordern eines deutschen Longcodes und mieten über die Konsole eine US-Nummer. Dies macht preislich ohnehin keinen Unterschied und hält zudem die Möglichkeit offen, auch SMS-Nachrichten versenden zu können. Wir wählen also USA und bei Standard-Anruftyp „Transaktional“. Die Menge belassen wir auf 1. Die Kosten belaufen sich dann auf 1 US-Dollar pro Monat. Die georderte Langwahlnummer wird anschließend im Menü „SMS und Sprache“ angezeigt.

Über das Pinpoint-Dashboard lassen sich Sprachnachrichten mit einem Klick auf „Test-Messaging“ ausprobieren.
Über das Pinpoint-Dashboard lassen sich Sprachnachrichten mit einem Klick auf „Test-Messaging“ ausprobieren.
(Bild: Drilling / AWS Germany GmbH)

Ob Amazon Polly die per App als Trigger zu übergebende Textnachricht zuverlässig in die gewünschte Sprache übersetzt (siehe Workshop Teil 3), lässt sich im Pinpoint-Dashboard mit einem Klick auf „Test-Messaging“ leicht ausprobieren. Hier klickt man auf der Seite „Test-Messaging“ im Bereich „Kanal“ auf „Sprache“, wählt bei „Von Telefonnummer“ den zuvor gemieteten Longcode und bei „Zieltelefonnummer“ die Telefonnummer ein, welche die Test-Sprachnachricht erhalten soll.

Für die Sprachsynthese in Deutsch stehen in AWS aktuell drei Stimmtypen zur Verfügung.
Für die Sprachsynthese in Deutsch stehen in AWS aktuell drei Stimmtypen zur Verfügung.
(Bild: Drilling / AWS Germany GmbH)

Im unteren Teil des Dialoges wählt man dann die „Sprache und Region“, sowie die Stimme. In Deutschland stehen per Default zwei Frauenstimmen (Vicki und Marlene) sowie eine Männerstimme (Hans) zur Verfügung. Weitere Details dazu finden sich in der https://docs.aws.amazon.com/de_de/polly/latest/dg/voicelist.html Voice-Liste des Amazon Polly-Entwicklerhandbuchs. Die reine Sprachausgabe kann man mit einem Klick auf „Sprachausgabe wiedergeben“ auch vor Verwenden der Test-Nachricht anhören. Optional versendet man die Nachricht mit „Nachricht senden“ und hört sie auf dem Zielgerät ab.

Im dritten Teil binden wir das Senden von Sprachnachrichten in ein echtes Testprojekt im Rahmen einer Pinpoint-Kampagne ein. Dabei wird das Senden der Nachrichten an zuvor definierte Endpunkte durch eine Lambda-Funktion gesteuert, die ihrerseits mit ihrer Payload an eine entsprechende App gekoppelt sein könnte. Hier werden wir dann beim Versenden der Nachricht die Speech Synthesis Markup Language (SSML) zum Definieren der Payload verwenden. Die Developer-Dokumentation zu SSML vermittelt einen ersten Eindruck, wie weit sich bei Bedarf die Sprachsynthese noch optimieren lässt.

(ID:46025904)