© KFifa/Shutterstock.com
Einen eigenen Alexa Skill kreieren

Alexa mit Pfiff


Nachdem Amazon im Smartphonemarkt nicht wirklich Fuß fassen konnte, hat der Alleshändler sprachbasierte Assistenten als neues Gefechtsfeld avisiert. Entwickler dürfen Alexa mit eigenen Skills ausstatten, die Fragen beantworten und Produkte verkaufen.

Gleich zu Beginn eine wichtige Abklärung: Alexa unterscheidet sich von Spracherkennungsprodukten wie Lernout & Hauspies legendärem Dragon dadurch, dass es grammatikbasiert arbeitet. Das bedeutet, dass das Produkt nicht beliebige Informationen aufnehmen kann. Entwickler legen stattdessen eine Liste von Ausdrücken an, die der Engine danach als Wissensbasis zur Bewertung eingehender Sprachinformationen dient.

Außer Frage steht, dass diese Vorgehensweise zu einer Einschränkung der Möglichkeiten führt und die Arbeit des Entwicklers erschwert. Auf der Habenseite steht allerdings, dass ein derartiges Spracherkennungssystem ob der reduzierten Anzahl von Möglichkeiten wesentlich genauer arbeiten kann und zudem mit weniger Rechenleistung auskommt. Ein Paradebeispiel für derartige Systeme liefert Microsoft mit dem Kinect SDK – der Sensor der ersten Generation erreichte mit sauber aufgebauten Grammatiken auch auf sehr leistungsschwacher Hardware brauchbare Resultate.

In die Breite

Amazons Sprachassistent Alexa ist auf eine lernfähige Erweiterbarkeit ausgelegt. Das als Skill (Fertigkeit) bezeichnete Progrämmchen erlaubt es Entwicklern, mehr oder weniger beliebige Intelligenz in Richtung des Servers zu jagen. Hierzu benötigt man nicht einmal ein Alexa-Gerät – eine Workstation reicht für erste Tests völlig aus.

Die Arbeiten an Alexa Skills beginnen prinzipiell im Backend, das unter [1] auf Benutzer wartet. Es ist empfehlenswert, sich mit einem Konto anzumelden, das auch für die Arbeit mit AWS freigeschaltet ist.

Klicken Sie im nächsten Schritt auf die Option Create Skill, um den Assistenten anzuwerfen. Im Feld Skill Name erhält die neue Funktion einen Namen, als Default Language wollen wir German (DE) auswählen. Zum Zeitpunkt der Drucklegung unterstützt Amazon die in Abbildung 1 gezeigten Orte.

hanna_alexa_1.tif_fmt1.jpgAbb. 1: Alexa ist geografisch beschränkt

Der Assistent fragt danach, welches Modell für die Entgegennahme der Daten verantwortlich ist. Wir entscheiden uns hier für Custom und klicken danach auf den Knopf Create skill. Amazon setzt uns nach getaner Arbeit in der hauseigenen Web-IDE ab, in der Sie den eigentlichen Skill erzeugen (Abb. 2).

hanna_alexa_2.tif_fmt1.jpgAbb 2: Alexa Skills entstehen im Browser

Das von Alexa bereitgestellte Projektskelett ist noch nicht betriebsbereit. Im Interesse der Übersichtlichkeit wollen wir im ersten Schritt dafür sorgen, dass es ausführbar ist. Dazu müssen wir die rechts im Fenster eingeblendeten Schritte abarbeiten. Die auf der linken Seite eingeblendeten Komponenten des Skills wollen wir momentan ignorieren.

Die erste Aufgabe ist das Festlegen des Invocation Name. Es handelt sich dabei um einen – idealerweise weltweit einzigartigen – Namen, über den der Benutzer Alexa darüber informiert, dass eine eingehende Anfrage für den von Ihnen entwickelten Skill vorgesehen ist. Amazon erlaubt dabei die Verwendung von mindestens zwei Worten – je länger, desto besser. Der Autor probiert in den folgenden Schritten software und support test. Klicken Sie nach der Eingabe des Wunschnamens auf den Save-Knopf, um eine Aktualisierung des Modells zu befehligen.

Intents, abseits von Android

Klicken Sie im nächsten Schritt abermals auf den Build-Tab in der Seite der IDE, um zum Skill builder checklist zurückzukehren. Das erste To-do-Item erscheint nun mit einem Haken, weil die von ihm gestellten Anforderungen erfolgreich erledigt wurden.

Die zweite Aufgabe hört auf den Namen Intents, Samples and Slots – sie ist für das eigentliche „Fleisch“ unseres Skills verantwortlich. Die in der Einleitung erwähnte Grammatik besteht in der Alexa-Welt aus einer Gruppe von als Intents bezeichneten Ausdrücken. Ein Intent ist eine mehr oder weniger beliebige Handlung, die der Benutzer unter Verwendung unseres Alexa Skills durchführen möchte. Im Fall eines Skills zu Zigarren wäre es beispielsweise die Anfrage, welche Hersteller eine Zigarre mit einem bestimmten Ringmaß anbieten. Alternativ dazu – ein Skill darf mehrere Tricks enthalten – könnte der Benutzer natürlich auch fragen, welches Format eine Zigarre vom Typ Robusto oder Short Corona aufweist.

Eine sorgfältige Betrachtung dieses Beispiels zeigt, dass ein Skill bzw. die in ihm enthaltenen Aufgaben parametrierbar sein müssen. Die dazu vorgesehene Vorgehensweise ist der Slot. Es handelt sich dabei um einen Parameter, die in der Intent-Deklaration vorkommt, dort aber beliebige Werte aufnehmen kann. Die Verwendung von Slots wird von Amazon durch die Bereitstellung einer Gruppe vordefinierter Felder erleichtert. Möchten Sie beispielsweise Zahlen oder Daten einlesen, finden Sie unter [2] eine Gruppe von bereitgestellten Slots. Amazon investiert erfahrungsgemäß immensen Aufwand in deren Tuning und erkennt die jeweiligen Informationen mit sehr hoher Genauigkeit. Kurz vor der Fertigstellung dieses Hefts begann Amazon zudem damit, einige Dutzend Stern-Slots bereitzustellen. Es handelt sich dabei um Parameter, die beispielsweise die Namen von Flughäfen, Fluglinien, Regierungsdistrikten, Künstlern oder Farben aufnehmen können. Deren Verwendung ist in der Praxis immer empfehlenswert – schon deshalb, weil sie so auf die (erheblichen) Ressourcen von Amazon zurückgreifen können und keine eigene Liste pflegen müssen.

Nach dem Anklicken des zweiten Eintrags in der To-do-Liste finden Sie sich im Intent-Fenster wieder. Neben der Erzeugung eines hauseigenen Intents können Sie durch Auswahl der Option Use an existing intent from Alexa's built-in library einen von Amazon vorparametrierten Intent verwenden. Wundern Sie sich nicht, dass das Backend auch dann auf Englisch erscheint, wenn der resultierende Skill in deutscher oder einer anderen der in Abbildung 1 genannten Sprachen entsteht.

Da wir einen hauseigenen Intent erzeugen möchten, geben wir im ersten Schritt einen Intent-Namen ein. Es handelt sich dabei um einen nur für das Amazon Backend relevanten String, wir entsch...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang