Akustik im WWW Soundunterstutzung in webbasierten Sprachen Projektgruppe AirWeb Dagmar Wendt Juni 2000 1 INHALTSVERZEICHNIS Inhaltsverzeichnis 1 Einleitung 2 2 (X)HTML 3 3 CSS 4 JavaScript 5 VRML 6 Java 7 Zusammenfassung und Ausblick 2.1 akustische Moglichkeiten von (X)HTML . . . . . . . . . . . . . . 2.2 Weiterentwicklung von (X)HTML . . . . . . . . . . . . . . . . . . 3.1 akustische Moglichkeiten . 3.1.1 Volume . . . . . . 3.1.2 Speak . . . . . . . 3.1.3 Pause . . . . . . . 3.1.4 Cue . . . . . . . . 3.1.5 Mixing . . . . . . . 3.1.6 Spatial . . . . . . . 3.1.7 Voice charcteristics 3.1.8 Speech . . . . . . . 3.2 Weiterentwicklung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 5 6 7 7 7 7 8 8 8 8 9 9 10 4.1 akustische Moglichkeiten . . . . . . . . . . . . . . . . . . . . . . . 10 4.2 Weiterentwicklung . . . . . . . . . . . . . . . . . . . . . . . . . . 10 5.1 akustische Moglichkeiten . . . . . . . . . . . . . 5.1.1 Sound node . . . . . . . . . . . . . . . . 5.1.2 AudioClip node und MovieTexture node 5.2 Weiterentwicklung . . . . . . . . . . . . . . . . 6.1 akustische Moglichkeiten . . . . . . 6.1.1 Java Media Framework API 6.1.2 Java Speech API . . . . . . 6.1.3 Java Sound API . . . . . . 6.1.4 Java 3D API . . . . . . . . 6.2 Weiterentwicklung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 11 11 12 12 13 13 13 14 15 15 16 17 7.1 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . 17 7.2 Diskussionspunkte nach dem Vortrag . . . . . . . . . . . . . . . . 17 7.3 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1 1 EINLEITUNG 2 Einleitung Das WWW (World Wide Web) setzt auf dem seit den 60er Jahren bestehendem Internet auf. Die Basis des WWW sind das Hypertext Transfer Protocol HTTP und das HTML-Dateiformat. Das WWW ist mit den heutigen Ausgabemedien fur Blinde und Sehbehinderte nur schwer zu nutzen. WWW-Seiten werden zum Teil akustisch dargestellt, indem (X)HTML-Dateien in normalen Text konvertiert werden, der dann vorgelesen wird. Der IBM Homepage Reader mit seiner Unterscheidung zwischen Links und normalem Text ist ein Beispiel fur einen Reader, der die syntaktische Struktur einer (X)HTML-Datei zumindest teilweise akustisch abbildet. Die Projektgruppe AirWeb hat das Ziel, einen auditiven Interaktionsraum fur webbasierte, grasche Benutzungsoberachen zu erzeugen. Bei einem Interaktionsraum handelt es sich um einen Raum, in dem eine Wechselbeziehung im Verhalten von Benutzer und Raum erfolgt. Ein auditiver Interaktionsraum enthalt zahlreiche mit dem Gehor wahrnehmbare Elemente. Ein solcher Interaktionsraum wurde es Blinden und Sehbehinderten starker als derzeitige Reader erleichtern, auf einer Webseite und im WWW allgemein zu navigieren. Um einen auditiven Interaktionsraum zu erstellen, ist es wichtig einen Uberblick uber die derzeitigen Websprachen und Webstandards zu haben. Vor allem eventuell vorhandene, direkt umsetzbare akustische Moglichkeiten sind fur die PG von Interesse. In dieser Ausarbeitung wird zunachst mit (X)HTML die Grundsprache des WWW vorgestellt. Die Erganzungssprachen\ zu (X)HTML, CSS und Java" Script, folgen anschlieend. Mit VRML wird ein drei-dimensionales, multimediales HTML-Analog vorgestellt. Zuletzt werden einige Java-APIs, die fur die Erstellung eines auditiven Interaktionsraums benutzt werden konnten, betrachtet. 2 2 (X)HTML 3 (X)HTML (X)HTML steht fur (ex tensible) H ypert ext M arkup Language. Die Idee einer computergestutzten Hypertextsprache lat sich bis in die 40er Jahre des 20. Jahrhunderts zuruckverfolgen. 1990 wurde diese Idee unter anderem von Tim Berners-Lee wieder aufgegrien. Ziel der Ernder des WWW war es, wissenschaftliche Dokumente online sichtbar zu machen. Dafur sollten einfache Textformatierung, das Einbinden von Graken sowie eine Hypertextfunktionalitat ermoglicht werden. Aus diesen Anforderungen heraus entstand (X)HTML. Mit Hilfe von (X)HTML soll die logische Struktur eines Dokumentes angegeben werden. Die Interpretation und Anzeige der Daten erfolgt dann durch einen Browser. Die Entwickler von (X)HTML glaubten an eine Unterteilung wissenschaftlicher Dokumente in die drei Aspekte Inhalt, logische Struktur und Darstellung. (X)HTML sollte den Aspekt der logischen Struktur abdecken. Fur den Inhalt waren die Vefasser der wissenschaftlichen Texte zustandig. Die Prasentation wurde dem Browser uberlassen, vermutlich auch weil innerhalb von (X)HTML keine Festlegung auf ein bestimmtes Ausgabemedium erfolgte. Einer der ersten weitverbreiteten Browser war Mosaic. An den von Mosaic gesetzten Standards wurden alle folgenden Browser-Entwicklungen gemessen. Aufgrund der visuellen Darstellung dieses Browsers kam es zu Versuchen, die Prasentation der Daten zu gestalten. Solche Darstellungsversuche wirkten meist nur in einem speziellen Browser, da in anderen Browsern dieselben (X)HTMLElemente zum Teil anders dargestellt wurden. Die beiden marktfuhrenden Browser, Netscape und der Internet Explorer, fuhrten zusatzlich proprietare Erweiterungen zum (X)HTML-Standard ein, so da es mehrere Sprachmoglichkeiten gab. Das World Wide Web Consortium (W3C) versucht als (X)HTML-Standardisierungsorganisation diesem Trend entgegenzuwirken. Das W3C ist verantwortlich fur die Verabschiebung neuer Versionen des (X)HTML-Standards (zur Zeit XHTML 1.0) sowie anderer WWW Standards (wie z. B. CSS oder XML). Von der W3C wurden inzwischen auch Style Sheets speziziert, mit deren Hilfe sich die Prasentation von Web-Seiten bestimmen lat. XHTML 1.0 ist die zur Zeit aktuelle Empfehlung des W3C. Die vorhergehenden (X)HTML-Versionen HTML 2.0, HTML 3.2, HTML 4.0 und HTML 4.01 sind SGML-Anwendungen. SGML steht fur S tandard G eneralized M arkup Language und wurde 1986 als ISO-Norm festgeschrieben. SGML ist eine MetaSprache, mit der Methoden fur das Erzeugen von Hierarchie-Modellen fur Dokumenttypen angegeben werden konnen. SGML-Anwendungen sind genau beschriebene Sprachen, innerhalb derer keine neuen Sprachelemente deniert werden konnen. XHTML 1.0 hat die gleiche Semantik wie HTML 4.01. Es ist die erste (X)HTML-Version, bei der es sich um eine XML-Anwendung handelt. XML steht fur ex tensible M arkup Language und wurde 1998 vom W3C speziziert. Bei XML handelt es sich um ein SGML-Prol, so da mit XML eigene Dokumenttypen und Befehle deniert werden konnen. XML ist eine Untermenge von SGML. Die unterschiedlichen (X)HTML-Versionen sind nicht voll ruckwartskompatibel. Der Aufbau einer (X)HTML-Datei besteht darin, zuerst die (X)HTMLVersion anzugeben. Die eigentlichen HTML-Angaben werden mit <html> eingeleitet und mit < =html> beendet. Eine HTML-Datei wird in head und body 2 (X)HTML 4 unterteilt. Der head enthalt Angaben uber die anzuzeigende HTML-Seite, im body steht der eigentliche Inhalt des Dokumentes. Hier eine Beispielseite: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Hello World Page</title> </head> <body> <p>Hello World!</p> </body> </html> 2.1 akustische M oglichkeiten von (X)HTML Mit Hilfe des object -Tags (ab HTML 4.0) lassen sich Objekte wie Bilder, Scripte, andere (X)HTML-Dateien oder auch Audio-Dateien in eine HTML-Datei einbinden. classid gibt den Ort an, an dem sich die Implementierung des einzubindenden Objektes bendet. Mit codetype kann der zugehorige MIME-Type angegeben werden. In classid sollen eher JavaScripte, der Sourcecode fur JavaApplets oder ahnliches angegeben werden. Mit data wird der Ort angegeben, an dem sich die Daten des einzubindenden Objektes benden. Statt JavaScripten sollten hier etwa Bild- oder Audiodateien angegeben werden. type gibt den MIME-Type der von data referenzierten Daten an. Mit Hilfe von classid und data konnen also sowohl ein Applet, als auch die vom Applet zu verarbeitenden Daten angegeben werden. <object codetype="application/java" classid="AudioItem" width="15" height="15" data="Hello.au"> </object> Innerhalb des object -Tags konnen noch weitere Attribute verwendet werden. Mit codebase kann eine Basisadresse angegeben werden, von der ausgehend Ortsangaben in classid, data und archive aufgelost werden. Wird codebase nicht verwendet, dann werden diese Ortsangaben von der Adresse des (X)HTMLDokumentes aus aufgelost. archive ermoglicht es eine Liste von Adressen fur classid und data anzugeben. Beim Einbinden groerer Elemente erlaubt standby die Ausgabe eines Textes wahren des Ladevorgangs. Mit height und width lassen sich die Ausmae eines Objektes angeben. declare gibt an, da es sich bei dieser object -Denition nur um eine Deklaration handelt. Istc dies der Fall, mu das object spater instantiiert werden. In Verbindung mit einem Formular konnen die Attribute name und tabindex benutzt werden, in Verbindung mit einer Imagemap das usemap -Attribut. 2 (X)HTML 5 Mit Hilfe des param -Tags konnen eingebundene Objekte, wie Applets oder Skripte initialisiert werden. Mit param konnen auch, wie mit Hilfe von data innerhalb eines object -Tags, von einem Applet zu bearbeitende Dateien eingegeben werden. <object codetype="application/java" classid="AudioItem" width="15" height="15"> <param name="snd" value="Hello.au|Welcome.au" /> Java applet that plays a welcoming sound. </object> Die von Netscape und IEX eingefuhrten Browser-Standards ermoglichen zusatzliche akustische Eekte, wie etwa das Abspielen von Hintergrundmusik. 2.2 Weiterentwicklung von (X)HTML Das W3C plant eine Modularisierung von XHTML 1.0. Ziel ist XHTML sowohl vom Anwender erweiterbar zu machen, als auch die Moglichkeit zu bieten nur eine Untermenge von XHTML zu nutzen. Beide Moglichkeiten sind fur zukunftige neue Gerate und Anwendungsplattformen (wie z. B. Handys) von Interesse. Bei einer Nutzung des WWW mit unterschiedlichen Geraten und damit unterschiedlichen Ausgabemedien fur WWW-Seiten wird sich die Trennung zwischen Strukturierung und Prasentation des Inhaltes vermutlich starker durchsetzen. Zumindest kommerzielle Seiten werden ein only recognizable with a " PC monitor, no handhelds!\ vermeiden wollen. Nicht alle Ausgabemedien werden alle HTML-Elemente voll umsetzen konnen. Graken sind etwa fur HandyBildschirme problematisch. In diesem Zusammenhang konnte sich auch die Modularisierung von XHTML durchsetzen. Eine Weiterentwicklung in Bezug auf akustische Moglichkeiten wird in XHTML selber vermutlich nicht erfolgen. Die Trennung von logischer Gliederung (in (X)HTML), Angaben zur Prasentation (mit Hilfe von Style Sheets) und den Inhalt einer Seite wird das W3C wohl beibehalten. 3 3 CSS 6 CSS CSS steht fur C ascading S tyle S heets. CSS wird ebenso wie (X)HTML von der W3C deniert. Mit Hilfe von CSS soll die Prasentation einer (X)HTML-Seite angegeben werden. Die Prasentation von XML ist mit CSS ebenfalls moglich. Prasentationsangaben werden deniert, indem angegeben wird wie ein bestimmtes (X)HTML-Element dargestellt werden soll. So kann etwa Schriftgroe, -art und -farbe einer Uberschrift festgelegt werden. Es gibt eine weitere vom W3C denierte Style-Sheet-Sprache (XSL) mit der die Prasentation von XML moglich ist. Die Prasentation von (X)HTML wird von XSL allerdings nicht unterstutzt. CSS-Angaben konnen in einer eigenen Datei oder auch direkt in einer (X)HTML-Datei gemacht werden. In einer (X)HTML-Datei gemachte Angaben werden im head des (X)HTML-Dokumentes mit dem style -Tag gemacht. <style type="text/css"> h1 {text-align: center; font-family: "Gill Sans", sans-serif; color : red} </style> Ein Site-einheitliches Layout lat sich mit Hilfe einer eigenstandigen CSS-Datei besonders gut verwirklichen. In allen (X)HTML-Dateien, die diese CSS-Datei referenzieren, werden z. B. Uberschriften auf die gleiche Weise dargestellt. Ein Beispiel fur eine solche eigenstandige CSS-Datei ndet sich unter [6]. Die Referenzierung einer CSS-Datei erfolgt indem im head des (X)HTML-Dokumentes mit Hilfe des link -Tags auf die CSS-Datei verwiesen wird. <link rel="stylesheet" href="bsp.css" type="text/css"> Sind fur ein Element sowohl in einer eigenstandigen Datei als auch in einer (X)HTML-Datei selber Angaben gemacht worden, dann werden die in der (X)HTML-Datei denierten CSS-Angaben verwendet. Auf diese Weise werden Ausnahmen von einem eigentlich Site-einheitlichem Layout ermoglicht. Eine Uberschrift fur eine sich mit dem Mittelalter beschaftigenden Seite konnte so einen altertumlichen Schriftsatz verwenden. CSS-Dateien konnen vom Browser-Hersteller, vom Autor einer Website und vom Browser-Nutzer gemacht werden. Die Voreinstellungen des Browsers sollen hierbei die niedrigste Prioritat haben. Generell haben die Angaben eines Autoren eine hohere Prioritat als die des Nutzers. Es gibt allerdings einen CSS-Befehl, mit dem es moglich ist, die CSS-Einstellungen des Nutzers als diejenigen mit der hochsten Prioritat zu kennzeichnen. Mit diesem Befehl konnen Behinderte eine immer fur sie wahrnehmbare Darstellung erreichen. CSS liegt in den Versionen CSS1 und CSS2 vor. CSS2 wurde 1998 verabschiedet und ist nicht voll ruckwartskompatibel. Mit CSS2 werden unterschiedliche Prasentationsvorlagen fur unterschiedliche Ausgabemedien unterstutzt. Es konnen aber auch in einer Datei Angaben fur unterschiedliche Ausgabemedien gemacht werden. Um die CSS-Angaben auszuwerten wird ein Document Tree fur die zu prasentierende Datei erstellt. Dabei konnen im Baum weiter unter liegende Elemente Angaben, die weiter oben gemacht wurden, erben. Dadurch mussen Werte, die innerhalb der ganzen (X)HTML-Datei gelten sollen nur einmal (fur HTML oder BODY) angegeben werden. Bei den in der CSS2-Denition vorgestellten Ausgabemedien handelt es sich um: 3 7 CSS Medium Beschreibung all alle Medien aural akustische Ausgabe braille Braille-Feedback-Gerate embossed Braille-Drucker handheld tragbare Gerate print Druckerausgabe projection z. B. Folien screen Rechner-Farbmonitore tty Medien mit festen Fonts tv Fernseher-Bildschirme Ein CSS2 konformer Browser mu laut dem W3C mindestens eins dieser Ausgabemedien unterstutzen. CSS2 wird zur Zeit von verschiedenen Browsern unterstutzt. Relativ weitgehend wird CSS2 vom Ice Browser 5 umgesetzt. Angaben zu den unterstutzten Medienarten werden auf den Icesoft-Seiten leider nicht gemacht. Audio- und Videodateien werden mit einem JMF Pilot, der auf der Java JMF API basiert, dargestellt. 3.1 akustische M oglichkeiten Die akustische Ausgabe wird in CSS2 mit Hilfe der Medienart aural ermoglicht. Es ist moglich, diese Angaben als Alternative, oder zur Erganzung einer visuellen Prasentation zu benutzen. Mit Hilfe von CSS2 konnen Gerausche sowohl in einem 3-dimensionalen Raum, als auch in einem zeitlichen Raum angegeben werden. Eigenschaften von synthetisierter Sprache wie z. B. Sprechgeschwindigkeit oder Sprachfamilie konnen ebenfalls angegeben werden. Alle Werte konnen ererbt werden. Werte die von <>\ umgeben sind, sind durch einen Absolutwert " zu ersetzen. Sie erscheinen nicht in der CSS-Anweisung. 3.1.1 Volume Der Wert fur Lautstarke kann als <number>, eine Zahl zwischen 0 und 100 eingestellt werden. 0 steht hierbei fur die minimal horbare, 100 fur die maximale, noch angenehm zu horende Lautstarke. Ein ererbter Wert kann auch mit einer <percentage>-Angabe verandert werden. Die percentage -Angabe wird relativ zum ererbten Wert gesehen und auf einen number -Wert umgerechnet. Um Stille zu erzeugen wird der vordenierte Wert silent benutzt, der nicht dem number Wert 0 entspricht. Es gibt weitere vordenierte Werte (x-soft, soft, medium, loud, x-loud ), die bestimmten number -Werten entsprechen. 3.1.2 Speak Speak gibt die Art der akustischen Renderung des Elementinhaltes an. Mit none wird der Elementinhalt nicht gerendert, mit normal werden sprach- abhangige Ausspracheregeln benutzt, wahrend spell-out fur ein Buchstabieren des Elementinhaltes sorgt. 3.1.3 Pause Pause ermoglicht es, Pausenlangen vor und nach einem Elementinhalt anzugeben. Es existieren pause-before, pause-after und pause. Hierbei ist pause eine 3 8 CSS Abkurzung fur das Setzen von pause-before und pause-after, bei der es moglich ist zwei Werte anzugeben. Gultige Werte fur alle drei sind <time> eine Angabe in Sekunden und Milisekunden, sowie <percentage>. Mit <percentage> wird Bezug auf das Inverse des Wertes fur die Sprachgeschwindigkeit (speech-rate ) bezogen, um im Redeu naturlich wirkende Pausen zu ermoglichen. 3.1.4 Cue Cue ermoglicht es, Hinweisklange vor und nach einem Elementinhalt anzugeben. Hinweisklange konnen mit cue-before, cue-after und cue angegeben werden, wobei cue analog zu pause eine Abkurzung fur das Nutzen der ersten beiden Moglichkeiten ist. Gultige Werte sind <uri> mit der Angabe der zu spielenden Audio-Datei und none um kein Earcon\ zu spielen. " 3.1.5 Mixing Mixing erlaubt das Mischen von Akustik. Mit play-during wird das Abspielen einer Hintergrundmusik ermoglicht. Gultige Werte sind <uri> fur die Angabe der zu spielenden Audio-Datei, mix um die aktuelle Audio-Datei mit der ererbten zu mischen, repeat zum Wiederholen der Hintergrundmusik bis die Renderung des Elementinhaltes abgeschlossen ist, auto um das ererbte Hintergrundgerausch einmal zu spielen und none damit keine (auch nicht ererbte) Hintergrundmusik gespielt wird. 3.1.6 Spatial Spatial ermoglicht Angaben zum Abspielort des Gerausches in einem 3-dimensionalen Raum. Mit azimuth sind Angaben zur horizontalen Lage eines Gerausches moglich. Mit <angle> wird die Position mit Hilfe eines Winkels zwischen -360deg und 360deg beschrieben (270deg entspricht -90deg ). Ahnlich wie bei dem Lautstarkewert number existieren auch hier vordenierte Wertangaben, die einem bestimmten angle -Wert entsprechen (left-side, far-left, left, center-left, center, center-right, right, far-right, right-side ). Mit der zusatzlichen Angabe des Wertes behind verandern sich diese vordenierten angle -Werte (bis auf left-side und right-side. Mit Hilfe von leftwards und rightwards konnen Gerauschquellen ebenfalls gegen oder mit dem Uhrzeigersinn verschoben werden. Es werden hierbei immer 20deg addiert bzw. subtrahiert, so da leftwards tatsachlich den Eindruck einer Verschiebung nach rechts, oder rightwards den einer Verschiebung nach links, erzeugen kann. Angaben zur vertikalen Position sind mit elevation anzugeben. Die Position wird mit Hilfe des Winkels <angle> angegeben. <angle> kann Werte zwischen -90deg und 90deg annehmen kann. Auch hier gibt es vordenierte Werte (below, level, above ). Mit higher werden 10deg zur gegenwartigen Hohe addiert, mit lower subtrahiert. 3.1.7 Voice charcteristics Voice characteristic ermoglicht verschiedene Angaben zur Charakteristik der Stimme, die zum Rendern der Elementinhalte verwendet wird. Mit speech-rate wird die Sprechgeschwindigkeit bestimmt. Dieser Wert kann zur 3 9 CSS Bestimmung der Pausenlange (percentage ) verwendet werden. Mit <number> wird die Sprech-Rate in Worten pro Minute angegeben. Es existieren wieder vorgegebene Werte, die mit bestimmten number -Werten korrespondieren (x-slow, slow, medium, fast, x-fast ). Mit faster und slower werden 40 Worte pro Minute zum aktuellen Wert addiert bzw. davon subtrahiert. Mit voice-family lassen sich Sprachfamilien angeben. Mit <generic-voice> sollen Sprachfamilien (z. B. mannlich, weiblich), mit <specic-voice> spezische Instanzen (z. B. komisch, Paul, usw.) angegeben werden. Die spezischen Instanzen sollen zuerst kommen. Diese Sprachfamilien werden analog zu Schriftarten gesehen (kursiv, TimesNewRoman $ zu Bart-Simpson, mannlich). Mit pitch wird die Stimmhohe angegeben. Die Tatsache, das die durchschnittliche Stimmhohe von der Sprachfamilie abhangt sollte hier berucksichtigt werden. Die durchschnittliche Stimmhohe wird mit <frequency> in hertz angegeben. fur x-low, low, medium, high, x-high sind keine Werte angegeben, sie sollen jedoch von Browsern in Abhangigkeit von der Sprachfamilie interpretiert werden. Die Animiertheit einer Stimme wird mit Hilfe von pitch-range angegeben. Es sind <number>-Werte zwischen 0 und 100 erlaubt. Betonung wird mit Hilfe von stress festgelegt. Der <number>-Wert kann wieder Werte zwischen 0 und 100 annehmen. 50 entspricht der normalen Betonung fur eine Sprache. Die Wellenform einer Stimme wird mit richness angegeben. Es sind wieder <number>-Werte zwischen 0 und 100 erlaubt. Je niedriger der Wert ist, desto glatter und damit monotoner wirkt die Wellenform der aufgezeichneten Stimme. 3.1.8 Speech Speech legt weitere Ausspracheregeln fest. Mit speak-punctuation wird festgelegt ob Satzzeichen wortlich gesprochen werden. Ist der Wert code angegeben, dann werden sie mitgesprochen, bei Angabe von none nicht. Die Aussprache von Zahlen wird mit speak-numeral angegeben. die einzelnen Ziern werden mit digits gesprochen, die gesamten Zahlen mit continuos. 3.2 Weiterentwicklung In der W3C wird zur Zeit CSS3 diskutiert. Auch fur CSS3 ist wie fur XHTML eine Modularisierung geplant. Die Liste der zu erstellenden Module steht noch nicht endgultig fest, derzeit ist allerdings ein Aural Cascading Style Sheets (ACSS) Modul geplant. Style Sheets wie CSS werden sich vermutlich bei einer Nutzung des WWW mit Hilfe unterschiedlicher (Ausgabe-)Gerate starker durchsetzen. Vor allem medienspezische Angaben werden dann verstarkt von Interesse sein. 4 JAVASCRIPT 4 10 JavaScript JavaScript ist eine Skriptsprache zur Erganzung von (X)HTML-Seiten. Sie liegt in den Versionen 1.0 - 1.5 vor. JavaScript 1.0 wird von den meisten Browsern unterstutzt, bei anderen Versionen ist die Unterstutzung fraglich. Um universell anwendbaren JavaScriptCode zu schreiben sollte man entweder JavaScript 1.0 benutzen oder Browser-sensitiven Code schreiben. Client-Side JavaScript ist das in HTML-Seiten verwendete JavaScript, Server-Side JavaScript wird in plattformunabhangige Bytecodes ubersetzt, mit denen CGI-Programm ahnliche Aplikationen erstellt und ausgefuhrt werden konnen. JavaScript ist sehr erfolgreich, so da es inzwischen das ahnlich funktionierende, von Microsoft entwickelte JScript gibt. Mit dem ECMA-262 Standard, der zur Zeit in der dritten Auage vorliegt, gibt es inzwischen auch fur Skriptsprachen einen Standard. Nach den Angaben der Entwickler von JavaScript, wird der ECMA-262 Standard seit JavaScript 1.3 umgesetzt. 4.1 akustische M oglichkeiten JavaScript selber besitzt keine akustischen Moglichkeiten. Es kann allerdings zum Erkennen des eine Seite lesenden Browsers, sowie der in ihm installierten Plugins benutzt werden. Mit der ab Version 1.3 eingefuhrten Moglichkeit, mit Java-Applets zu kommunizieren, kann mit Hilfe von JavaScript auf die akustische Moglichkeiten von Java zugegrien werden. 4.2 Weiterentwicklung Netscape entwickelt JavaScript 2.0. Die Sprachspezikation und die Engine Implementierung sollen neugeschrieben werden, wobei auf Ruckwartskompatibilitat geachtet wird. In der JS Engine Newsgroup und auf ECMA TC39 Treen ndet die Entwurfsdiskussion statt. 5 VRML 5 11 VRML VRML steht fur V irtual R eality M odeling Language. Es ist ein Datei-Format mit dem interaktive 3D-Objekte und -Welten beschrieben werden konnen. In VRML konnen 3D-Graken mit Multimedia integriert werden. VRML kann im Internet, in Intranets und lokalen Anwendersystemen angewendet werden. VRML liegt in den Versionen 1.0, 2.0 und 97 vor. VRML 97 ist eine 1997 verabschiedete ISO-Norm von VRML 2.0. VRML ist nicht voll ruckwartskompatibel. Das VRML 97 Dateiformat wird von der Java3D API unterstutzt. Eine VRML 97 Datei wird durch eine Kommentarzeile, die die VRMLVersion angibt einegeleitet. Anschlieend folgen die eigentlichen VRML Angaben. #VRML V2.0 utf8 # Einfaches Hello World Programm das einen String darstellt und # einen Link ins World Wide Web darauf legt Anchor { children [ Shape { geometry Text { string ["Hello World"] } } ] description "Hello World" url "http://www.csv.ica.uni-stuttgart.de/homes/js/javakurs/ HelloWorld2.wrl" } # dieser Befehl gestaltet lediglich das Aussehen des Browsers NavigationInfo { type "EXAMINE" } Eine 3-dimensionale Welt wird innerhalb einer VRML-Datei mit einem scenegraph angegeben. Ein scenegraph ist eine gerichteter, azyklischer Graph der 0 oder mehr root nodes enthalt. Von dem Ursprungsknoten ausgehend, werden alle graphischen Knoten in Baumform angeordnet. Im Beispiel ist Anchor der root node. 5.1 5.1.1 akustische Mo glichkeiten Sound node Mit Hilfe eines Sound nodes wird die Ortsangebe eines Gerausches innerhalb einer VRML-Welt angegeben. Vom Sound node ausgehende Gerausche sind nur innerhalb eines begrenzten Raumes horbar. In einem inneren Ellipsoid wird das Gerausch in seiner maximalen Lautstarke wahrgenommen. Ein aueres Ellipsoid 5 12 VRML gibt den Raum an in dem das Gerausch leiser wahrgenommen wird. Auerhalb dieses Ellipsoids wird das vom Sound node erzeugte Gerausch nicht wahrgenommen. Das abzuspielende Gerausch mu in einem AudioClip node oder in einem MovieTexture node angegeben werden. 5.1.2 AudioClip node MovieTexture node und Ein AudioClip node speziziert Audio-Daten, die von einem Sound node referenziert werden konnen. Mit einem MovieTexture node wird eine zeitabhangige Textur-Karte, die sich in einer Film-Datei bendet, zusammen mit Kontrollparametern deniert. Wird ein MovieTexture node als Quelle fur einen Sound node benutzt wird, dann wird er nich gerendert. Sowohl der AudioClip node als auch der MovieTexture node sind zeitabhangige Knoten, die sich zu bestimmten Zeiten aktivieren und deaktivieren konnen. Diese Werte konnen auch durch Nachrichten, wahrend ein solcher Knoten aktiv ist, gesetzt werden. Wiederholungen nden statt, solange loop wahr ist. 5.2 Weiterentwicklung Zur Zeit wird an der Entwicklung von X3D gearbeitet. Mit X3D sollen die Geometry und die Verhaltensmoglichkeiten von VRML 97 mit Hilfe von XML ausgedruckt werden. 6 JAVA 6 13 Java Java wurde der Oentlichkeit Ende 1995 vorgestellt. Es ist eine plattformunabhangige, objektorientierte Programmiersprache, die fur Internetprogrammierung besonders geeignet ist. Mit den in der Java Plattform mitgelieferten APIs (Application Programming Interface), werden Funktionalitaten bereitgestellt, auf die Programmierer aufbauen konnen. Java liegt in den Versionen 1.0, 1.1, 1.2 und 1.3 vor. In Java 1.2 wurden zahlreiche Neuerungen eingefuhrt, so da es auch Java 2 Plattform genannt wird. Java 1.3 enthalt gegenuber Java 1.2 nur kleinere Korrekturen und Updates. Die Plattformunabhangigkeit Javas wird mit Hilfe der Java Virtual Machine (JVM) erreicht. Java-Code wird in Java-ByteCode ubersetzt, der dann von der JVM interpretiert wird. Dadurch mu die JVM und nicht das einzelne Programm auf eine Plattform portiert werden. Ist dies geschehen, konnen alle Java-ByteCodes auf dieser Plattform ausgefuhrt werden. Neue Versionen der Java Virtual Machine mussen naturlich neu portiert werden. Da in der Praxis nicht alle JVM-Versionen fur alle Plattformen vorliegen, ist die Plattformunabhangigkeit nicht voll gegeben. Java-Code kann als eigenstandiges Programm, oder als Applet interpretiert werden. Applets sind in einem Browser lauahige Java-Programme. Die meisten Java-fahigen Browser setzen nur Java 1.0 voll um, fur die spateren JavaVersionen benotigen sie PlugIns. 6.1 akustische M oglichkeiten Um einen auditiven Interaktionsraum in Java zu erstellen, werden spezielle Java APIs und Packages benotigt. Die wichtigsten werden hier jetzt kurz vorgestellt. 6.1.1 Java Media Framework API Mit der Java Media Framework API (JMF) konnen Audio, Video und andere zeitbasierte Medien in Java-Programme und Applets eingebunden werden. Die JMF ist ein optionales Package, das die Multimedia Fahigkeiten in der Java 2 Standard Edition Plattform erweitert. Die JMF gibt eine einheitliche Architektur, ein einheitliches NachrichtenProtokoll und eine einheitliche Programmier-Schnittstelle fur Medien-Spieler, Medien-Aufnahme und fur Konferenzen vor. Sie liegt zur Zeit (seit dem 1.6.00) in der Version 2.1 vor und umfat die folgenden Packages. javax.media Enthalt vordenierte Schnittstellen (z. B. Player als MediaHandler um zeitbasierte Mediendaten darzustellen und zu kontrollieren), Klassen (z. B. Manager die Zugriststelle um systemabhangige Resourcen wie Player, Datenquellen,... zu erhalten), Ausnahmen (z. B. NoPlayerException wenn der Manager einen Player fur eine bestimmte URL nicht nden kann) und Fehler. javax.media.bean.playerbean Die JavaBean Komponente, besteht aus Klassen (z. B. MediaPlayer und MediaPlyerBeanInfo ). 6 JAVA 14 javax.media.control Schnittstellen zur Steuerung (z. B. MpegAudioControl um die Parameter fur MPEG Audios anzugeben). javax.media.datasink DataSink ist eine Schnittstelle aus javax.media fur Objekte, die Mediendaten von einer Quelle lesen und fur ein Ziel rendern (z. B. Abspeichern in einer Datei). Dieses Package stellt eine Schnittstelle und drei Klassen fur DataSink zur Verfugung. javax.media.format Ermoglicht Formatangabe und -umwandlung der Medien, enthalt Klassen (z. B. AudioFormat Formatinformationen fur Audiodateien) und eine Ausnahme (UnsupportedFormatException wenn ein FormatChange fehlschlagt, weil das Zielformat nicht unterstutzt wird). javax.media.protocol Schnittstellen und Klassen, die Angaben fur das Lesen und Schreiben von Mediendaten erlauben. javax.media.renderer Schnittstellen fur Renderer und Player. javax.media.rtp Bietet Unterstutzung fur RTP (Real-Time Transport Protocol). RTP ermoglicht das Versenden und Empfangen von Echt-Zeit Mediendaten uber das Netzwerk. javax.media.rtp.event RTP-Unterstutzung javax.media.rtp.rtcp RTP-Unterstutzung javax.media.util Utilities fur das Konvertieren von Video Buern in AWT Bildobjekte oder umgekehrt. 6.1.2 Java Speech API Die Java Speech API stellt Moglichkeiten zur Java-basierten Spracherkennung und Sprachsynthese bereit. Es handelt sich bei ihr nur um eine Spezikation, Implementierungen liegen von anderen Anbietern vor. Sun hat das Java Speech Grammar Format (JSGF) entwickelt, um eine plattformunabhangige Kontrolle von Spracherkennern zu ermoglichen. Zur plattformunabhangigen Kontrolle von Sprachsynthetisierern entwickelt Sun zur Zeit die Java Speech Markup Language (JSML), die in einer -Version vorliegt. Die Java Speech API besteht aus den drei folgenden Packages. javax.speech Die Schnittstellen, Klassen, ausnahmen und Fehler erlauben das Ansprechen und Interagieren mit einer Speech Engine 6 JAVA 15 javax.speech.recognition Ermoglicht die Spracherkennung, besitzt Schnittstellen, Klassen, Ausnahmen (GrammarException ) und Fehler (ResultStateError ). Die Schnittstellen und Klassen ermoglichen die Zusammenarbeit mit einem Erkenner (Recognizer ), sowie Angaben zu einer Sprachgrammatik. javax.speech.synthesis. Besitzt Schnittstellen, Klassen und eine Ausnahme (JSMLException ). Die Schnittstellen und Klassen erlauben das Ansprechen eines Synthetisierers. 6.1.3 Java Sound API Die Java Sound API bietet Unterstutzung fur Audio-Operationen wie z. B. Mixen, Aufnahme, MIDI Sequencing und MIDI Synthese. Die Java Sound API umfat die vier Packages. javax.sound.midi Erlaubt I/O, Sequencing und Synthese von MIDI-Daten mit Schnittstellen (z. B. MidiDevice, Receiver, Sequencer, Synthesizer, Transmitter ), Klassen (z. B.Instrument, Sequence, Track ) und Ausnahmen MidiUnavailableException und (InvalidMidiDataException ). javax.sound.midi.spi Schnittstellen um neue MIDI-Gerate, MIDI-Datei-Leser und MIDI-DateiSchreiber oder Sound-Datenbankleser zu implementieren. javax.sound.sampled Ermoglicht Aufnahme, Bearbeitung und Abspielen gesampelter Audiodaten mit Schnittstellen (z. B. Mixer, Port, Clip ), Klassen (z. B. Mixer.Info AudioFileFormat, AudioFormat,) und Ausnahmen (LineUnavailableException und UnSupportedAudioFileException ). javax.sound.sampled.spi Abstrakte Klassen, deren Ableitungen benutzt werden konnen um neue Audio-Gerate, Sounddatei-Leser und -Schreiber oder Audioformat Konvertierer anzubieten. 6.1.4 Java 3D API Die Java 3D API steht zur Zeit in der Version 1.2 zur Verfugung. Sie unterstutzt unter anderem spatial sound Angaben zum Ort einer Gerauschquelle im dreidimensionalen Raum. Fur Gerausch und MIDI Unterstutzung benutzt sie die Java Sound API. Die Java 3D API enthalt eigene 3D-Sound Informationen. Hier werden nur Elemente vorgestellt, die fur eine akustische Umsetzung wichtig sind. Zusatzlich gibt es in der 3D API Utility Packages. javax.media.j3d Schnittstellen(AudioDevice, AudioDevice3D, InputDevice ), Klassen (AuralAttributes, BackgroundSound, Clip, ConeSound, MediaContainer, ModelClip, PointSound, Sound, Soundscape ), Ausnahmen(SoundException ) um eine drei-dimensionale Welt zu erzeugen javax.vecmath Keine Elemente, die fur eine akustische Umsetzung wichtig sind. 6 JAVA 6.2 16 Weiterentwicklung Innerhalb der Java Media Framework API waren eine weitere Unterstutzung fur Dekodierung und Kodierung von Sound- und Video-Formaten und eine gleiche Unterstutzung in Portierungen fur verschiedenen Betriebssyteme anzustreben. Zusatzlich werden fur einige der unterstutzten Formate nicht alle Kompressionsalgorithmen unterstutzt, so da etwa nicht alle .mov-Dateien abgespielt werden konnen. Bei der Java Speech API sollten die Java Speech API Implementierungen sowie die Java Speech Markup Language (JSML) fur die Sprachsynthese weiterentwickelt werden. Eine Unterstutzung weiterer Formate ware innerhalb der Java Sound API wunschenswert. Die vorgestellten APIs sind Teil des Java Media Konzeptes. Sie werden sich im Zusammenhang mit dern anderen Java Media APIs 2D, Advanced Imaging, Shared Data Toolkit, Telephony, Image I/O aufgrund der Popularitat von Java durchsetzen. 7 ZUSAMMENFASSUNG UND AUSBLICK 7 17 Zusammenfassung und Ausblick 7.1 Zusammenfassung JavaScript besitzt als einzige der vorgestellten Websprachen und Webstandards keine akustische Unterstutzung, (X)HTML nur eine sehr eingeschrankte. VRML und Java bieten dagegen gute akustische Moglichkeiten. CSS ist als einziger Webstandard fur die akustische Darstellung von WWW-Seiten ausgelegt. Dementsprechend sind in die Entwicklung von CSS einige interessante Ideen fur eine akustische Ausgabe von WWW-Seiten eingeossen. Von diesen Ideen konnen Impulse fur die Projektgruppe ausgehen. Ein drei-dimensionaler Raum liesse sich mit Hilfe von CSS, VRML oder Java erzeugen, (X)HTML und JavaScript bieten hier keine Moglichkeiten. Alle vorgestellten Webstandards und Websprachen mit Ausnahme von CSS bieten Interaktionsmoglichkeiten. Keiner der vorgestellten Webstandards bietet allein die Moglichkeit einen auditiven Interaktionsraum zu schaen. 7.2 Diskussionspunkte nach dem Vortrag Konnen wir ein CSS-Template f ur Webseiten schreiben und sie dann ent- sprechend akustisch ausgeben? Ist eine echte Interaktion zwischen den Standards m oglich? Was ist eigentlich unser Ziel? Wollen wir vom zwei-dimensionalen Raum in den drei-dimensionalen u ber- setzen, indem wir (X)HTML-Seiten in einem akustischen Interaktionsraum darstellen? Wenn wir uns bei einer Ubersetzung von Webseiten auf gute\ Webseiten " beschranken, was sind dann eigentlich gute\ oder schlechte\ Webseiten? " " Wollen wir von einem drei-dimensionalen Raum in VRML-Darstellung in einen akustischen Interaktionsraum uberstezen? 7.3 Ausblick Java ware aufgrund der weitgehenden akustischen und das Internet betreenden Moglichkeiten eine geeignete Programmiersprache fur die PG. Sie konnte in Zusammenhang mit JavaScript oder dem VRML-Format eingesetzt werden. Der Inhalt von (X)HTML- und CSS-Dateien konnte ebenfalls mit Hilfe von Java eingelesen werden. Alle vorgestellten Webstandards und Websprachen konnten bei der Erzeugung eines auditiven Interaktionsraums verwendet werden. (X)HTML oder VRML konnten etwa das Eingabeformat festlegen, CSS Angaben zur auditiven Ausgabe machen, Java und JavaScript die Eingaben verarbeiten. LITERATUR 18 Literatur [1] SELFHTML http://www.teamone.de/selfhtml/ [2] OASIS (Organization for the Advancement of Structured Information standards) http://www.oasis-open.org/ [3] W3C (World wide web Consortium) http://www.w3.org/ [4] W3C HTML Home Page http://www.w3.org/MarkUp/ [5] W3C CSS http://www.w3.org/Style/CSS/ [6] W3C CSS Beispiel http://www.w3.org/TR/REC-CSS2/sample.html [7] Netscape JavaScript http://developer.netscape.com/ [8] VRML WEB 3D Consortium http://www.vrml.org/ [9] VRML Beispiel http://www.csv.ica.uni-stuttgart.de/homes/js/javakurs/vrmlkurs.html [10] Sun Java http://www.java.sun.com/ [11] Sun Java Media Framework http://www.java.sun.com/products/javamedia/jmf/ [12] Sun Java 3D http://www.java.sun.com/products/java-media/3D/ [13] Sun Java Speech http://www.java.sun.com/products/java-media/speech/ [14] Sun Java Sound http://www.java.sun.com/products/java-media/sound/ [15] David Flanagan, Java in a Nutshell, Third Edition, O'Reilly 1999, ISBN 1-56592 [16] Cay Horstmann und Gary Cornell, Core Java 2, Band Grundlagen, Prentice Hall 1999, ISBN 3-8272-9565-3 [17] Craig Lindley, Digital Audio with Java, Prentice Hall 2000, ISBN 0-1308767-3