[可能重复]但我没有在下面找到我的问题的答案.
我过去两天一直在做一些关于语音识别的研究,但我没有得到我的问题的答案:
>是否可以将语音识别作为服务运行?我想实现这样的事情:虽然我的手机通过语音识别处于睡眠模式,但我需要拨打电话.
>当我乘坐火车,公共汽车等时,语音识别是否能正常检测?
>除语音识别外,是否有任何传感器可以检测语音?
>要使语音识别正常工作,用户是否需要靠近手机说话?
解决方法
1)将语音识别放入服务是正确的方法,就像它在Google api中制作一样,其中回调方法用于获取结果.为了使其连续运行,服务必须处理将避免陷入睡眠模式的唤醒锁.这里提供了更多信息
Wake locks android service recurring它有一个很大的缺点 – 电池使用率高,由于cpu的连续工作和输入声音数据的连续计算. (可以通过过滤器,阈值等减少)
2)语音识别不是一项简单的任务.它需要大量的计算和数据来参考.如果输入音频不清晰(噪音,许多人声等),则很难获得正确的输出.可以做的更好的准确性是,滤波输入音频:噪声抑制,低通滤波器等.您不能期望100%的准确度,但可以实现80-95%.
更难的是过滤许多人类的声音.但是可以使用一些具有自适应阈值的简单幅度(音频强度等级)算法来决定何时字开始和结束.想法是正确的声音是最响的=最接近电话/设备.因此,根据4)当用户靠近麦克风讲话时,准确性更好,因为它是最响亮的声音.
3)我不知道你的意思是传感器,但有一些算法可以简单地检测人类的声音,而不是解码单词.这些算法称为语音活动检测(VAD).某些代码应在Speex项目文档@L_301_1@中找到
处理语音识别的最简单方法是使用Google Speech api,它非常好,它能识别大量语言但需要互联网连接 – 而且需要一段时间才能获得结果.CMU Sphinx更快,但它的语言模型很少,需要更多的RAM内存和proccesor计算,因为所有的解码都是在设备上完成的.在我的意见中,当dicitionary(被识别的词)像命令(左,右,后,停,开等)一样小时非常好.
@H_403_9@ @H_403_9@ 原文链接:https://www.f2er.com/android/310456.html