Web Speech API
Die Web Speech API ist eine Spezifikation der Speech API Community Group innerhalb des W3C, um die Nutzung von Funktionen zur Sprachsynthese und Spracherkennung mittels JavaScript in Webbrowsern zu ermöglichen.
Allgemeines
Obwohl die Funktionen zur Sprachsynthese und -erkennung in einer gemeinsamen Spezifikation beschrieben werden, sind diese voneinander unabhängig. Sie können also einzeln in Browsern implementiert oder von Webseiten genutzt werden.
Wie die Funktionen zur Verfügung gestellt werden, ist nicht festgelegt. So nutzt Google Chrome ebenfalls von Google bereitgestellte Online-Funktionen, während Firefox auf lokale Dienste zurückgreift.[1]
Das Öffnen des Mikrofons für die Spracherkennung ermöglicht es theoretisch, einen Benutzer auszuspionieren. Daher wird diese Funktion nur nach Zustimmung des Benutzers gestartet. Während die Sprachaufnahme läuft, wird ein entsprechender Hinweis eingeblendet, mit der Option, die Funktion wieder abzuschalten.
Sprachsynthese
Die Funktionen zur Sprachsynthese stehen über den Singleton speechSynthesis
und die Klasse SpeechSynthesisUtterance
zur Verfügung. Zur Nutzung erzeugt man ein neues SpeechSynthesisUtterance
-Objekt mit dem Text, der gesprochen werden soll. Anschließend kann man weitere Parameter festlegen, besonders den Sprachcode, aber auch Angaben zur Sprechgeschwindigkeit, Tonhöhe etc. Dieses Objekt übergibt man der Funktion speechSynthesis.speak
. Es wird dann in eine Warteschlange eingereiht und ausgegeben, wenn es an der Reihe ist. Zum Umgang mit der Warteschlange gibt es weitere Funktionen, mit denen die Sprachausgabe angehalten oder ganz abgebrochen werden kann. Der aktuelle Zustand lässt sich über Events verfolgen. Neben reinem Text ist auch die Nutzung von SSML vorgesehen.
Beispiel
Der folgende Code spricht den Text „Hallo Welt“.
var utterance = new SpeechSynthesisUtterance('Hallo Welt');
utterance.lang = 'de'; //Sprache auf Deutsch festlegen
speechSynthesis.speak(utterance);
Spracherkennung
Die Funktionen zur Spracherkennung stehen über die Klasse SpeechRecognition
zur Verfügung. Zunächst erzeugt man ein neues SpeechRecognition
-Objekt. Dieses kann man konfigurieren, indem beispielsweise die Sprache oder eine Grammatik angegeben wird, nach der die Erkennung erfolgen soll. Über die start
-Methode kann die Erkennung begonnen werden. Sobald ein Ergebnis vorliegt, wird ein entsprechendes Ereignis ausgelöst, über das der erkannte Text, mögliche Alternativen und Daten zu deren Konfidenz zur Verfügung stehen.
Beispiel
Der folgende Code gibt den gesprochenen Text in einem Meldungsfenster aus.
var recognition = new SpeechRecognition();
recognition.lang = 'de'; //Sprache auf Deutsch festlegen
recognition.onresult = function (event) {
if (event.results.length > 0) {
alert(event.results[0][0].transcript); //erstes Ergebnis ausgeben
}
};
recognition.start();
Browserunterstützung
Die Sprachsynthese ist in Google Chrome ab Version 33 vorhanden, in Apple Safari ab Version 7, Opera ab Version 27 und Microsoft Edge ab Version 14.[2] Mozilla Firefox unterstützte die Sprachsynthese theoretisch ab Version 31, die Funktion ist aber standardmäßig deaktiviert. Benötigt wird zudem eine Unterstützung durch das Betriebssystem. Diese war zunächst nur auf Firefox OS (ab Version 2.0) vorhanden, dort ist die Funktion auch aktiviert. Mit Version 42 wurde eine Unterstützung für Windows,[3] mit Version 44 für Mac OSX und Linux[4] implementiert, allerdings weiterhin deaktiviert. Ab Version 47 kann Firefox die Funktion – sofern sie aktiviert ist – auch intern im „Lesemodus“ nutzen, um Webseiten vorzulesen.[5] Die standardmäßige Aktivierung der Funktion erfolgte mit Version 49.[6]
Die Spracherkennung funktioniert in Chrome und Opera, allerdings noch mit Herstellerpräfix und ohne Unterstützung von Grammatiken. Auch in Firefox ist theoretisch eine partielle Implementierung vorhanden, es fehlt allerdings die Schnittstelle um die Spracherkennung zu erlauben, sodass sie nur in Firefox OS (ab Version 2.5) nutzbar ist.[1]
Für andere Browser und ältere Versionen gibt es Polyfills und alternative Implementierungen mit vergleichbarem Funktionsumfang. Diese beruhen entweder auf Online-Diensten[7] oder sind mittels Emscripten aus bereits bestehenden Programmen erzeugt.[8]
Einzelnachweise
- Chris Mills: Firefox and the Web Speech API. In: Mozilla Hacks. 21. Januar 2016, abgerufen am 8. September 2016 (englisch).
- Can I use: Speech Synthesis API. Abgerufen am 8. September 2016.
- Firefox 42 for developers. In: MDN Web Docs. Abgerufen am 8. September 2016.
- Firefox 44 for developers. In: MDN Web Docs. Abgerufen am 8. September 2016.
- Sören Hentzschel: Firefox 47 kann Artikel vorlesen. 8. März 2016, abgerufen am 8. September 2016.
- Firefox 49 for developers. Others. In: MDN Web Docs. Abgerufen am 21. September 2016 (englisch).
- janantala: speech-synthesis. In: GitHub. Abgerufen am 8. September 2016.
- Norbert Landsteiner: meSpeak.js. syl22-00: Pocketsphinx.js. Abgerufen am 8. September 2016.