android - Android : by Intent or on-thread? 语音识别使用比较

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

介绍

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/

相关文章:

android - android studio中的proguard问题

linux - 从 .seg 文件中提取数据

speech-recognition - 可以在 ML.NET 中进行语音识别吗?

java - 语音到文本识别

android - 如何清除蓝牙输入流缓冲区

java - SharedPreferences 没有被清除 android

android - 如何在Android中顺利展开 View ?

android - 如何将数据从 fragment 发送到另一个 Activity ?

java - 媒体播放器的 Intent 过滤器(Youtube 视频播放)

android - 如何发送带有 putextra Intent 的 android.location.Address