首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android语音识别活动的启动延迟

Android语音识别活动的启动延迟
EN

Stack Overflow用户
提问于 2011-08-17 00:47:01
回答 2查看 2.3K关注 0票数 3

我正在尝试实现一个Android应用程序,通过文本到语音和Android的语音识别活动与用户进行对话。

下面的代码启动活动,如教程中所记录的

代码语言:javascript
运行
复制
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
        RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo");
startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);

问题是这个活动需要0.5到1秒的时间才能开始录制用户的声音。这看起来并不多,但这通常意味着用户在语音识别活动开始录制之前就已经开始说话了,这意味着应用程序将错过用户所说的部分内容。

是否有一个好的方法来克服这个延迟,以便我可以开始语音识别,一旦文本到语音完成发言?

我考虑过的可能性:

  • 预装Android中的活动,并在开始时暂停它。我不认为有任何方法可以做到这一点,除非我有能力改变活动中的代码,因为它不是Android源代码的一部分。
  • 在语音文本完成之前,调用启动活动的时间。这并不理想,因为它依赖于未定义的行为:语音识别活动需要多长时间才能加载,这可能因系统而异。此外,它还需要知道从文本到语音需要多长时间才能说出一个短语,而这并不是文本到语音API的一部分。
  • 启动语音识别活动,然后暂停正在运行的线程。绝对不推荐。
  • 调用API中没有从我的活动中公开的语音识别活动中公开的方法。我不知道该怎么做,也不确定这是否可能。
  • 实现我自己版本的语音识别活动。这就是我现在正在做的事情,但这绝不是微不足道的事情,我宁愿不用用Java编写自己的FLAC编码器,也不用使用Google的服务器进行语音识别。

如果您有任何其他的想法,这可以如何正确地完成,或一种方法,以解决上述任何一个问题,这将是令人敬畏的。

EN

回答 2

Stack Overflow用户

发布于 2011-08-17 16:59:27

你可以做的一件事是鼓励你的用户说更长的命令。这样,如果他们说得太快,系统就可以识别命令的后面部分。

例如,不让系统识别“打开电子邮件”,您可以鼓励用户这样说“系统打开电子邮件”,如果系统只听到“打开的电子邮件”部分,它仍然可以识别命令。

它可能会给命令添加不必要的单词,但我相信它比让用户暂停更尴尬。正如你所描述的那样,延迟是有问题的。

票数 1
EN

Stack Overflow用户

发布于 2011-08-19 23:08:20

似乎有一种较低层次的方法来控制语音识别活动。

创建一个名为SpeechRecognizer的对象,调用SpeechRecognizer.setRecognitionListener()并传递给它一个RecognitionListener。然后将一个RecognizerIntent.ACTION_RECOGNIZE_SPEECH意图传递给SpeechRecognizer.startListening(),它将开始侦听并执行语音识别,而无需等待弹出。

来自:如何在没有android手机的烦人对话框的情况下使用语音识别?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7086824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档