在Android'中配置说话和暂停的长度;语音识别器

在Android'中配置说话和暂停的长度;语音识别器,android,speech-recognition,speech-to-text,Android,Speech Recognition,Speech To Text,我有android的语音到文本API,可以与手机对话并将其转换为文本。默认情况下,如果用户停止与麦克风通话,API将假定用户已结束通话,并返回输入语音中的文本 对于我的应用程序,用户可能在连续的语句之间有很长的停顿。我如何配置Android的语音到文本API,只考虑当我要求它的结束,而不是当说话者在句子之间稍作停顿的时候就这么做?谢谢 下面是我当前的实现,只要用户在句子之间稍作停顿,就可以将语音转换为文本: @Override protected void onActivityResult(in

我有android的语音到文本API,可以与手机对话并将其转换为文本。默认情况下,如果用户停止与麦克风通话,API将假定用户已结束通话,并返回输入语音中的文本

对于我的应用程序,用户可能在连续的语句之间有很长的停顿。我如何配置Android的语音到文本API,只考虑当我要求它的结束,而不是当说话者在句子之间稍作停顿的时候就这么做?谢谢

下面是我当前的实现,只要用户在句子之间稍作停顿,就可以将语音转换为文本:

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

    switch (requestCode) {
    case RESULT_SPEECH: {
        if (resultCode == RESULT_OK && null != data) {

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

            txtText.setText(text.get(0));
        }
        break;
    }

    }
}
@覆盖
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
开关(请求代码){
个案结果(演讲):{
if(resultCode==RESULT\u OK&&null!=数据){
ArrayList文本=数据
.getStringArrayListExtra(识别器意图.额外结果);
setText(text.get(0));
}
打破
}
}
}

API为此提供了3个额外功能

但请注意,API还表示“取决于识别器实现,这些值可能没有效果”,因此您只需使用正在使用的实现进行测试,看它们是否有任何效果。(我自己还没有做过这个测试,所以如果你在这个答案中添加一条评论来报告你的测试结果,那就太好了。)

在Android 4.1之前(或谷歌搜索/Now应用程序的用户),这对你有用:

int someValue = 5;
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, Long.valueOf(someValue * 1000L));
不幸的是,后来的版本不再对这个参数做出反应,这是一个巨大的耻辱,因为它使冗长的笔记或电子邮件写作成为不可能


我已提请他们注意该问题。

可能重复的问题请不要结束此问题。它显然不同于,而且写得更好。