0

我正在使用带有 minSDK 14 的 SpeechRecognizer 并添加了一个过滤器以获得最准确的结果。我在 Activity 的 onActivityResult() 中有这段代码。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == VOICE_RECOGNITION && resultCode == RESULT_OK) {

        ArrayList<String> results = data
            .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

        // this is only available in API 14
        String confidenceExtra = RecognizerIntent.EXTRA_CONFIDENCE_SCORES; 
        float[] confidence = data.getFloatArrayExtra(confidenceExtra);

        // My filtering...
    }
}

因为过滤是基于每个结果的置信度,所以我需要这个常量RecognizerIntent.EXTRA_CONFIDENCE_SCORES才能请求置信度。但遗憾的是,这仅在 API 14++ 和 AFAIK 中可用,SpeechRecognition 在支持包中不可用。

有没有办法在较低的 API 级别获得结果的信心?或者是否有一种解决方法可以根据其他值进行一些过滤?

4

1 回答 1

2

与大多数 Android 语音识别 API 一样,“此额外功能是可选的,可能不会提供。” (引用规范)。

我认为即使在较低的 API 级别上检查这个浮点数组也是一个好主意(只是向后移植EXTRA_CONFIDENCE_SCORES常量)。如果与此额外内容对应的浮点数组不存在,则只需回退到假设它EXTRA_RESULTS是按置信度排序的(正如 API 文档所建议的那样)。

于 2013-09-11T07:50:04.553 回答