Android:语音识别

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

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

>是否可以将语音识别作为服务运行?我想实现这样的事情:虽然我的手机通过语音识别处于睡眠模式,但我需要拨打电话.
>当我乘坐火车,公共汽车等时,语音识别是否能正常检测?
>除语音识别外,是否有任何传感器可以检测语音?
>要使语音识别正常工作,用户是否需要靠近手机说话?

解决方法

1)将语音识别放入服务是正确的方法,就像它在Google Api中制作一样,其中回调方法用于获取结果.为了使其连续运行,服务必须处理将避免陷入睡眠模式的唤醒锁.这里提供了更多信息 Wake locks android service recurring它有一个很大的缺点 – 电池使用率高,由于cpu的连续工作和输入声音数据的连续计算. (可以通过过滤器,阈值等减少)

2)语音识别不是一项简单的任务.它需要大量的计算和数据来参考.如果输入音频不清晰(噪音,许多人声等),则很难获得正确的输出.可以做的更好的准确性是,滤波输入音频:噪声抑制,低通滤波器等.您不能期望100%的准确度,但可以实现80-95%.

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

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

处理语音识别的最简单方法是使用Google Speech api,它非常好,它能识别大量语言但需要互联网连接 – 而且需要一段时间才能获得结果.CMU Sphinx更快,但它的语言模型很少,需要更多的RAM内存和proccesor计算,因为所有的解码都是在设备上完成的.在我的意见中,当dicitionary(被识别的词)像命令(左,右,后,停,开等)一样小时非常好.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...