从语音识别器中获取类似于Google即时返回的结果的短语

时间:2015-06-25 18:01:21

标签: android speech-recognition speech-to-text

我正在构建我的应用程序的一项功能,该功能应该允许用户说出一个短语,然后将该短语与另一个用户说的短语进行比较,以确定它们是否相等。我从语音识别器意图中得到如下结果。

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
 {
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {

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

当我试着说&#34;测试123&#34;我找回了一个填充了&#34;测试123,测试一两三,Piscon 123&#34;

的阵列

有没有办法我只能从结果中提取最准确的短语,例如&#34;测试123&#34; ?当我使用Google Now进行搜索时,只会最准确地表示我所说的内容,因此我想知道是否可以实现此功能。

我试过了#34;你能跳得多高&#34;并得到了这个结果。有没有办法在某种程度上确定下一句话的开头,这样我才能提取最积极的结果?

enter image description here

1 个答案:

答案 0 :(得分:1)

如果您想获得最准确的信息,那么您也希望获得EXTRA_CONFIDENCE_SCORES。您希望找到最高置信度分数和相应的字符串值。从documentation

  

public static final String EXTRA_RESULTS

     

在API级别3中添加   执行ACTION_RECOGNIZE_SPEECH时的识别结果的ArrayList。通常,该列表应按语音识别器置信度的降序排序。 (参见EXTRA_CONFIDENCE_SCORES)。返回结果;不在识别请求中指定。仅在活动结果中返回RESULT_OK时出现。在PendingIntent中,缺少此额外表示失败。

和信心分数:

  

public static final String EXTRA_CONFIDENCE_SCORES

     

在API级别14中添加   执行ACTION_RECOGNIZE_SPEECH时,识别结果的置信度得分的浮点数组。该数组的大小应与EXTRA_RESULTS中返回的ArrayList相同,并且应包含0.0到1.0之间的值,或-1表示不可用的置信度分数。

     

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

     

返回结果;不在识别请求中指定。此附加信息是可选的,可能不提供。仅在活动结果中返回RESULT_OK时出现。