0

シンプルな Speech Recognizer JSAPI (JSR 113) をhere (このリンクは現在機能しません) またはhereでそのライブラリの例に従って試しましたが、java.lang.NullPointerException が発生しました。エラーは、「rec.allocate();」という行が原因でした。レコグナイザーに上の行が割り当てられているため、なぜ発生したのですか ("rec = (Recognizer) EngineManager.createEngine(mode);")?

コードは以下のとおりです。

import javax.speech.*;
import javax.speech.recognition.*;
...    
static Recognizer rec;
    ...
public static void run(String[] args) {
            try {
                RecognizerMode mode = new RecognizerMode(new SpeechLocale("en", "GB"));
                rec = (Recognizer) EngineManager.createEngine(mode);

                // Start up the recognizer
                rec.allocate();

                // Load the grammar, and enable it
                String grammarMarkup = 
                    "<grammar root='sentence' xml:lang='en' version='1.0' " +
                                 "xmlns='http://www.w3.org/2001/06/grammar'>" + 
                      "<rule id='sentence' scope='public'>" +
                        "<one-of>" +
                          "<item> hello world </item>" +
                          "<item> good morning </item>" +
                          "<item> hello mighty computer </item>" +
                        "</one-of>" +
                      "</rule>" +
                    "</grammar>";
                rec.getGrammarManager().loadGrammar("grammar:STT", null, grammarMarkup);

                // Add the listener to get results
                rec.addResultListener((ResultListener) new STT());

                // Request focus and start listening
                rec.requestFocus();
                rec.resume();

                rec.waitEngineState(Engine.DEALLOCATED); 
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
4

0 に答える 0