7

SpeechRecognizer は、onPartialResults() コールバックで部分的な結果を返しているときに、デバイスがオフラインのときに onResults で ERROR_NO_MATCH を返します。前回 SpeechRecognizer をいじったときは、オフラインで正常に動作していましたが、誰か解決策を見つけたのではないでしょうか。

4

2 に答える 2

3

答えをもう少し明確にするために、最初に部分的な結果を有効にし、特定の方法で UNSTABLE_TEXT を呼び出す必要があります。

// When creating the intent, set the partial flag to true
intent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS,true); 

// When requesting results in onPartialResults(), the UNSTABLE_TEXT parameter to getSTtringArrayList() must be in quotes
ArrayList<String> unstableMatches = partialResults.getStringArrayList("android.speech.extra.UNSTABLE_TEXT");

onPartialResults() は複数回呼び出され、onError() は引き続き ERROR_NO_MATCH で呼び出されます。ここにリストされているものと同様のソリューションを使用することになりました:

手短に:

  • 部分的な結果とエラーが表示されたかどうかを追跡する
  • onBeginningOfSpeech() で両方をリセットします
  • onPartialResults() が呼び出されたときに、部分的な結果を変数に格納します
  • onError() が呼び出されたら、結果が ERROR_NO_MATCH かどうかを確認し、SpeechRecognizer.RESULTS_RECOGNITION を「android.speech.extra.UNSTABLE_TEXT」と組み合わせて、部分結果変数に入れます。
  • onResults() を呼び出す
于 2016-01-21T19:12:06.127 に答える