2

当 android 文本到语音功能将音频波转换为文本时,是否可以确定口语文本的“置信度”?因此,例如,如果有人说话离麦克风太远,而安卓设备接收到失真的声音,它是否会同时输出翻译文本以及低置信区间来表示不确定该特定翻译的准确度。

4

2 回答 2

1

如果您正在实现 RecognitionListener,请从我的 onResults 方法中检查此代码片段。

@Override
public void onResults(Bundle results) {
    String LOG = "SpeechRecognizerActivity"
    Log.d(LOG, "onResults");
    ArrayList<String> strlist = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
    float [] confidence = results.getFloatArray(SpeechRecognizer.CONFIDENCE_SCORES);
    for (int i = 0; i < strlist.size(); i++) {
        Log.d(LOG, "result=" + strlist.get(i));
    }
    Log.d(LOG + " result", strlist.get(0));
    if (confidence != null){
        if (confidence.length > 0){
            Log.d(LOG + " confidence", String.valueOf(confidence[0]));
        } else {
            Log.d(LOG + " confidence score not available", "unknown confidence");
        }
    } else {
        Log.d(LOG, "confidence not found");
    }
}

除非将其添加到识别器意图中,否则您将看不到任何内容:

iSpeechIntent.putExtra(RecognizerIntent.EXTRA_CONFIDENCE_SCORES, true);
于 2015-05-13T05:19:42.620 回答
0

是的。在返回Bundle的 中,有一个名为 的浮点数组CONFIDENCE_SCORES。从文档:

用于从传递给 onResults(Bundle) 和 onPartialResults(Bundle) 方法的 Bundle 中检索浮点数组的键。该数组应与 RESULTS_RECOGNITION 中提供的 ArrayList 大小相同,并且应包含范围从 0.0 到 1.0 的值,或 -1 表示不可用的置信度分数。

接近 1.0 的置信度值表示高置信度(语音识别器确信识别结果是正确的),而接近 0.0 的值表示低置信度。

此值是可选的,可能不会提供。

请注意,它不能保证在那里。检查并使用(如果存在)。不赌就赌。

于 2013-07-30T19:15:25.337 回答