介绍
Android 为我提供了两种使用语音识别的方式。
第一种方法是通过Intent
,如这个问题:Intent example .一个新的 Activity
被推到堆栈的顶部,它听取用户的声音,听到一些语音,尝试转录它(通常通过云)然后将结果返回到我的应用程序,通过 onActivityResult
调用。
第二个是通过获取SpeechRecognizer
,就像这里的代码:SpeechRecognizer example .在这里,看起来语音是在其他线程上录制和转录的,然后回调给我带来了结果。这是在不离开我的 Activity
的情况下完成的。
我想了解这两种语音识别方式的优缺点。
到目前为止我得到了什么
使用Intent
:
- 易于编码
- 避免重新发明轮子
- 在整个设备上提供一致的语音识别用户体验
但是
- 使用自己的窗口创建新 Activity 可能会很慢
使用SpeechRecognizer
:
- 让我保留对应用中 UI 的控制权
- 给我额外的可能性来回应 ( documentation )
但是
- 仅限于从主线程调用
- 更多的控制需要更多的错误检查。
最佳答案
除此之外,我至少要补充一点:
SpeechRecognizer
更适合免提用户界面,因为您的应用实际上可以响应“不匹配”等错误情况,并可能自行重启。当您使用 Intent
时,应用会发出蜂鸣声并显示一个对话框,用户必须按下该对话框才能继续。
我的总结如下:
语音识别器
显示不同的用户界面或根本不显示用户界面。你真的想让你的应用程序的用户界面发出哔哔声吗?您真的希望您的 UI 在出现错误时显示对话框并等待用户点击吗?
应用可以在进行语音识别的同时做其他事情
可以在后台运行时或从 服务
可以更好地处理错误
可以访问原始音频或 RMS 等低级语音内容。分析该音频或使用响度制作某种闪光灯以指示应用正在收听
Intent
- 用户界面一致且易于使用
- 易于编程
关于android - Android : by Intent or on-thread? 语音识别使用比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11913704/