Java Speech API 2 - JAXenter

Java Speech API 2

Spracherkennung

Nach der Ausgabe von Sprache wollen wir das obige Beispiel (Listing 1) um Spracherkennung erweitern, damit die Benutzerin die Eingabe ebenfalls verbal vornehmen kann. Hierzu müssen wir zunächst eine Grammatik definieren, welche die zu erkennenden Worte festlegt. Wir beschränken uns hier auf die gängigen Sorten Erdbeere, Vanille und Schokolade. Auch hier ist man mit dem Standard SRGS wieder auf einen W3C Standard gegangen, der auch in VoiceXML Verwendung findet. Um den Spracherkenner anzusprechen, wird Listing 1 um Listing 2 erweitert. Abbildung 2 zeigt die Demoanwendung in Aktion.

Abb. 2: Das Demoprogramm in der mitgelierten Entwicklungsumgebung
Listing 2
.
import javax.speech.recognition.*;

public class Jsapi20Test implements ResultListener {
.
    // Deutschen Erkenner erzeugen
    RecognizerMode recMode = new RecognizerMode(Locale.GERMAN);
    Recognizer rec = (Recognizer) EngineManager.createEngine(recMode);

    // Erkenner starten
    rec.allocate();

   // Grammatik laden und aktivieren
   String grammarMarkup = ""
       + ""
       + " Erdbeere  Vanille "
       + " Schokolade "
       + "";
   RuleGrammar gram = rec.loadRuleGrammar("icecream", grammarMarkup);

   // Listener bekannt machen, um das Ergebnis zu erhalten
   rec.addResultListener(this);

   // Fokus auf den Erkenner und lauschen
   rec.requestFocus();
   rec.resume();

   // Anweisungen ausgeben, sobald der Erkenner soweit ist
   rec.waitEngineState(Engine.RESUMED);
   // Synthesizer starten (siehe Listing 1)

   // Warten, bis das Ergebnis ausgelesen wurde
   rec.waitEngineState(Engine.DEALLOCATED);
.
    public void resultUpdate(ResultEvent event) {
.
        if (event.getId() == ResultEvent.RESULT_ACCEPTED) {
            Result r = (Result) (event.getSource());
            ResultToken tokens[] = r.getBestTokens();

            // Erkannte Antwort ausgeben
            for (int i = 0; i 
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.