onPartialResult
メソッドを使用してhypotesis
、興味のあるキーワードの 1 つであるかどうかを調べていますが、うまく機能しています。
これが私のコードです:
@Override
public void onPartialResult(Hypothesis hypothesis) {
Log.d(TAG, "onPartialResult");
if (hypothesis == null) {
return;
}
String text = hypothesis.getHypstr();
String wordWithProb = "";
String mostProbableWord = "";
int probability = -10000;
if (text.contains("|")) {
for (Segment seg : recognizer.getDecoder().seg()) {
wordWithProb += "|" + seg.getWord() + " " + seg.getProb() + "|";
if (seg.getProb() > probability)
mostProbableWord = seg.getWord().trim();
}
}
else
mostProbableWord = text.trim();
Log.i(TAG, "onPartialResults: " + mostProbableWord);
String recognizedCommand = "Please repeat";
if (mostProbableWord.equals("one")) {
//do something...
} else if (mostProbableWord.equals("two")) {
//do something...
} else if (mostProbableWord.equals("three")) {
//do something...
}
//text to speech
speak(recognizedCommand);
startListening(KWS_SEARCH);
}
ここで、ユーザーが何かを言い、それがキーワードとして認識されない場合を処理したいと思います。この場合、onPartialResult
メソッドの仮説は常に次のnull
とおりです。これは予想されますか? ここでnullでない仮説を期待していました...メソッドがポケットフィンクスによって継続的に自動的に呼び出される
ことを考慮すると(空中に音がない場合も)、仮説を運転条件として使用することはできません。
さらに、すべての認識の後にテキスト読み上げがあるため、認識リスナーの再起動は慎重に処理する必要があります。テキスト読み上げが進行中の間、認識エンジンはリッスンしてはいけません...
いくつかの解決策を試しましたが、今まではどれもうまくいきませんでした...何か案が?onPartialResult
null
onEndOfSpeech