1

特定のキーワードが話されるまでスレッドを一時停止するために sphinx4 を使用しています。これは最初はうまく機能しますが、スレッドを一時停止する必要がある 2 回目は、

recognizer.recognize() 

実行されていないようで、アプリケーションは「話し始める...」というスパムを開始します。

スレッドを一時停止する関数は次のとおりです。

public synchronized void waitForKeyword(String in){


    if (!microphone.startRecording()) {
        System.out.println("Cannot start microphone.");
        recognizer.deallocate();
        System.exit(1);
    }


    Result result = null;

    while(true) {

        if(microphone.isRecording()) {
            System.out.println("Start speaking...\n");  
            result = recognizer.recognize();
        }else{
            microphone.startRecording();
        }

        if (result != null) {
            String resultText = result.getBestFinalResultNoFiller();
            System.out.println("You said: " + resultText + '\n');

            if(resultText.equals(in)){                      
                microphone.stopRecording();
                speak("At your service!");
                break;
            }

        }

    }


}

私は何を間違っていますか? この問題を解決するにはどうすればよいですか?

乾杯!

4

1 に答える 1

2

microphone.clear()最初の使用後に電話する必要があります。OpenJDKで動作します。私はこのユース ケースを示すデモ アプリケーションに取り組んでいます。これは Sphinx4 の次のリリースに含まれる予定ですので、ご期待ください。

于 2013-08-13T01:38:28.927 に答える