我正在使用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;
            }

        }

    }


}


我在做什么错,我该如何解决这个问题?

干杯!

最佳答案

首次使用后,您必须呼叫microphone.clear()。适用于OpenJDK。我正在开发一个演示此用例的演示应用程序,它应包含在Sphinx4的下一版本中,敬请期待。

10-06 10:53