Speak.js
Sprachausgaben in Javascript
Alon Zakai hat mit Speak.js eine Sprachsynthesesoftware komplett in Javascript umgesetzt. Der Browser kann damit Texte sprechen, ohne zusätzliche Plugins oder Spezialsoftware.

Bei Speak.js handelt es sich um eine Portierung der freien Sprachsynthese-Software eSpeak 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, 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 ausprobieren will, kann dies mit einer Demo tun, 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 mit französischer Sprache. Allerdings, so Zakai, sei diese noch nicht optimiert und daher langsamer.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Getestet mit Chromium 13.0.782.112
+1 xDDD
Doch: http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=gpp&lang2=v8 Im...