作者:james
 
1. 简介

  近些年来,随着语音识别技术的快速发展,类似Siri,搜狗语音助手这样的利用语音实现控制,语义理解的系统开始大量涌现。但是,大多数此类应用都需要用户点击按钮来启动系统,在一些场合、如驾驶汽车过程中,不便于用户使用。

  语音唤醒就是为了解决此类需求而产生的功能。在系统中加入语音唤醒的技术,用户不需要与设备产生物理解除,只需要说出关键字,如“打电话”,系统即可启动。

  语音唤醒系统的评测标准通常包括误识率和拒认率两个部分。 误识率指用户未发出命令,但系统却错误的被唤醒的情况。拒认率指用户发出了唤醒命令,但系统却没有相应的情况。误识率和拒认率越低,证明系统越稳定。

2. 相关产品

  当前市场上的相似产品有安徽科大讯飞公司的讯飞语点,其包含语音唤醒的功能。但是其实现方案未公开。经实际测试,讯飞语点在绝大多数情况下都能准确识别用户唤醒的命令,即拒认率很低。但是在嘈杂的环境中,经常会出现被错误唤醒的情况、即用户并未发出唤醒的命令,但系统却被唤醒的情况, 即系统的误识率还有改进的空间。

  我们提出了一种语音唤醒的方法。在实际测试中,本发明表现出了与讯飞语点相当的拒认率,同时表现出了更好的误识率。

3. 在产品中的应用

  在即将推出的微信电话本中,我们首次应用了这项技术。 当微信电话本运行时(后台或前台),用户只需要说“打电话”, 微信电话本就会启动,询问用户要打给谁,用户只需要说出名字,即可完成拨号的功能。流程如下图所示:
 

 

4. 算法概述

图1语音唤醒系统的总体框架图


  如图1所示为语音唤醒系统的整体框架图,其中离线过程是指离线的在服务器上提前构建好资源的过程,它包括了背景声学模型训练、前景声学模型训练、构建解码网络三部分。在线过程指的是运行在客户端上的程序。它接收用户的语音,在检测到人类的声音时把相应的语音信号送入识别器进行识别,由识别器判别用户说出的内容,识别结果就是命令词,那么唤醒系统,否则的话继续保持休眠状态。


  系统的前景模型直接使用LVCSR(大词汇量连续语音识别)中所用到的Tri-phone声学模型,背景模型使用LVCSR的Mono-phone声学模型,再结合输入的关键词生成对应的解码网络。在这个过程中系统只保留声学模型中用到的部分,因此可以极大的降低声学模型的大小,以满足嵌入式设备的需求。


  VAD即语音活动检测(voice activity detection)也称静音检测,语音端点检测等主要将噪声语音信号中的语音/非语音部分检测出来,并找出语音的起点和终点,常用的语音活动检测的算法有基于能量,过零率,基频。谐波等等。其中最常用的方法是基于能量的方法,因为这种方法可以应用到不同环境。语音活动检测主要分为两部分:第一部分是特征提取,表示的是语音存在的可能性;第二部分是语音/非语音判决机制,确定语音是否存在。本发明中使用基于能量的方法。


  解码器使用的是经典的Token Passing算法。在嵌入式环境下,为了提高速度,减小解码器所占用的内存,只需要保留最优解即可。如果最优解中包含了命令词,那么就认为用户说出了命令词,系统被唤醒,否则的话认为用户没有说出命令词。

 

 

图2. 唤醒系统工作流程图

  图2说明了唤醒系统的工作流程。用户启动唤醒系统的时候开始录音,将采集的声音送到VAD模块,由VAD检测是否有语音开始(用户说话)。如果没有检测到有人说话,那么就继续等待下一段语音。如果检测到了开始,那么就进入下一个状态,开始检测语音是否结束。在检测到语音结束(用户说话结束)之前,即用户还在不断说话的过程中,不断的把语音送入解码器进行识别。当检测到语音结束时, 从解码器提取识别结果,并查看结果中是否包含相应的命令词。 如果结果中包括了命令词,那么唤醒系统;否则的话继续保持休眠状态。


5. 结论


  本文提出了一种简单有效的实现语音唤醒的技术。该技术所使用的模型是大规模连续语音识别技术中所产生的模型,无需为该技术定制模型,节省了研发成本与开销;所用到的解码器也是由LVCSR简单定制而来,在加快研发进度,降低风险的同时,满足了用户的需求。此外,该系统还可支持少量命令词的识别,并能达到较好的效果。