特定のキーワードが話されるまでスレッドを一時停止するために 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;
}
}
}
}
私は何を間違っていますか? この問題を解決するにはどうすればよいですか?
乾杯!