安卓:语音识别

2024-01-16

[可能重复]但我没有找到下面问题的答案。

这两天我一直在研究语音识别,但没有得到问题的答案:

  1. 是否可以将语音识别作为服务来运行?我想实现这样的事情:尽管我的手机通过语音识别处于睡眠模式,但我需要拨打一个号码。
  2. 当我在火车、公共汽车等地方时,语音识别功能是否可以正常检测单词?
  3. 除了语音识别之外,还有什么传感器可以检测语音吗?
  4. 为了使语音识别正常工作,用户是否需要靠近手机说话?

1)将语音识别放入服务中是正确的方法,就像在 Google api 中所做的那样,其中使用回调方法来获取结果。为了使其连续运行,服务必须处理唤醒锁,以避免陷入睡眠模式。这里提供了更多信息唤醒锁android服务重复出现 https://stackoverflow.com/questions/5286947/wake-locks-android-service-recurring它有一个很大的缺点 - 由于 CPU 的连续工作和传入声音数据的连续计算而导致电池使用率较高。 (可以通过过滤器、阈值等来减少)

2)语音识别不是一项简单的任务。它需要大量的计算和数据可供参考。如果输入音频不清晰(噪音、许多人声等),则很难获得正确的输出。为了提高准确度,可以对输入音频进行过滤:噪声抑制、低通滤波器等。您不能期望 100% 的准确度,但可以达到 80-95%。

更难的是过滤许多人的声音。但是可以使用一些简单的幅度(音频强度级别)算法,其具有自适应阈值来决定单词何时开始和结束。想法是,正确的声音是最响亮的=最接近电话/设备的。所以根据4)当用户靠近麦克风说话时,准确性会更好,因为这是最大的声音。

3)我不知道你所说的传感器是什么意思,但有一些算法可以简单地检测人声而不是解码单词。这些算法称为语音活动检测 (VAD) 一些代码应在 Speex 项目文档中找到http://www.speex.org/ http://www.speex.org/

处理语音识别的最简单方法是使用 Google Speech api,它非常好,它可以识别多种语言,但需要互联网连接 - 并且需要一段时间才能获得结果。
CMU Sphinx 更快,但它的语言模型很少,需要更多 RAM 内存和处理器计算,因为所有解码都是在设备上进行的。在我看来,当字典(被识别的单词)像命令(左、右、后退、停止、开始等)一样小时,它非常好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

安卓:语音识别 的相关文章

随机推荐