我使用带有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级别中获得结果的信心?或者是否有工作要根据其他值进行一些过滤?
答案 0 :(得分:2)
与大多数Android语音识别API一样,&#34;此附加信息是可选的,可能不会提供。&#34; (引自规范)。
我认为即使在较低的API级别(仅向后移动EXTRA_CONFIDENCE_SCORES
常量),检查此float数组也是个好主意。如果不存在与此额外对应的float数组,那么只需假设EXTRA_RESULTS
是置信的(如API文档所示)。