JAXenter.de

Das Portal für Java, Architektur, Cloud & Agile
X

#Docker-Woche auf JAXenter: Top-Artikel, Tutorials & Videos in unserem Docker-Special!

Einführung in die Neuerungen von JSR 113

Java Speech API 2

Dirk Schnelle

1998 gab es mit dem Java Speech API die ersten Bestrebungen, Sprachtechnologien mit Java zu verwenden. Leider war dieser erste Entwurf nicht wirklich vollkommen. Nun ist die Version 2 auf dem Weg und verspricht, dass alles besser wird. Dieser Artikel gibt eine kurze Einführung in die Neuerungen und berichtet von ersten Erfahrungen mit der Referenzimplementierung.

"Anyone know(s) … where the JSR 113 is …?" So lautete im Oktober 2005 die Frage in einem Forum über Mobile Java. Die Spezifikation des JSAPI 2 wurde als JSR 113 im Jahr 2001 unter Federführung der US-amerikanischen Firma Conversay entwickelt, um einige Schwachstellen wie das mangelhafte Konzept des AudioManagers zu verbessern. Nun hat Conversay eine Vorabversion veröffentlicht, die eine Brücke zwischen Java und bestehenden Sprachservern auf MRCP-Basis, aber auch anderen Spracherkennern und Sprachsynthesizern schließt, um Sprachanwendungen auf mobilen Geräten verfügbar zu machen. Nachdem Android in der neueren Version Sprachtechnologien auf mobilen Geräten nicht mehr unterstützt, ist dies ein weiterer Grund dafür, sich des Themas anzunehmen.

Schon 1998 gab es mit dem Java Speech API 1.0 (JSAPI) die Möglichkeit, Sprachtechnologien in Java-Anwendungen zu nutzen. In der Regel waren das native Programme, die ursprünglich in der Programmiersprache C geschrieben waren und die über JNI genutzt wurden. Damit war nur eine clientseitige Nutzung (Abb. 1) möglich.



Abb. 1: Unterstützte Umgebungen der JSAPI

Spracherkennungssoftware benötigt viele Ressourcen, z.B. Prozessorleistung und Speicher. Diese Voraussetzung kann Java nach gängiger Meinung nicht immer erfüllen. Die Realisierung von Sprachtechnologie mit Java ist aber möglich. Dies zeigen universitäre Projekte wie Sphinx 4 von der Carnegie Mellon University oder auch FreeTTS. Qualitativ gehören die beiden nicht unbedingt zu den Spitzenprodukten, aber für einen ersten Eindruck sind sie ausreichend, zumal beide kostenlos erhältlich sind. Möchte man eine bessere Qualität, so kommt man um kommerzielle Pakete nicht herum.

Ein erster Blick auf die Unterschiede zur Vorgängerversion

Der größte Unterschied besteht in der Laufzeitumgebung. Während die JSAPI 1.0 noch für Desktop-PCs gedacht war, zielt das JSAPI 2 mit J2ME auf mobile Geräte ab. Das war für die Verhältnisse im Jahr 2001, als das Java Speech API mit dem JSR 113 auf die Reise ging, ein recht mutiger, aber auch konsequenter Schritt. Es war die Zeit, in der die Rechenleistung der Mobiltelefone noch nicht ausreichte, um richtige Anwendungen darauf laufen zu lassen, und auch die Betriebssysteme waren (und sind es zum Teil noch immer) recht esoterisch. Hier hatte man mit Java einen Standard, der auch in unterschiedlichen Umgebungen funktioniert. Während die JSAPI 1.0 lediglich eigens geschaffene Formate wie die Java Speech Markup Language (JSML) und Java Speech Grammar Format (JSGF) bot, kann mit der JSAPI 2 nun auf aktuelle Standards der Sprachtechnologie zurückgegriffen werden. Hierdurch können die Möglichkeiten, die kommerzielle Systeme mitbringen, besser ausgenutzt werden. Beide Formate, JSGF und JSML, waren für die praktische Arbeit nicht ausreichend. So fehlte z.B. bei JSML die Möglichkeit, Audiodateien wiederzugeben.

Ein gravierender Nachteil der Vorgängerversion war, dass die Anwendungsentwicklerin keine Möglichkeiten hatte, anzugeben, woher die Spracheingabe kommt oder wohin die Ausgabe gehen soll. Mit dem javax.speech.AudioManager war angedacht, diese Kanäle zu beeinflussen. Hierzu war man jedoch noch nicht in der Lage. Ein entsprechender Kommentar in der JSAPI-1.0-Dokumentation weist darauf hin, dass das Java Sound API noch nicht fertiggestellt war und hier später eine Nachbesserung erfolgen solle. Tabelle 1 fasst die wichtigsten Unterschiede zusammen.

Tabelle 1: Hauptunterschiede zwischen JSAPI 1.0 und JSAPI 2.0:
Merkmal JSAPI 1.0 JSAPI 2.0
Java Version JDK 1.1 oder höher J2ME (CLDC), J2SDK 1.4 oder höher
Grammatik JSGF SRGS XML
Speech Markup JSML SSML
Spracheingabe Mikrofon Mikrofon, beliebig konfigurierbar über AudioManager
Sprachausgabe Lautsprecher Lautsprecher, beliebig konfigurierbar über AudioManager
 
Verwandte Themen: 

Kommentare

Ihr Kommentar zum Thema

Als Gast kommentieren:

Gastkommentare werden nach redaktioneller Prüfung freigegeben (bitte Policy beachten).