Android语音识别置信度

时间:2013-07-28 19:04:59

标签: android speech-recognition

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

2 个答案:

答案 0 :(得分:1)

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

String yourInputString = "string";
String output = "template string \"" + yourInputString + "\"";

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

@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");
    }
}

答案 1 :(得分:0)

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

  

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

     

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

     

此值是可选的,可能未提供。

请注意,不保证在那里。检查它并使用(如果有的话)。赌博,如果没有。