# 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.
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“.

## 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.

## 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. 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, mit Version 44 für Mac OSX und Linux implementiert, allerdings weiterhin deaktiviert. Ab Version 47 kann Firefox die Funktion – sofern sie aktiviert ist – auch intern im „Lesemodus“ nutzen, um Webseiten vorzulesen. Die standardmäßige Aktivierung der Funktion erfolgte mit Version 49.
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.
Für andere Browser und ältere Versionen gibt es Polyfills und alternative Implementierungen mit vergleichbarem Funktionsumfang. Diese beruhen entweder auf Online-Diensten oder sind mittels Emscripten aus bereits bestehenden Programmen erzeugt.