本文参考自 Machine Learning Journal:https://machinelearning.apple.com/2018/12/03/optimizing-siri-on-homepod-in-far-field-settings.html
关于HomePod
HomePod是苹果推出的内置Siri智能音箱。当地时间2017年6月5日,苹果开发者大会2017正式推出了Siri智能音箱HomePod。搭载6个麦克风阵列,4英寸低音炮,底部配有7个扬声器阵列,内置Apple A8处理器。
首先看一下HomePod的内部结构及用途。Why?因为看了结构才能发现问题,发现了问题才有优化的必要。直接上图:
图片可能不是很清晰,这是网上能找到最清晰的了。。顶部是A8芯片,中间是6个麦克风阵列,底部是扬声器阵列。发现问题了没?扬声器和麦克风离得太近了,试想一下,如果在你的耳朵上贴上两个100分贝以上的扬声器(如果现实的话),你自己说的话你还能听见么?
再就是HomePod的使用场景,它是在室内使用的,如下图:
室内可能有很多噪声源,比如空调、电视等,再有就是声音反射造成的回声。在多个声源之下去辨别一种声源也不是很容易。
在以上情况下,按照常理你喊一句“Hey Siri”,这个智障应该是没有反应的,但是我在入手HomePod以后测试了一下,HomePod正在播放音乐并且我的电视在运行的情况下,在接近房间对角线的距离我正常语速和语调喊了一声“Hey Siri”,这家伙竟然识别出来了,我后面的语音指令也被正常的识别并执行。
中间肯定有优化的算法,查了查资料,苹果处理的相当之专业。
HomePod远场语音识别增强VS其它远场语音识别增强
其实优化的目标很明确:刨除所有杂音,让Siri识别器只接受来自指令发出者的语音信号。也就是所谓的语音增强。
HomePod内置了一个多通道信号处理系统,这个多通道信号处理系统主要使用了以下方法:
1)利用深度学习去除回波和背景噪声的基于掩模的多通道滤波;
2)无监督学习分离同步声源并触发基于短语的流选择以消除干扰语音。
先来看看其他的处理系统是怎么做的。以及HomePod为什么不能用这些技术。😁😁😁
1)其他的语音识别增强处理系统通常使用多麦克风处理来增强语音,但往往只关注了问题的一部分,诸如去除混响和噪声抑制。回溯到上古时代,为了抑制不期望的信号成分,语音增强系统必须使用有监督或无监督的学习方法学习期望和不期望的信号特征。学习完了,这样再来一段声音,它就可以根据之前学习的经验来判断。近年来,由于深度学习的崛起,语音增强性能有了很大的提高。例如,最前沿的技术是用驱动多通道噪声抑制滤波器的深度神经网络(DNN)学习语音存在概率。然而,这些系统通常是建立在这样的假设下:在运行时能获取到完整的语音表达,并且系统执行批处理语音命令期间得能利用所有的语音样本。但是一旦涉及全部,就必定会增加延迟,并且不适用于家庭助理设备(像HomePod)上的以“始终监听”(因为你不知道用户什么时候会说“Hey,Siri”,所以你得实时监听)为模式的语音增强技术。对于HomePod来说,批量语音增强系统的假设是不现实的,因为声学条件是不可预测的,为啥?因为每个用户的声音事先苹果在训练模型时是不知道的,而且HomePod也不像iPhone X一样自带神经网络引擎,像FaceID学习用户面部一样去学习用户的声音。
2)另外,当另一个活跃的谈话者,如一个人或一台电视,与目标谈话者在同一个房间时,远场语音识别变得更具挑战性。在这种情况下,如果语音命令没有与干扰的语音组件分离,则语音触发检测、语音解码和端点指向可能会大大降低。传统上,研究人员要么使用无监督的方法处理语音源分离,比如PCA和聚类,要么使用深度学习。不幸的是,这些理技术在远程语音命令驱动接口(例如,HomePod的“Hey,Siri”)中的可用性非常有限。此外,声源分离对语音触发检测的影响,以及和“Hey,Siri”一起使用的影响,以前从未被苹果研究过,风险较大。
下面就说说HomePod的语音识别增强系统和语音信号模型。
HomePod语音识别增强系统和语音信号模型
首先说说语音信号模型吧,有以下式子:
看上去非常唬人,对不对?查了以下苹果技术文档中对于这个式子的描述,其实不难理解。
首先看等式左边这个Yk[n],其中Yk代表麦克风接收的总信号,其中包括杂音、竞争谈话者(上边说的TV、其他人)、回声、多频道混响。这个n代表时间的索引,比如第一秒、第二秒等等。所以整个 Yk[n]代表在特定时刻的麦克风接收的总信号。
看了左边的,是不是对等式右边也有了一定了解了呢?因为是加法么,所以右面肯定是杂音+多频道混合+...等等。第一个加数中参数解释一下:NX代表NX个信号频道,l代表响应时间的索引,Hk代表从扬声器发送给麦克风的多频道响应,Xk代表NX个频道的音频反馈信号。所以第一个加数代表着从扬声器发送给麦克风的信号;第二个加数中Gk代表着从语音源发送给麦克风的多频道响应,NS代表NS个语音源,p代表着响应时间的索引,Sk代表着NS个语音源。所以第二个加数代表着所有语音源发送给麦克风的信号。第三个加数就很简单了,代表噪音信号。
所以HomePod这个增强信号系统的目标很明确了:
多通道信号处理系统的目标是提取S语言中的目标语音源。通过消除回声、混响、噪音和相互竞争的谈话者来提高清晰度。下图显示了系统的概述。
下面说说这个系统里面的细节(大部分翻译自原文):
多通道回波抵消
由于扬声器与HomePod上的麦克风的距离很近,因此在麦克风位置,尤其是当用户离开设备时,播放信号可能比用户的语音命令大得多。事实上,回声信号可能比远场语音信号大30-40分贝,从而导致在响亮的音乐播放过程中麦克风无法检测到触发短语(前文所说的耳朵上贴上两个100分贝以上的扬声器)。HomePod实现了多通道回波消除(MCEC)算法,该算法使用一组线性自适应滤波器来模拟扬声器和麦克风之间的多个声学路径,以消除声学耦合。实际上,有两个问题限制了MCEC从麦克风中完全删除设备自己的播放信号:
1)非线性耦合。由于扬声器的非线性和设备的机械振动,线性系统模型无法捕获整个回放信号。
2)非唯一解决方案。当从波束形成扬声器阵列播放多声道内容时,解决方案可能是非唯一的。
因此,在MCEC之后,需要一个残余回波抑制器(RES)来去除剩余的回放内容。
基于掩模的回波抑制
在响亮的回放音量下,MCEC通常为成功的触发短语检测提供不充分的回波抵消,从而导致剩余的回波水平高于远场语音10到20分贝。RES被设计用来抑制没有被线性MCEC建模的回波信号的非线性分量。RES还能减轻残余线性回波,特别是在存在双音和回波路径变化的情况下。
典型的数据驱动残余回波抑制方法从参考信号和回波抵消信号中提取输入特征,并使用网络将抑制增益直接应用于回波抵消信号。在我们的RES方法中,一个DNN接受多个输入特征并输出一个语音活动屏蔽的估计值,该估计值被用作多通道维纳滤波器(MCWF)的输入语音存在概率(SPP)。从回波抵消信号中提取输入特征,并由MCEC提供线性回波估计。
基于掩模的回波抑制方法有几个好处:
由于对深神经网络进行了实际回波记录的训练,它学会了抑制由扬声器非线性和特定于HomePod的机械振动引起的残余回波信号。使用传统的统计方法,这些扭曲不容易跟踪和抑制。
由DNN预测的SPP驱动MCWF控制方向零位,在引入低语音失真的同时显著降低残余回波。
苹果还使用SPP驱动MCWF输出的单通道抑制增益,进一步抑制MCWF未去除的残余回波。
混响消除
当语音源远离麦克风时,来自房间的多次反射会产生混响尾,从而降低目标语音的质量和清晰度。麦克风捕捉到的信号可以通过直接声音(没有任何反射的语音)、早期反射和后期混响来表征。后期混响会严重降低语音识别器的性能。HomePod持续监控房间特性,消除后期混响,同时保留麦克风信号中的直接和早期反射组件。
基于掩模的降噪
除了混响之外,远场语音通常还受到来自家用电器、暖通空调、通过窗户进入室外的声音以及其他各种噪声源的污染。基于掩模的MCWF是一个强大的工具,用于批量条件下的噪声鲁棒远场语音识别。与传统的单通道方法不同,MCWF是一种依赖于信号的波束形成器,它可以在不扭曲目标语音的情况下将空值导向空间局部噪声源。当使用统计模型或由DNNS学习正确估计SPP时,这种能力是可能的。当批量处理时,这种方法假定噪声源和语音源不会在活动语音段中移动。
这些最先进的语音增强方法为每个语音创建一个固定的过滤器,使用语音和噪声的所有聚合估计来增强语音,然后将其输入识别器。对于这种掩模估计问题,经过训练识别语音和噪声的频谱特性的DNN可以更有效地降低噪声。然而,为了应对不断变化的声环境,需要一个在线降噪系统来跟踪低延迟的环境噪声。苹果建立了一个在线MCWF,只使用当前和过去的麦克风信号来估计语音和噪音统计。此外,苹果还部署了一个DNN来预测SPP,并驱动MCWF将方向空值转向干扰噪声源。
苹果使用扩散和定向噪声以及难以统计建模的连续和离散噪声对内部收集的数据进行了DNN培训。综合混合近端语音录音和仅噪声录音,以产生语音加噪声录音。这种混合允许我们为SPP生成地面真值(ORACLE)目标。从去噪信号和混响估计中计算了DNN的输入特性。输出特征是根据近端语音和语音加噪声混合计算出的语音活动屏蔽。
自上而下的知识以减轻竞争性语音的无监督学习
其他干扰者对目标语音的破坏对语音增强和识别都具有挑战性。盲源分离(BSS)是一种能够以无监督的方式将多个音频源同时分离为单个音频流的技术。然而,从多个输出流中选择正确的音频流仍然是一个挑战,需要自上而下的用户语音命令知识。除了使用触发短语“Hey,Siri”作为一个强有力的声音提示来识别目标流之外,我们还开发了一个相互竞争的谈话者分离方法和一个深度学习流选择系统。
竞争性谈话者分离
苹果采用了一种计算量小的无监督盲源分离学习方法,将麦克风阵列信号分解成独立的音频流。所使用的方法利用了竞争源之间独立性的统计特性和每个源的光谱成分的相关性,并且数值稳定且快速收敛。我们的BSS算法直接从麦克风信号中学习每个新输入音频帧处的音频通道,并以O(m^2)的计算复杂度分离竞争源。
给定子波段的每个震源。它输出NS给出的流M输入通道。虽然该算法不受其它传统方法(如独立分量分析)所知的频率排列模糊性的影响,但其输出源的排列却不能提前知道。然后需要额外的先验知识来识别目标流。
基于深度学习的流选择
噪声加上残余回波抑制和源分离算法在该系统中起着互补作用。他们共同学习了声学环境,并解决了可以使用HomePod的各种条件,例如,安静的环境、嘈杂的背景、响亮的回放和竞争的谈话者。因为在运行时很难获得有关声场的先验信息,而且由于NS的排列BSS的输出流是任意的,苹果开发了一个基于深度学习的流选择系统,用语音触发器来确定最佳的音频流。系统基本上利用了设备上的DNN提供的“Hey,Siri”探测器,并持续监控NS+1个音频流。当检测到“Hey,Siri”时,每个流都被分配一个优度分数。选择得分最高的流并发送到Siri进行语音识别和任务完成。
以上就是HomePod语音增强系统的基本原理,如果想细抠所用算法的原理,请自行百度。谢谢。