1

我有 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;
    }

    }
}
4

2 回答 2

1

API 有 3 个额外的

但请注意,API 还说“根据识别器的实现,这些值可能没有效果”,所以你只需要用你正在使用的实现来测试它们是否有效果。(我自己没有做过这个测试,所以如果你在这个答案中添加评论来报告你的测试结果,那就太好了。)

于 2013-10-11T08:25:04.943 回答
1

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

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

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

我已经提请他们注意这个问题。

于 2013-10-24T03:15:22.457 回答