# VoiceXML

VoiceXML (Voice Extensible Markup Language) ist eine XML-Applikation, die der Beschreibung von Dialog-Abläufen in einem Sprachdialogsystem dient. Sie ist besonders für Telefonanwendungen entwickelt worden. Seit Juni 2007 ist die aktuelle Version VoiceXML 2.1 eine Empfehlung des World Wide Web Consortiums (W3C) und hat damit denselben Status als Web-Standard wie HTML. Anwendungen, die in VoiceXML entwickelt wurden, laufen somit auf jeder VoiceXML-kompatiblen Sprachplattform. Auf Grund der Analogie zum HTML Web Browser werden VoiceXML Interpreter auch als Voicebrowser bezeichnet.
Als Erweiterung grafischer Benutzerschnittstellen im World Wide Web um die Ein- und Ausgabemöglichkeit durch natürliche Sprache hin zu multimodalen Benutzerschnittstellen, haben sich weitere Dialogbeschreibungssprachen als Ergänzung oder Alternative zu VoiceXML entwickelt:
* SALT (Speech Application Language Tags)
* X+V (XHTML+Voice)
* Web Speech API
SALT wurde von Microsoft initiiert und dient der stärkeren Verknüpfung von Sprachanwendungen mit den Inhalten und Verfahrensweisen des World Wide Web. X+V verbindet XHTML und VoiceXML-Elemente, um Internet und Telefonie zu verschmelzen.
Die Web Speech API ermöglicht die ECMAScript-gesteuerte Erweiterung von Webseiten um Sprachein- und Ausgabe.

## Entwicklungsgeschichte

Bei den ersten Sprachanwendungen gab es keine Trennung von Anwendung und Plattform. Dialogverläufe wurden genauso „hart verdrahtet“ programmiert und kompiliert wie beispielsweise die Schnittstellen zur Telefonanlage. Das hatte den Vorteil, dass Sprachanwendungen in der Regel schnell erstellt werden konnten und zuverlässig liefen, aber eine für heutige Begriffe unakzeptable Starrheit aufwiesen. Sollte beispielsweise ein Dialog geändert werden, musste der Anwendungsprogrammierer Eingriffe tief im Quellcode vornehmen.
In neueren Sprachanwendungen wurde deshalb die Anwendung von der Plattform getrennt, um Dialoge einfacher pflegen zu können. Skriptsprachen oder Tools zur Beschreibung dieser Anwendungen waren (und sind es zum Teil auch noch heute) proprietär – also von Anbieter zu Anbieter unterschiedlich.
VoiceXML 2.0 ist eine Standardisierungsanstrengung des W3C mit dem Ziel, zu einer einheitlichen Beschreibung von Sprachanwendungen zu kommen. Gleichzeitig ist es eine Schnittstellensprache, die zur Kommunikation zwischen Anwendung und Plattform genutzt werden kann. Der Standard hat mittlerweile eine weite Verbreitung gefunden und wird von zahlreichen Anbietern unterstützt. Neben den im Markt nach wie vor sehr verbreiteten proprietären Lösungen und Anwendungsplattformen gibt es konkurrierende Standardisierungsansätze, insbesondere den von einem Konsortium um Microsoft vorangetriebenen SALT-Standard. Die Spezifikation wurde am 16. März 2004 veröffentlicht.
VoiceXML 2.1 wurde am 19. Juli 2007 veröffentlicht und erweitert die Version 2.0 um einige zusätzliche Fähigkeiten. Diese sollen die während der Arbeit mit VoiceXML 2.0 erkannten Unzulänglichkeiten ausgleichen. Die Version 2.1 ist dabei vollständig abwärtskompatibel zu Version 2.0.
Aktuell wird an der Spezifikation zu VoiceXML 3.0 gearbeitet. Diese Version soll ein vollständiges Redesign der Spezifikation mit sich bringen, um eine Nutzung als Domain Specific Language für die Entwicklung von Sprachschnittstellen auch abseits der Telefonie zu ermöglichen. Die Abwärtskompatibilität zu VoiceXML 2.1 soll durch ein spezielles Profil ermöglicht werden.

## Analogien zum World Wide Web

Vergleicht man VoiceXML mit HTML, dann gibt es eine Reihe von Parallelen. Wie HTML ist VoiceXML sowohl Beschreibungssprache als auch Schnittstellenstandard:
* Man kann VoiceXML direkt nutzen, um Sprachanwendungen zu codieren, genauso wie man HTML direkt nutzen kann, um Benutzeroberflächen zu codieren.
* Man kann die Anwendung aber auch mit einem proprietären Tool definieren, und daraus (dynamisch oder statisch) VoiceXML-Code generieren. Das entspricht der Verwendung eines Dokumentenmanagementsystems für die Pflege einer Webseite. VoiceXML wird in diesem Fall weitgehend auf seine Eigenschaft als Schnittstellenstandard reduziert.
Die Analogie hinkt allerdings beim heutigen Stand der Technik noch an einem wichtigen Punkt: Noch sitzt der VoiceXML-Browser (als Bestandteil der Plattform) nicht direkt im Telefon des Endkunden, sondern steht häufig (aus Effizienzgründen) sogar noch im gleichen Serverraum wie der Anwendungs-Server. Die Kommunikation zwischen Anrufer und Plattform geschieht über das öffentliche Telefonnetz. Damit ist für den Anrufer und oft auch für den Betreiber die Frage ohne große Bedeutung, über welchen Standard Plattform und Applikation kommunizieren. Erst wenn aufgrund gestiegener Rechenleistung der Browser (und mit ihm zusammen insbesondere der Spracherkenner und die Sprachsynthese) auf dem Telefon Platz findet, ist die Frage der Standardisierung für den Anrufer (genauer: den Nutzer der Sprachapplikation) von wirklicher Bedeutung. Die Situation ist also heute noch in gewisser Weise vergleichbar mit der Frage, ob eine Benutzeroberfläche für eine lokal betriebene Anwendung in der Sprache HTML, oder etwa in Visual Basic oder auch mit einem (proprietären) Tool zur GUI-Erstellung realisiert werden soll – entscheidend ist vor allem die Qualität der resultierenden Benutzeroberfläche.

## Grenzen

Der Funktionsumfang des VoiceXML-Standards ist ein Kompromiss. Das bedeutet, dass erwünschte Features möglicherweise nicht oder erst in einer späteren Version unterstützt werden. In diesem Fall kann VoiceXML jedoch durch proprietäre Ergänzungen ausgeweitet werden. Das verwässert die oben erwähnten Vorteile zwar etwas, ist jedoch immer noch praktikabler, als das gesamte System auf ein proprietäres Skript aufzusetzen.
VoiceXML als Skriptsprache zur Anwendungsentwicklung beruht auf dem Grundkonzept, dass sich Dialoge zwischen Mensch und Maschine über explizit vordefinierte Flussdiagramme formalisieren lassen. In dieser Vorstellung „navigiert“ der Anrufer durch den vordefinierten Dialogablauf, häufig sogar unter Verwendung expliziter Navigationskommandos wie „zurück“ und „Hauptmenü“. Dieses Konzept stößt dort an die Grenzen, wo sich die Interaktion einem freien Mensch-Maschine-Dialog annähert, bei dem der Anrufer die Dialoginitiative durch das Formulieren ganzer Sätze übernehmen kann, z. B. „nein, nach Hamburg, und zwar so, dass ich so gegen 18 Uhr da bin“ (sogenannte conversational oder mixed-initiative dialogues). Zwar gibt es Konstrukte in VoiceXML, die dem Anrufer bei der Navigation durch den Dialogablauf gewisse Freiheiten eröffnen (z. B. sogenanntes form filling); der Aufwand für die Anwendungsentwicklung steigt jedoch prinzipbedingt mit zunehmender Freiheit im Dialogablauf drastisch an. Für die Realisierung solcher Dialoge erweist sich die Einführung eines sogenannten Dialogmanagers als nützlich, der die Systemreaktion dynamisch auf Basis der Dialoghistorie bestimmt. Ein solcher Dialogmanager kann genutzt werden, um VoiceXML-Dokumente – als Schnittstelle zur Sprachplattform – dynamisch zu generieren.
Multimodale Anwendungen – also die Verbindung von Sprache und grafischer Ausgabe – werden derzeit von VoiceXML nur begrenzt unterstützt. Es gibt jedoch Tendenzen, multimedial angelegte Dialogbeschreibungssprachen zu etablieren. Dabei stellt X+V (XHTML+Voice) den Versuch da, VoiceXML mit XHTML mithilfe von speziellen Synchronisierungselementen zusammenzuführen. Ein weiterer Ansatz bietet die Sprache SALT, die als Aufsatz auf HTML gedacht ist, aber für die Sprachfunktionen auf einen proprietären, von VoiceXML verschiedenen Ansatz setzt. Bisher haben diese technischen Lösungen aber noch das Hauptproblem, dass ein überzeugender Use-Case für ihren praktischen Einsatz fehlt.