先列出困难,然后依次分析。
1、语音激活检测(voice active detection,VAD)
2、语音唤醒 (voice trigger,VT)
3、回声消除(Echo Cancelling)
4、低信噪比(signal to noise ratio, SNR)和 混响 (Reverberation)
5、鸡尾酒会问题(cocktail-party problem )
6、关于语音识别的未来
1、语音激活检测(VAD),顾名思义,指的就是判断什么时候有语音什么时候没有语音(静音)。后续的语音信号处理或是语音识别都是在VAD截取出来的有效语音片段上进行的,这样可以极大的减少计算量,同时也能减少噪声误识别等情况。
在近场识别的时候,这个算法可有可无:比如语音输入法中可以用手按着说话按键说话,结束之后松开。即便有,也可以做的比较简单:例如可以用能量、音高、过零率等方式进行判断。因为近场情况下信噪比(SNR)比较高,信号清晰,简单算法也可以做到有效可靠。
远场识别情况下不能用手接触设备,必须使用VAD。这时噪声比较大,SNR下降剧烈,这种情况下传统的方法效果不理想。近几年深度神经网络(deep neural netword,DNN)火热,基于DNN(包括DNN, CNN, RNN)的语音系统成为标配,因此VAD使用DNN来做也合情合理。但即便是这样,仍然有很大的挑战,简单的如:开关门的声音、鼓掌、跺脚、宠物叫声,困难的如:电视的声音、多人的交谈声等等。所以VAD仍然是远场语音识别的一个研究话题。
2、语音唤醒(VT),可以理解为喊名字,引起听者的注意。比如苹果的“hey Siri”,google的“OK google”,以及亚马逊echo系列产品的“Alexa”等。VT的目的是告诉机器人(或手机),接下来的话是对你讲的哦,认真听好了。VT通常是在VAD检测到人声之后进行工作,他要判断人说的话是不是激活词(激活词就是上面的“hey Siri”、“OK google”以及“Alexa”等),如果是激活词,那么后续的语音就进行识别,否则后续的语音不进行处理。语音识别,不论是远场还是近场,基本都是在云端的,这样可以使用大模型,服务器的高速计算等优势获得好的识别结果。而VT基本是在本地设备上,因此它的要求更高。技术难点具体体现在以下几个方面:
a)功耗要低。iphone 4s出现Siri,但直到iphone 6s之后才允许不接电源的情况下直接喊“hey Siri”进行语音唤醒,在此之前都需要接入电源的情况下进行语音唤醒。这是因为有6s上有一颗专门进行语音激活的低功耗芯片,当然算法和硬件要进行配合,算法也要进行优化。
b)计算量要小。计算量小一方面是低功耗的要求,另一方面要是实时率的要求。即1s的语音至少要在1s之内计算完毕,这样才能保障可实用。
c)唤醒效果。理想状况下的效果是喊它的时候它立马就能相应,不喊它的时候它乖乖的不要插话。但人生不如意十之八九,喊它的时候它不答应这叫做漏报,没喊它的时候它跳出来讲话叫做误报。漏报和误报这俩老兄是此消彼长的关系:比如唤醒词很长有10个字,那么误报肯定小,但同时漏报也就多了,喊了好几次都不理你是不是很气人?!再比如唤醒词很短只有一个字,这个时候漏报是少了,每次喊都很快回应你,但是误报也多了呀,大半夜突然跳出来说几句话那也是相当惊悚的。因此起名字也很关键,通常名字越短,越困难。比如“OK google”和“Alexa”有四个音节,“hey Siri”有三个音节。因此,起一个朗朗上口,百喊不厌的名字也能从侧面体现出算法水平。
3、回声消除(Echo Cancelling)是全双工通信中的一个名词,即在播放的同时可以拾音。近场环境下,播放音乐或是语音播报的时候可以按键停止这些,但远场环境下想要通过语音控制,必须得实现回声消除。回声消除的难点在于它要和智能设备的音响效果之间有一个平衡和折中。如果音响设备重低音比较好,振动就会加剧,这样麦克风的拾音效果就要大打折扣。另外音响离麦克风的距离也会对拾音有影响。Amazon的echo长的很高,音响在最下面,麦克风在顶上的设计也是为了更好的实现回声消除。想google home这样设计成矮个子,对算法的要求就很高了。总之,硬件的设计对
回声消除或者说对拾音有较大的影响。amazon今年相继开放了算法的SDK和硬件的7mic设计,也印证了算法和硬件是高度耦合的。如果想要自己从头设计,反复的对比和验证是避免不了的。
4、低信噪比(signal to noise ratio, SNR)和 混响 (Reverberation)。远场环境要求拾音麦克风的灵敏度高,这样才能在较远的距离下获得有效的音频振幅,同时近场环境下又不能爆音(振幅超过最大量化精度)。这样的环境下,噪音必然会很大,从而使得语音质量变差,即SNR降低。另外作为家庭助手,家庭环境中的墙壁反射形成的混响对语音质量也有不可忽视的影响。为了对语音信号进行增强,提高语音的SNR,远场语音识别通常都会采用麦克风阵列。amazon的echo采用了6+1的设计(环形对称分布6颗,圆心中间有1颗),google home目前采用的是2mic的设计。在算法方面,基于麦克风阵列的波束形成(beamforming)技术已经有很多年的发展,最新的一些论文里有提到使用使用DNN来替代波束形成,实现语音增强。但效果仍然还有很大的提升空间,尤其是背景噪声很大的环境里,如家里开电视、开空调、开电扇,或者是在汽车里面等等。
5、鸡尾酒会问题(cocktail-party problem )是指有多个说话人情况下的语音识别问题,比如鸡尾酒会上很多人讲话。这种情况下人是有可能听清楚你关注的人在说什么的,当然手势、口型、表情以及聊天话题都会提供帮助。这种环境下的语音识别是相当有挑战的。波束形成技术是解决这个问题的一个有效手段。但是当几个说话人距离比较接近的时候,波束形成也无能为力。这个问题其实在很早以前就有相关的研究,叫做语音分离(speech separation)。有一个接近的名词叫做语音分割(speech segmentation),是指语音没有重叠,一个人说完另外一个人说,需要把语音切分成片段,然后每个片段只包含一个说话人,然后把同一个说话人的语音片段聚类到一起就行了。语音分离相对来说更难一些,是指多个说话人同时说话,语音有重叠,这种情况下将每个人的原始语音恢复出来相当有难度。典型的应用场景有多人会议的语音识别,party中的语音识别等。
传统的做法多是在单通道的情况下尝试解决这个问题,为的是避开波束形成带来的场景分类。典型的算法有computational auditory scene analysis (CASA),Non-negative matrix factorization (NMF) ,deep clustering (DPCL) ,deep attractor network (DANet) 等。2016年微软的俞栋博士发表的论文(Morten Kolbæk ,etc,2016)巧妙的利用DNN获得了一个不错的结果,他们团队在2017年的ICASSP上发表的论文(Dong Yu, etc, 2017)更是讲分离和识别做到了一个模型里面。但是从结果来看,性能还有提升的空间。另外如果把单通道的语音分离技术和麦克风阵列想结合,效果应该能够再提升一个档次。
6、关于语音识别的未来,我们就要聊聊题主提到的远场语音识别是否会成为主要战场。个人观点是未来的3年左右远场语音识别会是语音识别主要的战场。人工智能(AI)是近年的投资热潮,或许可以把deep mind的Alpha GO看做是起点。但目前AI远远没有达到人们对他们的预期那么智能。家庭语音助手作为一个切入点,可以让我们体验AI带来的优质生活。家庭语音助手的下一个阶段是智能家居,当然智能家居的概念已经提出很多年了。就目前的市场情况来看,仍然是各自为战。这个状况大概还会持续一段时间。在此之前,家庭语音助手,或者说远场语音识别仍然会是主要的语音识别场景。
语音作为一种重要的交互方式,它是不可或缺的,但并非所有的情况下它都是最便利的。《钢铁侠》中的智能助手贾维斯是家庭智能助手的目标,显然除了语音之外,显示屏和手势控制也是非常高效的交互手段。而语音助手,除了家庭助手之外,就像电影《Her》中想象的一样,将来可能会成为真正的助手,与你形影不离,这时或许又多了室外这样的一个场景。
参考文献:
1、Morten Kolbæk, etc. Multi-talker Speech Separation and Tracing with Permutation Invariant Training of Deep Recurrent, 2016
2、Dong Yu, etc. Recognizing Multi-talker Speech with Permutation Invariant Training, 2017