キーワードリストと相対的なしきい値に基づいて連続キーワード検索をテストするpocketsphinx androidデモを変更しています。複数の一致が見つかったときにSegmentListを繰り返し処理できません
edu.cmu.pocketsphinx.RecognitionListenerを実装したときのonResultメソッドの文字列を hypothesis.getHypstr()
とすると、一致する可能性のあるリストが含まれます。
私はこのように行うことが可能であるひとつひとつの試合を取得し、その重みにhereをお読みください。hypothesis.getHypstr()
は、より多くのを示しながらSEGMENTLISTが空だった場合、私のコードの実行のようなセグメントを反復処理されることはありませんが
for (Segment seg : recognizer.getDecoder().seg()) {
System.out.println(seg.getWord() + " " + seg.getProb());
}
1つのマッチより。
public void onEndOfSpeech() {
switchSearch(KWS_SEARCH);
}
public void onResult(Hypothesis hypothesis) {
if (hypothesis != null) {
for (Segment seg : recognizer.getDecoder().seg()) {
//No iteration is done here!!!
Log.d("onResult", seg.getWord() + " " + seg.getProb());
}
String text = hypothesis.getHypstr();
makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();
}
}
:私onPartialResult
方法は、一方で何もしていない
rainbow /1e-50/
about /1e-50/
blood /1e-50/
energies /1e-50/
:より多くの試合を簡単に見つけられるように、私は非常に低いtresholdsで、このキーワードリストを使用している場合を再現する
例えば、 "energies"と答えた場合、hypothesis.getHypstr()
= "blood about energy blood"ではなく、SegmentListに対して反復処理が行われません。つまり、onResultメソッドの先頭にブレークポイントを置くことで確認できます。
提案がありますか?
ありがとうございました
ほとんどの場合、繰り返されますが、何も印刷しません。また、仮説内でループを移動する必要があります!= null条件。 –
ありがとう@Nikolay、私は標準出力の出力を探しているのではなく、代わりに私はコードをデバッグしているブロックは入力されません。あなたは正しい?私は仮説を移すだろう!= null条件だが、とにかくデバッグしている間に、次のブロックが入力されているため仮説がヌルでないことがわかる。 – salvolds