Mittwoch, 23. Mai 2012


Artikel

Mai 2008 | Artikel

Java Speech API 2 Fortsetzung, Teil 2

Teil 1   Teil 2   Teil 3   Teil 4   

Herunterladen der Referenzimplementierung

Conversay hat eine eigene Platform Conversations gestartet, um Unterstützung für das JSAPI 2 anbieten zu können. Hier findet sich neben einigen Informationen zum JSAPI 2 und einem Forum auch die Möglichkeit, die Referenzimplementierung (RI) nach einer Registrierung herunterladen zu können. Die RI gibt es leider nur für Windows, bietet dabei aber neben der jsapi2.jar, in der das eigentliche API festgehalten ist auch eine vollständige Anbindung an die Conversay-eigene Speech Engine CASSI. Letztere ist auf mobile Geräte ausgelegt und weist eine entsprechend schlechte Qualität auf. Es ist aber sofort möglich, ein paar Gehversuche mit dem neuen API zu machen. Neben Englisch wird erfreulicherweise auch Deutsch unterstützt. Weiterhin gibt es eine Reihe von Beispielprogrammen, die auch mit J2SE auf dem Desktop ausgeführt werden können. Die Beispiele werden über ANT-Build-Dateien gebaut, die es erlauben, nachzuvollziehen, was wie getan werden muss, um die Beispiele auch auf eigene Testanwendungen zu übertragen. Ein Emulator für Mobiltelefone inklusive einer Anleitung, diesen aus den IDEs Eclipse oder JDeveloper zu nutzen, rundet das Paket ab. Um auch tatsächlich Midlet-Anwendungen entwickeln zu können, ist zusätzlich die Installation des Sun Java Wireless Toolkits nötig.

Lizenzrechtliches

Bei der RI handelt es sich um eine Vorabversion, die allein zu Testzwecken veröffentlicht wurde. Fehler, die noch gefunden werden, können im Forum der Platform Conversations gepostet werden. Anwendungen dürfen nur zu Testzwecken geschrieben werden. Die Testversion ist bis zum 29. August 2009 befristet und verweigert anschließend den Dienst. Wie es danach weiter gehen soll, bleibt unklar. In den FAQ nennt Conversay keine Termine für eine weitere Version, geschweige denn für das Endprodukt. Damit ist eine kommerzielle Anwendungsentwicklung nur in Absprache mit Conversay möglich.

Ein erstes Stück Code

Die Konzepte, wie das neue API zu handhaben ist, haben sich gegenüber der Vorgängerversion nicht wesentlich geändert, sodass sich Entwicklerinnen an dieser Stelle schnell umgewöhnen können. Listing 1 zeigt ein kleines Beispiel, wie die TTS Engine angesprochen werden kann. Dabei ist es gleichgültig, ob für den Desktop oder als Midlet für eine J2ME-Umgebung entwickelt wird.

  1. Listing 1
  2. import java.util.Locale;
  3. import javax.speech.*;
  4. import javax.speech.synthesis.*;
  5. public class Jsapi20Test {
  6. // Deutschen Synthesizer erzeugen
  7. SynthesizerMode synMode = new SynthesizerMode(Locale.GERMAN);
  8. Synthesizer synth = (Synthesizer) EngineManager.createEngine(synMode);
  9. // Bereitmachen, um etwas auszugeben
  10. synth.allocate();
  11. // Sprich!
  12. synth.speakMarkup("<speak version='1.0' xml:lang='de'>"
  13. + "Welches ist Ihr Lieblingseis?></speak>", null);
  14. // Aufräumen.
  15. synth.deallocate();
  16. }

Zur Compile-Zeit ist nur die jsapi2.jar nötig. Um die Anwendung laufen zu lassen, muss zusätzlich die mitgelieferte Engine von Conversay bekannt gemacht werden. Dazu müssen ri.jar und zum Parsen der XML-Struktur die kxml2.jar in den CLASSPATH aufgenommen werden. Bei der Ausführung als Desktopanwendung muss ri-j2se.jar und bei der Ausführung als Midlet ri-kvm.jar herangezogen werden. Die RI zieht die Engine als nativen Code an. Das ist auch der Grund, warum lediglich Windows als Betriebssystem unterstützt wird. Der Ort der nativen DLLs wird über den Kommandozeilenparameter -Djava.library.path=C:/Programme/Conversay/JSAPI2/dist/ri/platform
angegeben. Dabei ist der Pfad gegebenenfalls entsprechend anzupassen.

Interessant ist hier die Nutzung von SSML anstelle von JSML. Beide Formate sind zwar vom W3C standardisiert, aber SSML hat durch die Einbindung in VoiceXML eine größere Relevanz.

Teil 1   Teil 2   Teil 3   Teil 4   

Kommentare