Portal > Foren > Ankündigungen, News und Feedback > Tutorials > [Java] Einstieg in das Java Speech API
Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
Alt 13.06.2009, 13:47 Nach oben    #1
fka Gottzilla
 
Benutzerbild von The_S
 
Registriert seit: 02.02.2005
Ort: Würzburg
Beiträge: 754
Standard [Java] Einstieg in das Java Speech API

Einstieg in das Java Speech API

Heutzutage wird moderne und barrierefreie Technik immer wichtiger. Ein Teil davon ist die Sprachausgabe in Programmen und das damit verbundene Vorlesen von Texten durch den Computer. Vor allem wenn dynamische Texte vorgelesen werden sollen, kommen Entwickler ins Straucheln, da diese nicht mehr einfach als Audio-Datei dem Programm mitgegeben werden können. JSAPI bietet hier für die Java-Plattform Abhilfe. Es handelt sich hierbei um eine Text-To-Speech-Engine, die eine Sprachausgabe von dynamischen Texten ermöglicht.

Zuerst muss festgestellt werden, dass Sun die Implementierung der JSAPI nicht selbst liefert. Das heißt, dass du bei der Verwendung auf die Implementation eines dritten Herstellers zurückgreifen musst. Eine Auflistung solcher Implementierungen findest du in den JSAPI FAQ von Sun. Wir werden uns in diesem Tutorial hauptsächlich mit der FreeTTS-Implementierung auseinandersetzen. In diesem Tutorial beschätigen wir uns mit einem einfachen “Hello World”, gesprochen von FreeTTS.

Konfiguration von FreeTTS
Wie bei jeder anderen externen Programmteilen, müssen die benötigten JARs heruntergeladen und in den Classpath der Anwendung eingebunden werden. Du kannst FreeTTS direkt von sourceforge.net runterladen. Das Projektverzeichnis findest du hier. Lade hierbei die Binarys (Stand 09.03.2009: freetts-1.2.2-bin.zip) herunter. Sobald du das Archiv entpackt hast, findest du dort im Verzeichnis lib die Datei freetts.jar. Diese musst du für dieses Tutorial als einzige in den Classpath aufnehmen und einbinden.

Sag “Hello World”
Dein Programm zum Reden zu bewegen, ist nun denkbar einfach. Lediglich diese paar Zeilen Code sind notwendig:

java Code:
  1. package de.jbb;
  2.  
  3. import com.sun.speech.freetts.Voice;
  4. import com.sun.speech.freetts.VoiceManager;
  5.  
  6. public class SayHelloWorld {
  7.  
  8.   public static void main(String[] args) {
  9.  
  10.     VoiceManager voiceManager = VoiceManager.getInstance();
  11.     Voice voice = voiceManager.getVoice("kevin16");
  12.  
  13.     voice.allocate();
  14.  
  15.     voice.speak("Good morning Java World! It's a great day to speak some words.");
  16.  
  17.     voice.deallocate();
  18.   }
  19. }

Wenn du alles richtig gemacht hast, ertönt nun beim Ausführen des Programms der Text “Good morning Java World! It’s a great day to speak some words.” aus dem Lautsprecher.

Sehen wir uns den Quellcode an. Zuerst benötigen wir einen VoiceManager, der für die Handhabung der unterschiedlichen Stimmen zuständig ist. Über den Methodenaufruf getVoice(String) erhalten wir ein Objekt des Typs Voice, welches die eigentliche Stimme repräsentiert. Du kannst mit folgendem Code alle verfügbaren Stimmen aufzeigen lassen:
java Code:
  1. VoiceManager voiceManager = VoiceManager.getInstance();
  2. Voice[] voices = voiceManager.getVoices();
  3. for (int i = 0; i < voices.length; i++) {
  4.   System.out.println(voices[i].getName());
  5. }
Natürlich liessen sich auch weitere Stimmen einbinden. Als nächstes muss das Lexikon, welches der Stimme zugeordnet ist, mitsamt der Sprachausgabe geladen werden. Dies geschieht mit dem Aufruf voice.allocate. Die nächste Zeile sollte selbsterklärend sein. Mit voice.speack(String) wird der übergebene Text vorgelesen. Zum Schluss müssen die geladenen Daten wieder freigegeben werden. Dies geschieht über voice.deallocate.

Deutsche Sprachausgabe?
Natürlich kannst du FreeTTS auch deutsche Sätze vorlesen lassen. Die sind aber nicht sonderlich gut verständlich und haben alle einen englischen Akzent. Dies liegt daran, dass FreeTTS erst einmal nur für die englische Sprachausgabe gedacht ist. Andere Speech-To-Text-Engines beherrschen aber durchaus auch andere Sprachen als Englisch. Es ist auch möglich FreeTTS eine andere Sprache beizubringen. Dies ist aber nicht gerade trivial, weshalb an dieser Stelle nicht darauf eingegangen werden soll.


Dieses Tutorial wird uns mit freundlicher Genehmigung von java-blog-buch.de zur Verfügung gestellt.
Solltest du Fragen zu diesem Tutorial haben, so schreibe bitte einen Beitrag im Java-Forum mit einem Verweis auf dieses Tutorial.

Geändert von Jann Hendrik (01.07.2009 um 17:24 Uhr)
The_S ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Java] Suche Java und Eclipse-Entwickler mepeisen Gesuche 0 14.02.2008 17:36
[JAVA] Wie man aus Java mit einem PHP-Script kommuniziert sparrow Tutorials 0 25.03.2006 22:24
[BUCH] Java ist auch eine Insel kampet Literatur 5 22.02.2005 14:40
Java Mail Api Flytronik Allgemeine Java-Programmierung 4 19.09.2004 18:36
Zwist um Java als Open Source kampet Nachrichten 0 05.07.2004 03:37


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 Uhr.


Powered by vBulletin® Version 3.8.4 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.3.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47