VoiceXML macht das Telefon zum Browser

17.08.2000 von Klaus Manhart
VoiceXML soll das normale Telefon zum intelligenten Internet-Client machen. Sprach- und dialogfähige Web-Anwendungen können damit per Handy und über das drahtgebundene Telefon abgerufen werden.

Nach dem Handy wird nun auch das ganz normale Telefon internetfähig. Die Sprachsteuerung von Websites und das Abhören von Webinhalten soll künftig wesentlicher Bestandteil von E-Business-Anwendungen werden. Das macht Sinn, wenn gerade kein Computer verfügbar ist - etwa weil man gerade Auto fährt oder auf dem Flughafen wartet. In diesem Fall lassen sich dann über Handy oder Festnetztelefon auf die Schnelle E-Mails, Wertpapier-Portfolios oder Nachrichten vorlesen. Dabei geht es jedoch nicht nur um die Möglichkeit, Mails abzuhören oder den Inhalten von WWW-Seiten zu lauschen. Der elektronische Voice-Commerce soll auch die Benutzung von Kreditkarten und andere Transaktionen über Telefon und Internet erleichtern.

Doch nicht nur Geschäftsleute sollen in den Genuss von Internet per Telefon kommen. Neben Business-Anwendern zielt das telefonbasierte Internet auch auf den Massenmarkt. Denn eine große Gruppe von Einsteigern ist zwar am Internet interessiert, hat aber wenig oder gar keine PC- und Internet-Kenntnisse. Für diese Klientel, die große Hemmschwellen überwinden muss, um das Internet zu nutzen, ist das telefonische Internet ideal. Ihnen ermöglicht der sprachbasierte Zugang einen unkomplizierten Einstieg und komfortablen Umgang mit dem Datennetz. Last but not least ist der sprachbasierte Internetzugriff ideal für alle diejenigen, die unter Sehstörungen leiden oder erblindet sind.

Voicebrowser sorgen für Sprache

Ermöglicht wird das Internet per Stimme erst durch neuere Entwicklungen und immense Fortschritte bei Spracherkennungs- und Sprachsynthese-Techniken. Für die stimmliche Umsetzung der Internet-Inhalte sorgen spezielle, sprachbasierte Softwarepakete. Kernstück des sprachbasierten Internet sind so genannte Speech- oder Voicebrowser, die den gewohnten Webbrowser ersetzen und auf dem Server eines Providers installiert sind: Der Benutzer kann über solche Browser Informationen aus dem Internet abrufen, indem er mit seiner Sprachkommandos navigiert und die Informationen vorgelesen bekommt. Der Browser führt den Anrufer anhand bestimmter Schlüsselbegriffe zu den gesuchten Textinhalten im Web. Diese werden wiederum vom Voicebrowser in gesprochene Worte umgewandelt und dem Anrufer vorgelesen.

Den Ablauf einer sprachbasierten Internet-Interaktion kann man sich folgendermaßen vorstellen: Der User ruft mit einem beliebigen Telefon - Festnetz oder mobil - einen Voicebrowser an. Nach Herstellung der Verbindung kann der User mit der Internet-Anwendung auf dem Server kommunizieren. Die Grafik zeigt die Beziehung zwischen den Anrufer, dem Voicebrowser und dem Webserver. Die Interaktion per VoiceXML und Voicebrowser ist ganz analog zum traditionellen HTML und Webbrowser.

Mit einem solchen Browser können beispielsweise Fluggesellschaften Informationen aus ihren Websites telefonisch verbreiten. Wenn ein Kunde anruft und fragt: "Um wie viel Uhr startet heute der Flug nach Washington?" wandelt der Browser die Frage in einen Internet-Suchbefehl um, leitet ihn zur Flugdatenbank weiter, nimmt die Ergebnisse der Recherche entgegen und formuliert eine lautsprachliche Antwort für den Anrufer. Einst als Zukunftsmusik belächelt, sind solche Szenarien dank Fortschritten bei der Spracherkennungssoftware inzwischen realistisch geworden.

VoiceXML - die Sprache

Grundlage für die sprachgesteuerte Internetnutzung ist VoiceXML, ein XML-Dialekt, der im Mai 2000 in der Version 1.0 vom World Wide Web Consortiums (W3C) als Standard verabschiedet wurde. Die Spezifikation basiert auf jahrelanger Forschung und Entwicklung von AT&T, IBM, Lucent Technologies und Motorola. Motorolas Eigenentwicklung VoXML ist inzwischen in VoiceXML aufgegangen. Alle an der Entwicklung beteiligten Unternehmen haben sich im VoiceXML-Forum zusammengeschlossen, das inzwischen 79 Mitglieder zählt.

VoiceXML ist eine Anwendung der Extensible Markup Language XML. Sie stellt Entwicklern, Serviceprovidern und Geräteherstellern eine Beschreibungssprache für Sprach- und Telefonie-Ressourcen zur Verfügung. Folgende Aufgabengebiete soll VoiceXML abdecken:

Der VoiceXML-Interpreter als Manager

Für eine funktionierende sprachbasierte Web-Applikation ist ein VoiceXML-Interpreter notwendig, der den Code ausführt und die notwendigen Systeme zur Sprachein- und -ausgabe zur Verfügung stellt. Jedes VoiceXML-Dokument beschreibt dann einen interaktiven Dialog, der von dem VoiceXML-Interpreter ausgeführt wird.

Der Grundgedanke der VoiceXML-Philosophie ist, alle Vorzüge von traditioneller Web-Entwicklung und inhaltlicher Zulieferung auf Voice-Response-Anwendungen zu übertragen und dabei Autoren von Lowlevel-Programmierung zu befreien. VoiceXML soll die Integration von Sprach- und Datendiensten ermöglichen, indem es den übliche Client-Server-Ansatz nutzt. Ein Sprachdienst ist eine Abfolge von interaktiven Dialogen zwischen einem User und einer Implementations-Plattform. Die Dialoge werden von Dokument-Servern zur Verfügung gestellt, die außerhalb der Implementations-Plattform liegen können. Ein VoiceXML-Dokument spezifiziert jeden Interaktionsdialog, der vom VoiceXML-Interpreter ausgeführt werden soll. Die Nutzereingaben beeinflussen die Dialoginterpretation. Der Dokumentserver kann mit einem anderen VoiceXML-Dokument antworten, um die Nutzersession mit einem anderen Dialog fortzusetzen.

VoiceXML - die Architektur

Ein Dokumentserver, beispielsweise ein Webserver, verarbeitet Anfragen von einer Client-Anwendung, dem VoiceXML-Interpreter, über den VoiceXML-Interpreter-Context. Der Server produziert als Antwort VoiceXML-Dokumente, die vom Interpreter bearbeitet werden. Der Kontext kontrolliert Nutzereingaben parallel zum VoiceXML-Interpreter.

Die Implementations-Plattform wird vom Kontext und vom Interpreter kontrolliert. Beide teilen sich die Aufgabe: Beispielsweise kann der Kontext in einer interaktiven Voice-Response-Anwendung verantwortlich sein für das Erkennen eingehender Anrufe, ein VoiceXML-Dokument anfordern und den Anruf beantworten, während der Interpreter den Dialog nach der Antwort beaufsichtigt. Die Implementations-Plattform erzeugt Ereignisse als Antwort auf Nutzeraktionen (beispielsweise gesprochene oder geschriebene Eingaben) und Systemereignisse (beispielsweise Zeitablauf). Einige dieser Ereignisse werden auf dem Interpreter selbst ausgeführt, während andere auf dem Kontext ausgeführt werden.

Eine VoiceXML-Session beginnt, wenn der Nutzer anfängt mit einem Kontext zu interagieren, wird fortgesetzt, so lange Dokumente geladen und bearbeitet werden und endet, wenn User, Dokument oder Interpreter es verlangen.

VoiceXML - einfache Ausgaben

Das VoiceXML-Element, das die Ausgabe von Sprach- und Audiodaten kontrolliert, ist <prompt> Die Ausgaben werden so lange abgespielt, bis vom User ein Input verlangt wird. In diesem Fall wartet das System auf die Eingabe. Sobald das System die Eingabe vom Spracherkennungssystem erhalten hat, wird die Ausgabe fortgesetzt.

Im einfachsten Fall sieht ein Prompt-Element wie folgt aus:

<prompt>Please say your city.</prompt>

Das folgende Element spielt eine .wav-Datei ab:

<audio src="say_your_city.wav"/>

Das <emp>-Element innerhalb eines Prompts wechselt die Betonung:

<prompt>Please <emp>say</emp> your city.</prompt>

VoiceXML - Dokumentenaufbau

Grundsätzlich besteht ein VoiceXML-Document aus Toplevel-Elementen, die Dialogs genannt werden. Zwei Arten von Dialogen gibt es: Forms und Menus. Forms beschreiben Informationen und nehmen Benutzereingaben auf. Menus bieten Auswahlmöglichkeiten an und beschreiben, was als Nächstes getan werden kann.

Hier das bekannte "Hello World!"-Beispiel in VoiceXML:

<?xml version="1.0"?>
<vxml version="1.0">
<form>
<block>Hello World!</block>
</form>
</vxml>

Das Toplevel-Element ist<vxml>, in erster Linie ein Container für Dialoge. Das Beispiel hat eine einzige Form, die einen Block enthält, die dem Benutzer ein "Hello World!" präsentiert. Da es keinen nachfolgenden Dialog gibt, endet die Konversation.

Ein einfaches VoiceXML-Dokument, das den Benutzer fragt, was er trinken möchte, sieht folgendermaßen aus:

<?xml version="1.0"?>
<vxml version="1.0">
<form>
<field name="drink">
<prompt>Would you like coffee, tea, milk, or nothing?</prompt>
<grammar src="drink.gram" type="application/x-jsgf"/>
</field>
<block>
<submit next="http://www.drink.example/drink2.asp"/>
</block>
</form>
</vxml>

Das Element field ist dabei ein Eingabefeld. Erst nachdem eine Benutzereingabe erfolgt ist, werden die nächsten Elemente ausgeführt.

Ein Beispiel-Dialog wäre:

C (computer): Would you like coffee, tea, milk, or nothing?

H (human): Orange juice.

C: I did not understand what you said.

C: Would you like coffee, tea, milk, or nothing?

H: Tea.

C: (continues in document drink2.asp)

In diesem Fall sendet das Submit-Element die Eingabe an das .asp-Skript drink2.asp.

VoiceXML - Grammatiken

Eine Besonderheit von VoiceXML ist die Angabe von dynamischen Grammatikdateien zur automatischen Spracherkennung (drink.gram im vorigen Beispiel). Die Implementierung des VoiceXML-Interpreters muss diese Grammatik-Dateien dynamisch auswerten können. Das Grammatik-Format selbst ist nicht vorgeschrieben.

Das <grammar>-Element wird für Sprechgrammatiken verwendet, die eine Menge von Äußerungen festlegen, die der Nutzer verwenden kann. Es kann eine interne oder eine externe Grammatik definieren. Eine interne Grammatik wird durch den Inhalt des Elements festgelegt:

<grammar type="mime-type">
inline speech grammar
</grammar>

Der <type>-Parameter spezifiziert dabei einen MIME-Typ, der den Inhalt des <grammar>-Tags interpretiert.

Eine externe Grammatik wird wie folgt festgelegt:

<grammar src="URI" type="mime-type"/>

VoiceXML - Menüs

Auswahlmenüs sind schon heute die häufigsten Elemente bei telefonbasierten Anwendungen, etwa in Callcentern oder bei Support-Hotlines. Über Menüs werden dem User Auswahloptionen präsentiert und in Abhängigkeit von der getroffenen Auswahl an unterschiedliche Stellen gesprungen. Das folgende Beispiel zeigt die Verwendung der Menüs zur Auswahlsteuerung in VoiceXML:

<menu>
<prompt>Welcome home. Say one of: <enumerate/></prompt>
<choice next="http://www.sports.example/ vxml/start.vxml">
Sports </choice>
<choice next="http://www.weather.example/ intro.vxml">
Weather </choice>
<choice next="http://www.stargazer.example/ voice/astronews.vxml">
Stargazer astrophysics news </choice>
<noinput>Please say one of <enumerate/></noinput>
</menu>

Das <choice>-Element dient unter anderem dazu, den String auszugeben und bei Auswahl die entsprechende Sprungadresse zu spezifizieren. Das <enumerate>-Element ist eine automatisch erzeugte Beschreibung der verfügbaren Wahlmöglichkeiten.

Der Dialog könnte wie folgt ablaufen:

C: Welcome home. Say one of: sports; weather; Stargazer astrophysics news.

H: Astrology.

C: I did not understand what you said. (eine plattformspezifische Default-Meldung.)

C: Welcome home. Say one of: sports; weather; Stargazer astrophysics news.

H: sports.

C: (weiter mit http://www.sports.example/vxml/start.vxml)

VoiceXML - Subdialoge

Mit Subdialogen lassen sich komplexe Dialogabfolgen zerlegen mit dem Ziel, diese besser zu strukturieren. Programmiertechnisch ist ein Subdialog wie ein Funktionsaufruf. Er sorgt für eine neue Interaktion und kehrt zum Originaldokument zurück. Lokale Daten, Grammatiken etc. werden gespeichert und sind ab diesem Zeitpunkt für das aufrufende Dokument verfügbar.

Subdialoge können beispielsweise eingesetzt werden, um eine Bestätigungsabfolge für eine Datenbankabfrage zu erzeugen. Ein Kundendienstzentrum lässt sich so in mehrere unabhängige Anwendungen zerlegen, wie in folgendem Beispiel gezeigt.

Customer Service Application (app.vxml)

<?xml version="1.0"?>
<vxml version="1.0">
<form id="billing_adjustment">
<var name="account_number"/>
<var name="home_phone"/>
<subdialog name="accountinfo" src="acct_info.vxml#basic">
<filled>
<!-- Note the variable defined by "accountinfo" is returned as
a an ECMAScript object and it contains two properties defined
by the variables specified in the "return" element of the
subdialog. -->
<assign name="account_number" expr="accountinfo.acctnum"/>
<assign name="home_phone" expr="accountinfo.acctphone"/>
</filled>
</subdialog>
<field name="adjustment_amount" type="currency">
<prompt> What is the value of your account adjustment?</prompt>
<filled>
<submit next="/cgi-bin/updateaccount"/>
</filled>
</field>
</form>
</vxml>

Subdialog (acct_info.vxml)

<?xml version="1.0"?>
<vxml version="1.0">
<form id="basic">
<field name="acctnum" type="digits">
<prompt> What is your account number? </prompt>
</field>
<field name="acctphone" type="phone">
<prompt> What is your home telephone number? </prompt>
<filled>
<!-- The values obtained by the two fields are supplied to the
calling dialog by the "return" element. -->
<return namelist="acctnum acctphone"/>
</filled>
</field>
</form>
</vxml>

Das Dokument app.vxml versucht, den Kundenzugang zu konfigurieren. Es benötigt hierfür die Zugangsdaten und anschließend den Konfigurationslevel. Die Zugangsinformation wird über ein Subdialog-Element abgefragt, das ein anderes VoiceXML-Dokument aufruft und um Usereingaben bittet. Während das zweite Dokument ausgeführt wird, ist der Dialog unterbrochen und wartet auf die Rückgabe der Information. Das zweite Dokument gibt das Ergebnis der Nutzerinteraktion mit einem Return-Element zurück, auf die Werte kann über eine Variable, die über das Name-Attribut definiert ist, zugegriffen werden.

VoiceXML - Aufnehmen

Das <record>-Element sammelt die Eingaben des Users. Die Aufnahme wird in einer Variable abgespeichert, die an einen Server weitergeleitet werden kann, wie im folgendem Beispiel:

<?xml version="1.0"?>
<vxml version="1.0">
<form>
<record name="greeting" beep="true" maxtime="10s"
finalsilence="4000ms" dtmfterm="true" type="audio/wav">
<prompt> At the tone, please say your greeting.</prompt>
<noinput>I didn't hear anything, please try again.</noinput>
</record>
<field name="confirm" type="boolean">
<prompt>Your greeting is <value expr="greeting"/>.</prompt>
<prompt>To keep it, say yes. To discard it, say no.</prompt>
<filled>
<if cond="confirm">
<submit next="save_greeting.pl"
method="post" namelist="greeting"/>
</if>
<clear/>
</filled>
</field>
</form>
</vxml>

Der Nutzer wird nach einem Gruß gefragt, dieser wird aufgezeichnet und nochmals abgespielt. Bestätigt der User mit "yes", wird der Gruß zum Speichern mittels der http-Post-Methode auf einen Server geschickt. Das Attribut "name" legt dabei die Variable fest, die die Aufnahme speichert, "beep" stößt einen Ton bei erfolgreicher Aufnahme aus, "maxtime" definiert die maximale Aufnahmedauer.

VoiceXML-Anwendungen: IBM

Wolfgang Karbstein, Manager des IBM Geschäftssegmentes Spracherkennung, ist überzeugt, dass VoiceXML den mobilen E-Commerce belebt: "Die jetzt veröffentlichten Standards werden dem mobilen E-Business zusätzliche Impulse verschaffen", meint Karbstein. "VoiceXML wird dazu beitragen, dass sich Telefone zu intelligenten Inter-/Intranet-Clients entwickeln und damit den PC als jederzeit verfügbares mobiles Zugangsmedium ergänzen." Auf der CeBIT wurde bereits gezeigt, wie das Bestellen von Sonderangeboten im IBM-WebShop nicht nur über WAP (Wireless Application Protocol) und PC, sondern auch mittels Spracheingabe über das Telefon auf der Basis von IBM-Net.Commerce möglich ist. Die Bestellung wird - ebenso wie die signierte Quittung - im Voiceportal sicher abgelegt, die Quittung kann vom Kunden jederzeit abgerufen werden.

IBM ermöglicht mit ViaVoice bereits den Zugriff auf Webseiten über einen Speechbrowser. Das vollständig integrierbare System benutzt VoiceXML-Standards, um sich in Webseiten einzubinden. Eine Demo findet sich auf den Alphaworks-Seiten von IBM.

VoiceXML-Anwendungen: Motorola

Motorola nutzt die Eigenentwicklung VoxML - inzwischen ein Subset von VoiceXML - für die integrative Kommunikationslösung MIX (Mobile Internet eXchange). Mit deren Hilfe erhalten Nutzer Zugang zu Sprach-, Daten- und Internetanwendungen: Ein- und dieselbe Information ist damit auf verschiedene Art und Weise abrufbar, je nachdem, was gerade am günstigsten ist. Ein Beispiel: Bevor Peter Mustermann mit seinem Auto losfährt, ruft er auf seinem PC die Website eines Verkehrsservice auf, lädt eine Straßenkarte herunter und druckt sie aus. Unterwegs ruft er den Verkehrsservice an und lässt sich einen Bericht über die Straßenlage vorlesen. Eine Stunde später macht er eine Pause, geht in ein Restaurant und lässt sich die Route, die ihm der Verkehrsservice vorschlägt, auf dem Display seines Mobiltelefons anzeigen.

Die MIX-Plattform ermöglicht Anwendungen, die auf drei der wichtigsten Markup-Sprachen aufbauen: HTML, WML sowie VoxML. Damit holt der Benutzer das Internet auf seinen PC-Bildschirm oder auf das Display seines Mobiltelefons. Mit Hilfe von VoxML und natürlichen Sprachbefehlen kann er via Handy mit dem Internet sprechen und es nach dem Wetter fragen.

VoiceXML-Anwendungen: Mannesmann

Mannesmann Arcor hat zur CeBIT bereits einen sprachbasierten Internetdienst eingeführt. Unter dem Namen talkingweb bietet das Unternehmen einen bundesweiten Service an, mit dem Webinhalte über das normale Telefon angehört werden können. Abgerechnet wird über die normale Telefonrechnung. Abrufen lassen sich aktuelle Nachrichten, die Wettervorhersage, Finanzinformationen und die Voicemail-Versendung von E-Mails als Audioformat.

Gleichzeitig betreibt talkingweb das gleichnamige Telefonportal. Das Portal ist eine offene Plattform und bietet allen interessierten Content-Anbietern zusätzlich die Möglichkeit, ihre Inhalte übers Telefon zu verbreiten. Der Nutzer navigiert bequem und intuitiv über Sprachbefehle, der entsprechende Text wird von einer natürlich klingenden Sprachsoftware vorgelesen.

Um schnell und komfortabel zu den benötigten Inhalten zu navigieren, lässt sich das Serviceangebot in der Rubrik "mytalkingweb" personalisieren. Verkehrshinweise, Börsennotierungen oder News sind damit individuell auswählbar und abhörbar. Auch eingegangene E-Mails liest talkingweb vor.

Die Entwickler von talkingweb erwarten einen wachsenden Markt, weil sich mit einem sprechenden Browser ganz neue Kooperationsmöglichkeiten ergeben. Vier Kategorien von Content-Anbietern sollen von talkingweb profitieren:

1. Anbieter von Audiotext oder automatisierten Telefondiensten können Geld sparen, da Ausgaben für Soft- und Hardware entfallen.

2. Anbietern von Online-Inhalten entstehen geringe Zusatzkosten, da talkingweb HTML-4.0-kompatibel ist.

3. Betreiber von Callcentern können Teile ihrer Services via talkingweb automatisieren - beispielsweise die "Frequently Asked Questions" oder bestimmte, immer wieder nachgefragte Informationen, die sich auch auf Websites großer Beliebtheit erfreuen.

4. Firmen mit Intranets/Extranets, da Mitarbeiter jederzeit von unterwegs Zugriff auf das jeweilige Firmen-Intranet haben und so - etwa auf Dienstreisen oder Messen - auch ohne PC und Notebook auf interne Daten zugreifen können.

Fazit

VoiceXML ist eine der zahlreichen Anwendungsmöglichkeiten für die universelle Beschreibungssprache XML. Sie hat nicht nur wegen des zunehmenden Erfolges von XML eine gute Chance, sondern wegen ihrer zweifachen Anwendungsmöglichkeit: Zum einen ermöglicht sie sehbehinderten Menschen den Zugriff auf Internetinhalte und zum anderen bietet sie neue Geschäftsfelder für E-Commerce-Firmen. Denn im Vergleich zu den vorhandenen Telefonanschlüssen nimmt sich die Zahl der Internetanschlüsse noch ziemlich mager aus. Außerdem bietet sich ein enormes Einsparungspotenzial für Callcenter. Computer sind vielleicht immer noch nicht so schlau wie Menschen, aber sie verlangen keine Gehaltserhöhungen und arbeiten bereitwillig rund um die Uhr. mha)

Weiter gehende, ausführlichere Details zu VoiceXML und seinen Anwendungen finden Sie in den VoiceXML-Spezifikationen des VoiceXML-Forums.

Die wichtigsten VoiceXML-Elemente im Überblick

VoiceXML-Elemente im Überblick

Element

Bedeutung

assign

Ordnet eine Variable einem Wert zu

audio

Spielt Audioclip innerhalb eines Prompt

block

Container von nicht interaktivem, ausführbarem Code

break

Pause im Output

choice

Legt ein Menü-Item fest

disconnect

Unterbricht eine Session

dtmf

Legt eine Grammatik fest

else

Wird in if-Elementen verwendet

elseif

Wird in if-Elementen verwendet

emp

Wechselt Betonung innerhalb eines Prompt

enumerate

Nummeriert die Optionen in einem Menü

error

Fehlermeldung

exit

Beendet Session

field

Deklariert ein Eingabefeld

filled

Aktion, wenn Felder gefüllt sind

form

Dialog zur Präsentation von Informationen und Sammeln von Daten

goto

Gehe zu einem anderen Dialog oder Dokument

grammar

Legt Spracherkennungsgrammatik fest

if

If-Abfrage wie in konventionellen Programmiersprachen

menu

Dialog, um aus Alternativen zu wählen

meta

Legt Meta-Daten wie Autor fest

noinput

Legt fest, was bei falscher Eingabe passiert

option

Legt Option in einem field-Element fest

prompt

Audioausgabe für den User

record

Nimmt eine Audioaufnahme vor

return

Rückkehr von einem Subdialog

subdialog

Aufruf eines externen Dialogs

submit

Reicht Werte an einen Dokumentserver weiter

value

Fügt den Wert eines Ausdrucks in einem Prompt ein

var

Deklariert eine Variable

vxml

Toplevel-Element in jedem VoiceXML-Dokument