Speak.js: Sprachausgaben in Javascript
Bei Speak.js handelt es sich um eine Portierung der freien Sprachsynthese-Software eSpeak(öffnet im neuen Fenster) auf Javascript. Umgesetzt hat Entwickler Alon Zakai diese mittels Emscripten: Der Compiler wandelt von LLVM erzeugten Bytecode in Javascript um. In C und C++ geschriebener Code lässt sich so in Javascript übersetzen und im Browser ausführen.
Die Javascript-Umsetzung von eSpeak läuft direkt im Browser, denn Emscripten emuliert auch das Dateisystem, um Schreib- und Leseaufrufe abzufangen und die Dateien per XmlHTTPRequest (XHR) zu holen.
Letztendlich erzeugt Speak.js eine Wave-Datei mit der von eSpeak erzeugten Sprachausgabe und legt diese im virtuellen Dateisystem von Emscripten ab. Diese Datei wird dann mit Base64 codiert und in eine Data-URL umgewandelt, die anschließend an das Audioelement aus HTML5 übergeben wird, so dass der Browser sie ausgeben kann.
Zakai räumt ein(öffnet im neuen Fenster) , dass dies zwar ein sehr einfacher Weg zur Umsetzung einer Sprachsynthese im Browser ist, aber keinesfalls der effizienteste. Zudem funktioniert Speak.js derzeit nur in Firefox, da Chrome keine Wave-Dateien in Form von Data-URLs unterstützt und Safari, Opera und Internet Explorer keine Typed-Arrays unterstützen.
Wer Speak.js(öffnet im neuen Fenster) ausprobieren will, kann dies mit einer Demo tun(öffnet im neuen Fenster) , die Zakai zur Verfügung stellt. Diese unterstützt derzeit nur Text in englischer Sprache. Grundsätzlich aber unterstützt eSpeak auch zahlreiche andere Sprachen, vorausgesetzt, die entsprechenden Sprachpakete wurden installiert. Zakai zeigt dies in einer zweiten Demo(öffnet im neuen Fenster) mit französischer Sprache. Allerdings, so Zakai, sei diese noch nicht optimiert und daher langsamer.



