Die neuesten Browser-Versionen von Googles Chrome (seit Version 33) und Apples Safari (seit Version 7, hier eine Übersicht der Browser-Kompatibilität) unterstützen das Speech Synthesis API. Dabei handelt es sich um ein Web API zur Sprachsynthese. Das heißt grob: Der Browser kann Texte mit einer menschlichen Stimme vorlesen.
Google Chrome hat aktuell zehn Sprechstimmen in neun Sprachen integriert: Neben einer britischen Frauen- und einer britischen Männerstimme, jeweils eine Frauenstimme, die amerikanisches Englich, Spanisch, Französisch, Italienisch, Deutsch, Japanisch, Koreanisch und Chinesisch spricht. Eine Liste der angebotenen Stimmen gibt die Methode getVoices()
zurück.
window.speechSynthesis.getVoices();
Update: Rene Kriest hat mich darauf hingewiesen, dass die getVoices()
-Methode asynchron funktioniert, und auch gleich ein Code-Beispiel geliefert.
Hallo Welt
Soll ein Text als gesprochen Sprache ausgegeben werden, muss zunächst eine "Äußerung" (utterance) erstellt werden. Dieses Objekt kann über weitere Eigenschaften konfiguriert werden, beispielsweise wird hier die Sprache gesetzt:
var hallo = new SpeechSynthesisUtterance("Hallo Welt.");
hallo.lang = "de-DE";
window.speechSynthesis.speak(hallo);
"Sprachausgabe im Browser: Das Speech Synthesis API" vollständig lesen
Seit geraumer Zeit besitze ich ein Arduino UNO, habe damit aber noch nicht viel mehr gemacht als ein paar LEDs zum Blinken zu bringen oder einen Servomotor anzusteuern. Vielleicht sollte ich mir endlich ein Ethernet-Shield dazukaufen, denn so völlig offline kann ich gar nicht mehr denken, weswegen mir da teilweise die Ideen fehlen O_o Außerdem werden die Arduino-Boards üblicherweise in einem vereinfachten C-Dialekt programmiert, der zwar einfach zu erlernen ist, aber auch nur bedingt Spaß macht (vor allem mit der offiziellen IDE)
Zum Glück gibt es aber, wie bei Open Source-Projekten nicht ungewöhnlich, schöne Alternativen.
Firmata
Firmata ist ein Programm, welches - einmal auf das Arduino-Board übertragen - die Kommunikation mit Software auf einem anderen Computer ermöglicht. Firmata definiert gleichzeitig also auch das Protokoll, über welches mit dem Arduino (in beide Richtungen) kommuniziert werden kann. Wenn ich das richtig sehe, wurde Firmata zunächst für den Einsatz mit Processing entwickelt. Mittlerweile gibt es aber eine ganze Reihe von Client-Bibliotheken für verschiedene Sprachen.
Das Arduino-Board kann also von einem Host, auf dem die Software läuft, angesteuert werden; es können aber auch Sensoren oder z.B. ein Potentiometer ausgelesen werden. Für mich persönlich ergibt diese Kommunikation mehr Sinn als das pure Aufspielen eines Sketches, der dann auf dem Arduino-Board autonom vor sich hinläuft.
"Arduino mit PHP und Javascript programmieren" vollständig lesen
Ist schon wieder zehn Tage her, aber der Vollständigkeit halber schreibe ich noch ein paar Zeilen zum zweiten Treffen der JavaScript-User Group RheinMainJS. Wir trafen uns in angenehmer Umgebung bei Seibert Media (im fünften Stock des Wiesbadener Luisenforums) - ohne Ortskenntnis nicht ganz einfach zu finden, weil das Luisenforum hauptsächlich ein Einkaufszentrum beherbergt.
Knapp 25 Teilnehmer verfolgten mit Interesse die beiden Vorträge des Abends. Zunächst ließ uns Konstantin Filtschew an seinen - nicht immer positiven - Erfahrungen mit Appcelerator Titanium teilhaben und kam zu dem Ergebnis, dass bei komplexeren Anwendungen native Entwicklung unbestreitbare Vorteile hat. Im Anschluss stellte Christian Bäuerlein das Projekt Instantnavi vor, eine browserbasierte Turn-by-turn-Navigation auf JavaScript-Basis.
Es folgte, wie sollte es anders sein, der gemütliche Teil des Abends mit Diskussionen, Socializing und kühlen Getränken. Mir hat das Treffen sehr viel Spaß gemacht, vor allem weil wieder so viele JS-Entwickler teilgenommen und ihre Erfahrungen eingebracht haben. In Zukunft wollen wir unsere Treffen in etwa alle acht Wochen veranstalten, der nächste Termin wäre demnach Anfang Februar 2013 (ist noch nicht fix!). Aktuelle Informationen findet ihr auf unserer Google+-Seite.
Oder ihr werft einen Blick auf unsere neue RheinMainJS-Webseite, die ich auf Basis von node.js, Express und Foundation 3 kurz vor dem Treffen noch schnell erstellt habe. Die Domain dafür stellt freundlicherweise Sebastian Fastner zur Verfügung, gehostet ist die Seite bei Uberspace. Der Quellcode der Seite liegt übrigens auf GitHub, Contributions via Pull Request (Beispiel) sind sehr willkommen ![:-)](/plugins/serendipity_event_emoticate/img/emoticons/smile.png)
PS: Sollten wir eins der nächsten Treffen wieder bei Seibert Media ausrichten, seht euch unbedingt diese Wegbeschreibung an!
![RheinMain.JS](/uploads/misc-rheinmainjs_001.png)
Gestern Abend hat es stattgefunden: Das erste RheinMain.JS-Treffen in Wiesbaden. Ich schreibe hier schnell mal eine kurze Zusammenfassung auf.
Wir, d.h. ca. 16 Javascript-Interessierte, trafen uns bei Die Firma in Wiesbaden (noch einmal ein großes Danke!), die uns auch mit Beamer und Getränken versorgte. Nach kurzem Hallo-Sagen stiegen wir gleich voll ein mit Christoph Martens Vortrag über lycheeJS, die von ihm entwickelte Cross-Platform Javascript Game Library. Teilweise sehr advanced stuff, aber äußerst interessant zu sehen, was alles geht, wenn man sich in die Tiefen der Systeme hinabwagt. Wer sich für Spieleentwicklung interessiert, sollte sich die Lib auf jeden Fall genauer ansehen.
Im Anschluss sprach Sebastian Werner über Web Tooling und das von ihm initiierte Framework Jasy. Wer komplexere Webapplikationen mit vielen Abhängigkeiten erstellt, dürfte an Jasy Gefallen finden und sollte sich neben den Vortrags-Slides auch das Wiki ansehen, um ein Gefühl für die Möglichkeiten des Tools zu bekommen.
Ausklingen ließen wir das Treffen schließlich um die Ecke im Finale, wo bei Speis und Trank noch ausführlich Themen aus (nicht nur) der Javascript-Welt erörtert wurden. Alles in allem ein rundes erstes Treffen, dem hoffentlich noch viele weitere folgen werden. Mir hat's jedenfalls sehr viel Spaß gemacht!
Ich hatte ja am Anfang des Treffens noch einige offene Fragen zu Organisationskram für die User Group aufgelistet:
- Vorträge: Bitte einfach bei Reto oder mir melden, falls ihr einen interessantes Thema in petto habt.
- Orga: Falls ihr Lust habt, kommende Treffen mitzuorganisieren, sagt ebenfalls gern Bescheid
![:-)](/plugins/serendipity_event_emoticate/img/emoticons/smile.png)
- Bleibt es beim Namen RheinMain.JS? Ich hatte den Eindruck, er kam recht gut an, und wir hätten dank Sebastian sogar schon den passenden Twitter-Account!
- Bleiben wir in Wiesbaden? Vorerst wohl schon, die meisten Teilnehmer gestern kamen aus WI oder MZ.
- Webseite und Logo? Sollten wir uns mittelfristig zulegen, eilt aber nicht. Christoph hat für die Webseite schon seine eventuelle Unterstützung angeboten, danke! Logo: Kann jemand von euch zeichnen?
![;-)](/plugins/serendipity_event_emoticate/img/emoticons/wink.png)
- "Externe" Kommunikation? Die Anmeldung via Google+ hat ganz ok funktioniert, also bleiben wir erstmal dabei und kündigen weiterhin dort an. Webseite, Twitter -> s.o.
- "Interne" Kommunikation? Auf Google+ wird gerade über Themenvorschläge diskutiert. Momentan geht das auch noch recht gut, eventuell sollten wir uns hier mittelfristig aber doch eine andere Plattform (Mailingliste, Forum, ...) überlegen?
-> Discuss!
Es ist vollbracht: Innerhalb doch recht kurzer Zeit haben wir ein Javascript User-Treffen in Wiesbaden auf die Beine gestellt. Geplant sind für Montag, den 03. September 2012, ab 19 Uhr folgende zwei Vorträge:
Die Teilnehmer-Plätze sind fürs Erste stark begrenzt und gehen gerade weg wie die sprichwörtlichen heißen Semmeln. Meldet euch daher bitte bei Interesse schnell hier auf der Google+-Eventseite an, FCFS.
Vielen Dank an Die Firma für die Location!
Hashtag-Vorschlag: #rheinmainjs