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

时间:2013-10-11 00:01:52

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

我有android的Speech To Text 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;
    }

    }
}

2 个答案:

答案 0 :(得分:1)

API有3个EXTRA

但是请注意,API还说“取决于识别器实现,这些值可能没有任何影响”,因此您只需测试您正在使用的实现,如果它们有任何影响。 (我自己没有做过这个测试,所以如果你在报告你的测试结果的答案中添加评论会很棒。)

答案 1 :(得分:1)

在Android 4.1(或Google Search / Now应用程序的用户)之前,这对您有用:

int someValue = 5;
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, Long.valueOf(someValue * 1000L));

不幸的是,后来的版本不再对这个参数作出反应,这是一个非常遗憾的事情,因为它使得冗长的笔记或电子邮件撰写成为不可能....

我已经引起了他们的注意。