Tag Archives: Sprachdialogsystem

Kommunizieren statt Kommandieren

Computer durchdringen immer mehr Lebensbereiche. Dabei bleibt oft die eigentliche Frage des Nutzens auf der Strecke. Doch wie findet man einen solchen Nutzen? Wie kann eine gemeinsame Diskussionsgrundlage für das Finden und Umsetzung von neuen digitalen Ideen geschaffen werden? Der Austausch von Informationen, also das Kommunizieren, ist aber noch in einer zweiten Hinsicht essentiell für die Entwicklung neuer Anwendungen. Denn auf der einen Seite verlieren klassische Ein- und Ausgabemittel wie Tastatur und Monitor an Bedeutung und auf der anderen Seite nehmen die Vernetzung sowie die sensorische Möglichkeiten der Geräte zu. Damit drängt sich die Frage auf, wie wir als Menschen mit all diesen Maschinen kommunizieren sollen. Wie kann eine natürliche Interaktion für Anwendungen im Internet der Dinge aussehen?

Austausch von Informationen, also das Kommunizieren, ist in zweierlei Hinsicht essentiell für die Entwicklung neuer Anwendungen. Zum einen muss eine gemeinsame Diskussionsgrundlage für das Finden und Umsetzung von neuen digitalen Ideen geschaffen werden und zum anderen erwartet der Nutzer möglichst natürliche Interaktionsformen für den Informationsaustausch innerhalb einer Anwendung.

image

Gemeinsam mit Partnern erarbeiten, erleben und evaluieren wir In Workshops neue Ideen. Als Kommunikationsgrundlage dienen vorgefertigte und einfach zu nutzende APIs (Programmierschnittstellen) z. B. zur Sprachverarbeitung oder Positionsbestimmung kombiniert mit Alltagsgegenständen und interaktiven Spielzeugen von Lego Mindstorms bis zu Microsoft Kinect.

In erster Linie werden mobile Nutzungsszenarien diskutiert, bei denen der Anwender mit einem einzelnen Endgerät interagiert. Doch Computer durchdringen zunehmend mehr Lebensbereiche und sind dabei immer weniger offensichtlich als solche erkennbar (Ubiquitous und Pervasive Computing). Häufig existieren nicht einmal die gewohnten Ein- und Ausgabekanäle wie Bildschirm und Tastatur. Dafür sind diese Geräte meist vernetzt wenn nicht sogar gleich über das Internet verbunden (Internet of Things).

Die Herausforderung liegt nun darin, neue Interaktionsformen zu finden, die nicht mehr nur einer 1:1-Beziehung zwischen Mensch und Maschine gerecht werden, sondern sich auch für 1:n-Szenarien eignen, bei denen der Nutzer sich inmitten einer Vielzahl an Geräten bewegt. Diese miteinander vernetzten Geräte bilden eine komplexe Benutzungsschnittstelle aus unterschiedlichsten Sensoren (Ambient Intelligence) und Aktuatoren (z. B. Motoren).

Der Anwender erwartet natürliche Interaktionsformen, die beispielsweise auf angeborene Fähigkeiten wie Gesten und Sprache basieren. Mangels der gelernten und auf Metaphern basierenden grafischen Benutzungsschnittstellen ist hier sowieso ein Umdenken erforderlich. Die Erkennung von Gesten und Sprache (Speech Recognition) funktioniert bereits sehr gut. Technisch ist es dabei mittlerweile sogar möglich nonverbale Signale wie die Gemütslage zu ermitteln und in die Kommunikation zwischen Mensch und Maschine einzubeziehen.

image

Die Erkennung bei Spracheingaben kann durch Grammatiken anstelle einer allgemeinen Transkription verbessert werden. Doch fehlende „Höflichkeitsfloskeln“ machen diese Form der Interaktion schnell zu einem unnatürlichen Kommandieren.

Das eigentliche Verstehen (Natural Language Understanding) ist jedoch noch ganz am Anfang. Noch können wir mit den Geräten nicht natürlich Kommunizieren, denn Maschinen verfügen nur über einen eingeschränkten Kontext und Weltwissen und Intuition fehlen. In vielen Fällen sind nicht einmal Höflichkeitsfloskeln erlaubt, so dass sich die Kommunikation auf das Erkennen von Schlüsselwörtern beschränkt und somit eher einfachen Kommandos entspricht. 1966 entwickelte Joseph Weizenbaum das Computerprogramm ELIZA, bei dem es sich um eine oberflächliche Simulation eines Psychotherapeuten handelt. ELIZA zeigt eindrucksvoll, dass Maschinen natürliche Kommunikation auf einzelne Domänen beschränkt vorgaukeln können, solange auf Weltwissen verzichten werden kann. Auch ein großer Teil der interaktiven Erwachsenenunterhaltung und der ein oder andere Facebook Chatbot (textbasiertes Dialogsystem) machen sich die Eindeutigen Interessen der Anwender zunutze und erkennen so scheinbar natürlich deren Absichten.

Bombe: „Ich denke, also bin ich.“ […] Doolittle: „Aber woher weißt Du, dass außer Dir etwas existiert?“ Bombe: „Meine sensorische Apparatur vermittelt es mir.“ (Quelle: Dark Star, 1974)

Von der philosophisch anmutenden Diskussion mit der „Bombe 20“ aus dem Science-Fiction Klassiker Dark Star von 1974 sind wir jedoch trotz Siri und Co. noch ein ganzes Stück entfernt. Doch genau diese Bombe zeigt, was wir schon heute realisieren können: Interaktionen müssen mit allen zur Verfügung stehenden Informationen (Sensoren) aus dem Kontext kombiniert werden. Eine Spracheingabe in der Form „Licht an“ bei mehreren Leuchten alleine reicht bei weitem nicht aus. Kombiniert mit einer auf die Leuchte deutenden Geste kommt das dem natürlichen Verhalten jedoch schon sehr nah. Aber auch Positionsdaten (wo bin ich) und Blutdruck (wie geht es mir) können helfen, Absichten besser zu „verstehen“.

Und damit schließt sich der Kreis und wir sind wieder bei der ganz am Anfang erwähnten Bedeutung von Kommunikation: Die Vielfalt solcher Interaktionsformen ist so groß und vor allem die Erfahrungswerte sind so gering, dass die Umsetzung nicht einfach Delegiert werden kann, sondern beginnend mit der Ideenfindung Kommunikation essentiell ist.

Transkription: Anrufe als Emails erhalten

Für die natürliche Nutzung eines Systems ist Spracherkennung in vielen Szenarien eine Option. Ganz egal ob auf Schlüsselwörter gelauscht oder vordefinierten Grammatiken zum Einsatz kommen. Daneben gibt es auch noch die Transkription, welche gesprochene Sprache als lesbaren Text darstellt. Der Developer Garden bietet hier gleich mehrere Lösungen, wie unter http://www.wolter.biz/?p=1368 beschrieben. Neu ist, dass für die Transkription zum einen der in dem Artikel erwähnte Trick nicht mehr notwendig ist und dass zum anderen nun mehr als 40 Sprachen, darunter auch Deutsch, unterstützt werden:

  • English (AUS): en_AU
  • English (UK): en_GB
  • English (US): en_US
  • Arabic (Egypt): ar_EG
  • Arabic (Saudi): ar_SA
  • Arabic (UAE): ar_AE
  • Cantonese Chinese: zh_HK
  • Catalan (Spain): ca_ES
  • Croatian: hr_HR
  • Czech: cs_CZ
  • Danish: da_DK
  • Dutch: nl_NL
  • Finnish: fi_FI
  • French (CAN): fr_CA
  • French (EU): fr_FR
  • German: de_DE
  • Greek: el_GR
  • Hebrew: he_IL
  • Hungarian: hu_HU
  • Indonesian: id_ID
  • Italian: it_IT
  • Japanese: ja_JP
  • Korean: ko_KR
  • Malay: ms_MY
  • Mandarin Chinese: cn_MA
  • Taiwanese Mandarin: zh_TW
  • Norwegian: no_NO
  • Polish: pl_PL
  • Portuguese (BR): pt_BR
  • Portuguese (EU): pt_PT
  • Romanian: ro_RO
  • Russian: ru_RU
  • Slovak: sk_SK
  • Spanish (EU): es_ES
  • Spanish (MX): es_MX
  • Spanish (US): es_US
  • Swedish: sv_SE
  • Thai: th_TH
  • Turkish: tr_TR
  • Ukranian: uk_UA
  • Vietnamese: vi_VN

Die Programmierung gestaltet sich wie gewohnt sehr einfach. In der Scripting API von Tropo sieht das dann mit Angabe des transcriptionLanguage Parameters so aus:

1
2
3
4
5
6
7
8
record("Sag uns bitte, wie es Dir geht!", {
   voice: "Katrin",    
   beep: true,    
   maxTime: 600,
   transcriptionID: currentCall.callerID,
   transcriptionLanguage: "de_DE",   
   transcriptionOutURI: "mailto:me@mymail.com"
});

Generic SMS and Voice service, Telekom Tropo Part 3

Building M2M prototypes with voice (phone) and text (SMS) isn´t that hard. In most cases we only need a way to send a message via SMS or via phone. But once done you get bored doing it over and over again. Hence I build a simple (and quick and dirty) service for these needs (based on PHP but you can use nearly any language for your choice). This service just gets the needed parameters via URL. Based on these parameters a message will be sent or call initiated.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
// Include Tropo classes.
require('tropo.class.php');
 
// $session = new Session(); or low-level usage of JSON:
$session= json_decode(file_get_contents("php://input"));
$message= $session->session->parameters->message;
$numberToDial= $session->session->parameters->numberToDial;
$method = $session->session->parameters->method;
 
$tropo = new Tropo();
 
if ($method == "text") {
	$tropo->message($message, array("network" => "SMS", "to" => $numberToDial));	
} else // if ($method == "call")  {	
	$tropo->call($numberToDial);	
	$options = array("voice" => "Simon");
	$tropo->say($message, $options);
	$tropo->hangup();
}
$tropo->renderJson();
?>

After you have assigned this script to your Tropo application (see Quickstart Tropo, sorry only available in German right now), you need the appropriated token (which you find in your application settings). Finally call the service via a simple URL request. Please note, the values have to be URL encoded and the phone number must include the country code including the plus sign. In HTML this could look like:

1
<a href="https://tropo.developergarden.com/api/sessions?token=YOUR_TOKEN&method=TEXT_OR_VOICE&message=YOUR_TEXT&numberToDial=YOUR_PHONE_NUMBER">Send SMS</a>

Using jQuery it looks like:

1
2
3
4
5
6
7
8
9
$.ajax({
   url: "https://tropo.developergarden.com/api/sessions",
   data: {
      "numberToDial": "YOUR_PHONE_NUMBER",
      "message": "YOUR_TEXT",
      "token": "YOUR_TOKEN",
      "method": " TEXT_OR_VOICE"
   }
});

And it seems this will become even easier, because the Tropo Scripting API is on its way. Stay tuned…