介绍
Android 为我提供了两种使用语音识别的方法。
第一种方法是通过Intent
, 就像在这个问题中一样:Intent example。一个新Activity
的被推到堆栈的顶部,它倾听用户的声音,听到一些语音,尝试转录它(通常通过云),然后通过onActivityResult
调用将结果返回给我的应用程序。
第二个是通过获取一个SpeechRecognizer
,就像这里的代码:SpeechRecognizer 示例。在这里,看起来语音是在其他线程上录制和转录的,然后回调给我带来结果。这是在不离开我Activity
的情况下完成的。
我想了解这两种语音识别方式的优缺点。
到目前为止我所拥有的
使用Intent
:
- 编码简单
- 避免重新发明轮子
- 在整个设备上提供一致的语音识别用户体验
但
- 使用自己的窗口创建新活动可能会很慢
使用SpeechRecognizer
:
- 让我在我的应用程序中保留对 UI 的控制
- 给了我额外的可能性来回应(文档)
但
- 仅限于从主线程调用
- 更多的控制需要更多的错误检查。