2012-12-24 222 views
6

[可能重复]但我没有找到我下面的问题的答案。Android:语音识别

我一直在做语音识别的一些研究,在过去两天,我没有得到回答我的问题:

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

你的意思是*语音*识别或*语音*识别? (阅读[标签:语音识别]摘录:“语音识别意味着识别说话的人,并经常误用意思是”语音识别“ - 识别所说的内容。”) –

+2

下次请尝试搜索一个问题一次提出一个问题。这将帮助你找到答案。 –

回答

10

1)它是把语音识别成一个服务,就像是在谷歌的API,在回调方法来得到的结果进行了妥善的做法。为了使其持续运行,服务必须处理能够避免陷入睡眠模式的唤醒锁。一些更多的信息在这里提供Wake locks android service recurring它有一个很大的缺点 - 电池使用率高,CPU的连续工作和传入声音数据的连续计算造成的。 (可以用滤波器,阈值等减少)

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

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

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

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

+0

感谢您的意见。我想开发一个应用程序,当我说帮助时,无论我在哪里,都会自动拨打紧急号码。我可以在巴士,市场或其他地方。我没有得到第一个问题的答案,请告诉他们,如果你有任何投入? –

+0

我更新了我的答案,因此它也涵盖了您的第一个问题,在您的情况下,狮身人面像将会非常快速,而且非常快,因为只需要识别一个单词。 “帮助” – MP23

+0

再次感谢您的意见。关于第四个问题和答案,正如您所提到的,我们需要靠近麦克风说话以获得更好的准确性。假设我在巴士上,我需要一些帮助,因为它太拥挤太嘈杂,它可能无助于识别正确的字? –