Java 狮身人面像4:recognize()赢得';不要再跑了

Java 狮身人面像4:recognize()赢得';不要再跑了,java,speech-recognition,keyword,sphinx4,Java,Speech Recognition,Keyword,Sphinx4,我正在使用sphinx4暂停线程,直到说出特定的关键字。这在第一次使用时效果很好,但第二次我需要暂停线程时 recognizer.recognize() 似乎没有运行,应用程序只是开始滥发“开始说话…” 以下是暂停线程的函数: public synchronized void waitForKeyword(String in){ if (!microphone.startRecording()) { System.out.println("Cannot start

我正在使用sphinx4暂停线程,直到说出特定的关键字。这在第一次使用时效果很好,但第二次我需要暂停线程时

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;
            }

        }

    }


}
我做错了什么,如何解决这个问题


干杯

首次使用后必须调用
麦克风.clear()
。我用OpenJDK工作。我正在开发一个演示此用例的演示应用程序,它应该包含在Sphinx4的下一个版本中,所以请继续关注。

提供有关操作系统和JDK的信息。请确保您正在使用Oracle JDK,其他人无法正确使用麦克风。Windows 7 home premium 64位。Orcale JDK1.7.0_17。