我正在构建我的应用程序的一项功能,该功能应该允许用户说出一个短语,然后将该短语与另一个用户说的短语进行比较,以确定它们是否相等。我从语音识别器意图中得到如下结果。
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;并得到了这个结果。有没有办法在某种程度上确定下一句话的开头,这样我才能提取最积极的结果?
答案 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时出现。