私はインテント経由で SpeechRecognizer を使用しています:
Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
i.putExtra(RecognizerIntent.EXTRA_PROMPT,
"straight talk please");
i.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 5);
i.putExtra(RecognizerIntent.EXTRA_LANGUAGE,
"en-US";
startActivityForResult(i, 0);
そして、次のように onActivityResults() で結果を取得します。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 0 && resultCode == RESULT_OK) {
// List with the results from the Voice Recognition API
ArrayList<String> results = data
.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
// The confidence array
float[] confidence = data.getFloatArrayExtra(
RecognizerIntent.EXTRA_CONFIDENCE_SCORES);
// The confidence results
for (int i = 0; i < confidence.length; i++) {
Log.v("oAR", "confidence[" + i + "] = " + confidence[i]);
}
}
super.onActivityResult(requestCode, resultCode, data);
}
ただし、float 配列は結果として常に 0.0 を返しますが、最初の要素は次のようになります。
confidence[0] = any value between 0 and 1
confidence[1] = 0.0
confidence[2] = 0.0
and so on
私は、すべての結果が 0 から 1 の間の信頼値を持つことを期待していますEXTRA_CONFIDENCE_SCORES
。足りないものはありますか?
さらに はRecognizerIntent.EXTRA_CONFIDENCE_SCORES
で使用されることになっていますAPI Level 14++
。しかし、8を超えるどのAPIを使用しても、結果は同じままです。その時点でドキュメントは古くなっていますか?