Category Archives: Tips

Heuristiken für Sprach-Assistenten und Chatbots neu aufgegriffen 2/10

Im ersten Teil der Serie über das Gelingen von Conversational AIs – also von Benutzungsschnittstellen auf Basis von Sprach-Assistenten und Chatbots – haben wir uns mit der ersten Heuristik „Sichtbarkeit des Systemstatus“ der Nielsen Heuristiken beschäftigt. Im zweiten Teil geht es nun um die Bedeutung der Heuristik „Übereinstimmung zwischen System und Wirklichkeit (Match between system and the real world)“ für Conversational AIs.

Übereinstimmung zwischen System und Wirklichkeit

Konversation in textbasierter Form oder als gesprochene Sprache suggeriert dem Nutzer Natürlichkeit. Gerade deshalb muss eine Conversational AI die Sprache des Benutzers sprechen, in einer Form, mit der der Benutzer vertraut ist und nicht mit ungewöhnlichen Begriffen und Satzkonstruktionen. Sprich: Verwenden Sie ein einfaches bzw. der Zielgruppe angepasstes Vokabular und vermeiden Sie systemorientierte und technische Begriffe. Auch erscheinen ein hoher Detailgrad und viele Feinheiten schnell formell und distanziert. Eine schlichte und einfache Sprache ist für Menschen mit unterschiedlichem Hintergrund zugänglicher.

Dies beschränkt sich jedoch nicht nur auf die Ausgabe, sondern umfasst auch die Eingabe. Benutzer sprechen mit einer Vielzahl von Dialekten und Akzenten. Deshalb sollte unbedingt mit verschiedenen Akzenten getestet werden. Dies umfasst bei textbasierten Systemen auch den Umgang mit gängigen Rechtschreib- und Tippfehlern. Die richtige Auswahl von Schlüsselwörtern und Synonymen stellt sicher, dass Befehle korrekt interpretiert werden (es gibt beispielsweise mehr als hundert Synonyme und Phrasen für Regen im Englischen). Nutzer formulieren ihre Absichten (Intents) in einer Konversation sehr unterschiedlich: Manche bevorzugen Befehlssätze („Bring mir ein Bier“), andere Fragesätze („Kannst du mir ein Bier bringen“) und wieder andere Appellsätze („Jetzt ein Bier wäre schön“). Und das sind nur einige Aussagen (Utterances) mit denen ein Bot trainiert werden muss. Nur so können die Benutzer bequem mit der Sprachschnittstelle interagieren.

Informationen sollten außerdem in natürlicher und logischer Reihenfolge erfragt bzw. dargestellt werden (z. B. Startzeit vor Endzeit). Dies kann aber im Einzelfall je nach Nutzer gerade auch bei der Eingabe variieren und muss dementsprechend flexibel gehandhabt werden: Gibt der Nutzer z. B. erst die Farbe oder zuerst die Größe an? Bei der Datenerfassung sollten auch bekannte Aspekte nicht erneut erfragt, sondern aus dem Kontext, dem Nutzerprofil und anderen verfügbaren Datenquelle erschlossen werden. Und so wie in der natürlichen Konversation die Sender sich in Wort und Schrift auf vielfältige Weise an den jeweiligen Empfänger anpassen, sollte dies auch ein Sprachassistent oder Chatbot machen. Zum Beispiel kann die Detailstufe durch Anpassung an den Wissensstand variiert werden. Außerdem sollte der Konversationsfluss nicht zwingend einen Pfad vorgeben, sondern sich am Benutzer orientieren.

Variiere Sie Inhalte so wie es eine Person tun würde. Bestätigungen sollten zum Beispiel nicht immer gleich, sondern mit einer Vielzahl an Alternativen wie „Ja“, „Okay“, „Klar“, „Roger“, „Oki Doki“, „Sicher“ usw. erfolgen. Denn anders als bei einem visuellen Design für die Augen wirken solche festen Muster für die Ohren schnell langweilig, ermüdend und unnatürlich.

Bedenken Sie außerdem, dass sich Sprachassistenten und textbasierte Chatbots durchaus unterscheiden. Ein Satz kann geschrieben gut wirken, für die gesprochene Unterhaltung möglicherweise aber ungeeignet sein.

Heuristiken für Sprach-Assistenten und Chatbots neu aufgegriffen 1/10

Seit Jahrzehnten werden unterschiedlichste Prinzipien und Heuristiken für das Gelingen vom Benutzungsschnittstellen propagiert. Zu den bekanntesten zählen die „10 Usability Heuristics for User Interface Design“ von Jakob Nielsen:

  • Sichtbarkeit des Systemstatus (Visibility of system status)
  • Übereinstimmung zwischen System und Wirklichkeit (Match between system and the real world)
  • Nutzerkontrolle und -freiheit (User control and freedom)
  • Konsistenz und Standards (Consistency and standards)
  • Fehlervermeidung/Fehlervorbeugung (Error prevention)
  • Erkennen statt Erinnern (Recognition rather than recall)
  • Flexibilität und Effizienz (Flexibility and efficiency of use)
  • Ästhetisches und minimalistisches Design (Aesthetic and minimalist design)
  • Anwendern helfen, Fehler zu erkennen, zu beurteilen und zu beheben (Help users recognize, diagnose, and recover from errors)
  • Hilfe und Dokumentation (Help and documentation)

Doch sind diese Faustregeln von 1995 auch heute, nach mehr als 20 Jahre, noch gültig? Insbesondere im Zusammenhang mit zunehmend natürlichen Interaktionsformen wie Konversations KIs (Conversational AIs).

Dieser Blogpost widmet sich zu Beginn dem ersten Punkt. Anregungen sind natürlich sehr willkommen…

Sichtbarkeit des Systems

Auch für Konversations KIs gilt: Das System informiert den Nutzer immer darüber, was gerade passiert – rechtzeitig und durch angemessene Rückmeldung.

Sprach-Assistenten und Chatbots sollten immer kommunizieren, was sie wissen und was sie können. Gerade im Zusammenhang mit Sprachassistenten ist es essentiell, dem Nutzer den aktuellen Status und Handlungsmöglichkeiten zu vermitteln, da weitere Hinweise wie sie üblicherweise auf einem Bildschirm zu finden sind in der Regel fehlen.

Sowohl Chatbots als auch Sprachassistenten sollten bestätigen, dass sie Eingabe des Nutzers verstanden haben („Okay“, „Verstanden“ etc.) und ähnlich zu Meilensteinen angeben, wo im Prozess man sich befindet. Dies gibt dem Benutzer die Gewissheit, dass er gehört wurde und dass er den Überblick über das Gespräch behält. Dies hilft auch dabei, den Dialog flüssig erscheinen zu lassen.

Zusätzlich ist es wichtig, dem Nutzer mitzuteilen, ob die Konversation zu Ende ist und, falls sie fortdauert, welche weitere Eingaben erlaubt bzw. erforderlich sind. Um die Konversation aufrecht zu erhalten, sollte der Assistent immer auffordernd agieren und zum Beispiel eine klare Frage stellen. Gehen Sie nicht davon aus, dass die Benutzer wissen, was sie tun sollen. Dieser Aufforderungscharakter hilft Nutzern, das Gespräch zu beginnen bzw. fortzuführen. Das Ende sollte ebenfalls mit einer entsprechenden Aussage signalisiert werden.

Sprachassistenten nutzen für den Status der Konversation üblicherweise zusätzlich eine visuelle Rückmeldung und Klänge (sogenannte Earcons). Sprich: Wenn das Gerät leuchtet oder blinkt, erwartet es eine Eingabe. Bei Chatbots bietet es sich an, wesentliche Eingabemöglichkeiten durch Schaltflächen (Quick-Replies) darzustellen. Falls neben Sprach- und Textinteraktion auch anderen Medien möglich sind, kann eine multimodale Interaktion dazu genutzt werden, um die Sichtbarkeit des Systems zu erhöhen.

Alexa Programming Languages and Tools

Building Alexa Skills means you have a Voice User Interface (VUI) and the fulfilling programming logic. For simplicity think of the frontend for the VUI and the backend for the programming logic. There are several ways doing the fulfillment of an Alexa Skill. Often developer use Amazon Web Services (AWS) Lambda which is a perfect fit: Simply enter the Lambda’s ARN (Amazon Resource Name) inside the Skill’s configuration. AWS Lambda supports code written in Node.js (JavaScript), Java, Python, C#, or Go.

There is also an alternative approach: You can enter a SSL/TLS secured https-address as the endpoint for other technologies and programming languages independently from AWS. Under the hood, there is only JSON via REST going back and forth. Thus every technology supporting that might work. In case you prefer your own infrastructure to AWS Lambda, please make sure to secure everything accordingly and always provide valid responses as described here.

Dealing with Java Script Notification Objects (JSON) might be tedious. Therefore, it is good to have some helpers out there, which can make your life easier – despite the preferred technology. Here is a brief list for your convenience:

JavaScript / Node.js

Alexa Skills Kit SDK for JavaScript / Node.js (Lambda)
Skillinator (prototype Alexa Skills for Alexa Skills Kit SDK for JavaScript / Node.js (Lambda))
Alexia (framework for creating Skills using Node.js)
alexa-app (Node module to simplify the development of Alexa Skills)
Several libraries used to build both custom Skills and smart home Skills
Creating SSML (Speech Synthesis Markup Language) using the builder pattern
Jovo (Node.js based development framework for voice apps)

Java / Kotlin

Java Alexa Skills Kit SDK (Lambda)
Alexa States SDK for Java (extends the Java Alexa Skills Kit SDK)
Aleksa (framework for writing Skills in Kotlin)

Python

Flask-Ask
Python Alexa

C# / .NET

Alexa Skills SDK for .NET
AlexaSkillsKit.NET (same object model as Java Alexa Skills Kit SDK)

PHP

Voice Skill Management System (Skeleton)
PHP Library for Amazon Alexa Skills
Amazon Alexa PHP Library
AlexaApp (classes to make creating Skills with Laravel and Lumen)
Alexa Custom Skill for Patami Framework

Go

Alexa SDK for native Go on AWS Lambda

Command Line Tools (CLI)

Alexa Skills Kit Command Line Interface (ASK CLI)
Bespoken CLI (Develop, Debug, and Test Live on Your Laptop)

Designing / Protoyping / Platforms

Cognigy (Voice and Chat AI without any coding)
Sayspring (Voice Prototypes for Amazon Alexa)
Storyline (Create voice apps without coding)
PullString (Design, Prototype, and Publish Voice Apps)
Alpine.ai (Voice-enabled applications)
slotinaotr.io (easy batch-input of slots)
BotTalk (Create Complex Alexa Skills with simple markup language)
VoiceX (Low Fidelity Prototyping Tool)

Voice, SSML, and Polly

Talestreamer (using rich, multilayered audio)
polly-s3 (renders text-to-speech for Alexa using AWS Polly)

Testing / Virtual Alexa Devices

Echosim.io (Alexa Skill Testing Tool)
Reverb (works in your browser, or on your tablet or phone)

Analytics for Voice

Chatbase
dashbot

Anything missing? Feel free to send me suggestions to complete the list, please!