Langsam, aber sicher, ist die Sprachsteuerung mittels Künstlicher Intelligenz auch in den Haushalten von Otto Normalverbrauchern angekommen. Immer mehr Bekannte in unserem Umfeld nutzen die Technik von Amazon Echo bzw. Amazon Alexa mittlerweile privat. Sei es um die Wohnzimmerbeleuchtung abends vom Bett aus per Sprachbefehl abzuschalten, Musik abzuspielen, Alexa zu diktieren, was auf der Wocheneinkaufsliste noch fehlt oder sogar direkt das gerade leer gegangene Küchenpapier online zu bestellen. Wenn man sich auf diese neue Technologie einlässt, bietet der Sprachassistent Alexa unglaublich viele Ansatzpunkte, die einem das Leben erleichtern können. Die so eingesparte Zeit, kann dann für andere Dinge genutzt werden. Und da wir von bytabo® natürlich unglaublich neugierig sind, haben wir uns gleich mal an die Amazon Alexa Skill Programmierung gewagt.

Schon im Rahmen des MeetUps in München, bei dem Christian und Jo teilgenommen hatten, aber auch beim Girls Day 2017 hatten wir uns im bytabo® Office mit Amazon Alexa Skills beschäftigt. Hier haben wir uns zum ersten Mal an die Entwicklung eines solchen Skills getraut. Für alle Interessierten an dieser Thematik können wir unsere Podcast Folge mit Johannes zum Thema Amazon Alexa empfehlen. Zudem haben wir hier einmal das Vorgehen skizziert, wie also der Prozess der Erarbeitung eines Alexa Skills idealerweise ablaufen sollte.

Die Vorbereitung eines Amazon Alexa Skills

Ganz wichtig ist zunächst die Vorbereitung, sowie die vorgelagerte Konzeptphase bei der Programmierung eines Amazon Alexa Skills. Hier sollte man sich auch wirklich Zeit nehmen, um genug Informationen im Vorfeld zu sammeln, sodass auf diesen aufbauend ein sinnvoller, aber auch funktionierender Alexa Skill entwickelt werden kann.

Zunächst sollte durchdacht werden, welche Absichten ein Nutzer haben könnte. Hier bietet es sich an, Alltagssituationen unbefangen und mit möglichst wenig Vorwissen zu durchdenken  bzw. durchzuspielen. Ebenso können hierbei Tests herangezogen werden. Zudem kann es sinnvoll sein, sich mit Außenstehenden über die Thematik auszutauschen, um so die tatsächliche Problemstellung genauer zu identifizieren, aber auch um Besonderheiten und Abweichungen, bzw. auch andere Ansatzpunkte des Skills ausfindig zu machen.

Fragen, die sich hierbei gestellt werden sollen, um die Absicht und den Zweck des Alexa Skills genauer zu definieren, können daher lauten:

  • Was ist der Zweck des Alexa Skills?
  • Warum wollen Menschen ihn benutzen
  • Was bekommen Nutzer vom Alexa Skill?
  • Was ist der Mehrwert des Alexa Skills?

Das Voice User Interface

Auf Grundlage der so generierten Informationen kann dann ein Voice User Interface ausgearbeitet werden, das als Basis des Amazon Alexa Skills verwendet wird.

Im Anschluss müssen User Stories erstellt werden, also „Anwendererzählungen“ oder konkrete „Anwendungssituationen“, welche die Anforderungen an den Skill definieren. Zu beantwortende Fragen sind in diesem Schritt:

  • Was kann der Nutzer mit einem Alexa Skill tun und was nicht?
  • Welche Erwartungen hat der Nutzer bei der Benutzung des Alexa Skills?
  •  In welcher Form kann der Nutzer den Alexa Skill ansprechen (Stichwort: invoken)?
  • Benötigt der Nutzer Vorwissen und wenn ja welches?
Los geht’s mit dem Skript

Sind all diese Fragen im Vorfeld geklärt worden kann sich an die Erarbeitung des Skripts gemacht werden. Wichtig ist hierbei, die Interaktionen anhand der Struktur eines Dialogs aufzubauen. Sagt der User also zu Amazon Alexa „Ich habe Hunger“, so sollte Alexa daraufhin antworten „Auf was hast du denn Hunger?“. Gibt der Nutzer daraufhin die Antwort „Currywurst“, so könnte Amazon Alexa ihm zunächst alle Lokale bzw. Restaurants, die Currywurst auf der Speisekarte stehen haben, im Umkreis von einer vorgegebenen Kilometer-Zahl angeben. Oder der Alexa Skill verweist auf ein beliebtes Currywurst-Rezept aus dem Internet.

Das Skript selbst sollte vor allem auch auf die Sprache der potentiellen Nutzer eingehen. So sollten daher auch grammatikalische Fehler, die umgangssprachlich verwendet werden, oder auch der Dialekt in Bezug auf die Aussprache, berücksichtigt werden. Auf Wiederholungen sollte man jedoch grundsätzlich verzichten.

Um einen möglichst realistischen Dialog nachzustellen ist es zudem sinnvoll, auch Optionen einzubauen, welche dem Nutzer von Amazon Echo auf eine Aussage hin gegeben werden können. So würde auf die schon zuvor erwähnte Aussage „Ich habe Hunger“ die Gegenfrage „Möchtest du vegetarisch oder vegan essen?“ folgen. Bei Fragen an den Nutzer ist es ratsam immer nur eine Information zu fokussieren und nicht mehrere parallel.

Entscheidungsbäume als Hilfsmittel nutzen

Um dieUnterhaltung bzw. das Entscheidungsproblem genauer zu definieren, kann man die Zeichnung eines Entscheidungsbaumes zu Hilfe nehmen. Mit Hilfe diesem geordneten, gerichteten Baum kann der gesamte Dialog und auch der Entscheidungsfluss anhand der Entscheidungsregeln veranschaulicht werden, um so die hierarchische Abfolge zu skizzieren. Wenn also der Nutzer Amazon Echo die Information gibt, dass er Hunger hat, bietet Alexa ihm zwei Optionen an:  A: „Vegan“ und B: „Vegetarisch“. Wählt der Nutzer hier Möglichkeit A, folgen die Optionen A1: „Rezepte ohne Käse“ und A2: „Rezepte ohne Ei“. Wird sich allerdings für Option B: „Vegetarisch“ entschieden, kommt dementsprechend die Möglichkeit B: „Rezepte mit Käse und Ei“.

Genauere Informationen zum Entscheidungsbaum sowie zu seiner Anwendung und Umsetzung, könnt ihr auch online nachlesen (z.B. https://de.wikipedia.org/wiki/Entscheidungsbaum).

Abhängigkeiten und Schnittstellen nicht vergessen!

An diesem Punkt der Programmierung eines Amazon Alexa Skills sollte die komplette Architektur, angefangen vom Voice Input bis hin zum Server, aber auch die externen Abhängigkeiten aufgezeichnet werden, um so alle Möglichkeiten abzubilden. Hier ist vor allem auch die Frage wichtig, was bei einer Anfrage auf dem jeweiligen Server passiert. Spreche ich mit meinem Alexa Skill womöglich externe API’s an? All diese Eventualitäten müssen hierbei mitbedacht werden.

Sind alle diese Faktoren geklärt, kann der Skill für Amazon Alexa aufgebaut werden, sprich das Alexa Voice Interface. Hier gibt es verschiedene Varianten, wie der Amazon Alexa Skill aufgebaut sein kann.

Beim sogenannten Prompt gibt es zwei Arten, wie Amazon Echo reagieren kann. Entweder wartet Alexa auf eine Antwort, da sie nach einer Information fragen muss um eine Antwort zu liefern. Oder Alexa hat bereits alle Informationen für die Antwort, antwortet also und beendet sich selbst.

Intents als JSON File

Um einen Amazon Alexa Skill zu beschreiben ist es immer notwendig, auf die Absicht des Nutzers zu schauen, die hinter dem Alexa Skill stehen kann. Diese Absicht wird auch Intent genannt und in Form eines JSON Files zusammengetragen.

Ist die Anfrage „Full-Intent“ hat Amazon Alexa alle nötigen Informationen bereits erhalten, um eine Antwort zu liefern. Ein Beispiel hierfür wäre:

Alexa, ich möchte heute Abend Hamburger essen. Hast du ein Rezept für Hamburger?“

Bei der „Partial-Intent-Anfrage“ erahnt Alexa bereits die Absicht der Anfrage, benötigt aber noch weitere Informationen, um eine entsprechende Antwort zu liefern. Das zuvor genannte Beispiel Alexa, ich habe Hunger“ stellt einen solchen Fall dar.

Hat ein Amazon Alexa Skill keinerlei Information, bzw. Alexa kann mit der Information nichts anfangen, spricht man von „No-Intent“. Alexa kann hierauf auch keine Antwort liefern.

Alle weiteren Äußerungen, die ein Nutzer von sich geben kann, werden als Utterances bezeichnet. Hier werden letztendlich sämtliche Aussagen gesammelt, die in Zusammenhang mit z.B. dem Intent Hungry gebracht werden können.

IntentHungry Ich hab Hunger. Was soll ich essen

intentFoodCompare Schmeckt {food} mit {food}
Listen erstellen oder bestehende nutzen

Slots beschreiben hierbei Variablen, die in Utterances einfügt werden. Hier kann beispielsweise eine Liste erstellt werden oder auch auf bereits bestehende, themenspezifische Listen zurückgegriffen werden.

LIST_OF_FOOD (Hamburger, Mais, Gurke)

AMAZON.EUROPE_CITY

 

Amazon Echo
Amazon Alexa Skill Programmierung – Die Nutzung der Sprachsteuerung von Amazon Echo nimmt immer weiter zu.
Grundlegende Funktionen nicht vergessen

In jedem Alexa Skill sollten allerdings grundlegende Amazon Intents verbaut werden, die eine einwandfreie Nutzung für Amazon Alexa garantieren. Beispielsweise wenn Alexa die Anfrage nicht verstanden hat, die Anfrage wiederholt oder gestoppt werden soll. Hier noch ein Überblick dieser Intents:

AMAZON.RepeatIntent

AMAZON.HelpIntent

AMAZON.YesIntent

AMAZON.StopIntent

AMAZON.CancelIntent

Wie wir selbst schon beim Workshop am Girls Day feststellen konnten ist vor allem die Vorbereitung bei der Entwicklung eines Amazon Alexa Skills das A und O. Nur wenn diese sorgfältig und vor allem detailliert durchgeführt wurde, sind alle Möglichkeiten eines Amazon Alexa Skills abgedeckt, sodass dieser auch ohne Probleme funktioniert.

Was fällt euch zur Sprachsteuerung von Amazon Alexa bzw. Amazon Echo ein?
Und wie sieht’s bei euch aus? Hattet Ihr vielleicht schon eine zündende Idee für einen Amazon Alexa Skill? Kennt ihr ein Alltagsproblem, das man mit einem solchen Befehl via Sprachsteuerung lösen könnte? Verratet es uns doch einfach in den Kommentaren, wenn ihr Lust habt! 🙂

 

Ein Beitrag von Amelie Tihlarik. 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.