何 礼 周 翊 刘宏清
(重庆邮电大学通信与信息工程学院, 重庆 400065)
近年来,自动语音识别技术的飞速发展催生了一系列语音应用,例如:手机、智能音箱、助听器和电话会议系统等。为了保证上述设备在复杂声学环境下运行的鲁棒性,这些设备通常配有噪声消除算法。这些算法分为基于单个麦克风的单通道噪声消除算法[1]和基于麦克风阵列的多通道噪声消除算法。很多单通道噪声消除算法依赖于语音活动检测,只适合平稳噪声,对非平稳噪声鲁棒性不好。麦克风阵列基于多个麦克风,在时频域的基础上进一步获得空间域信息。因此,与只用时频信息进行噪声消除的单麦克风方案相比,麦克风阵列通常具有更好的性能,因而得到了广泛应用。
波束形成器是麦克风阵列噪声消除算法的核心。它可设计成固定波束形成器,如延迟求和波束形成器、超指向性波束形成器;也可设计成基于某个优化准则的自适应波束形成器,如线性约束最小方差、最小方差无失真响应(Minimum Variance Distortionless Response, MVDR)、最小均方误差和最大信噪比[2]。这些现有的技术解决方案通常依赖于扩散场声音相干性的模型,从而区分观测信号中由目标语音主导的时频点和由背景噪声主导的时频点。然而这些解决方案并不适用于噪声环境中干扰声源存在的情况。另外,单独的波束形成器并不总是能够达到理论上的效果,波束形成处理后的输出信号中仍然保留了期望信号方向及波束旁瓣上的残留背景噪声,因此通常会在波束形成后采用单通道后置滤波技术对残留噪声进一步消除。麦克风阵列噪声消除算法通常使用带有单通道维纳后置滤波的MVDR波束形成器来实现[2]。文献[3- 4]中推导了多种不同的后置滤波器,它们的主要区别在于对残留噪声功率谱密度的估计,而共同点是都未考虑干扰声源存在的情况,无法对波束形成输出信号中残留干扰的功率谱密度进行估计。
针对上述问题,本文提出了基于相位时频掩蔽的麦克风阵列噪声消除算法。首先通过互相关功率谱的相位信息估计出目标声源和干扰声源的时频掩码。为了克服线性麦克风阵列前后指向性模糊和端射方向敏感等问题,本文采用均匀环形麦克风阵列。然后通过时频掩码估计出导向矢量和噪声协方差矩阵,从而对目标声源进行波束形成,克服了传统导向矢量估计算法受干扰声源影响的缺点。最后,通过参考麦克风的语音存在概率修正相位时频掩码,更加准确估计残留干扰噪声功率谱密度,经过维纳滤波器生成出最终的增强语音。以下是本文剩余部分的结构安排:第2节将介绍麦克风阵列噪声消除的基本原理。第3节将重点介绍所提算法。第4节进行实验结果描述和分析。第5节是结论。
设在同一个房间内有M个麦克风,第m=1,2,…,M个麦克风接收到的音频信号xm(t)可建模为[5]:
(1)
其中,hm是目标声源与第m个麦克风之间的房间冲激响应,s(t)是目标声源,hm,r是第r个干扰声源与第m个麦克风之间的房间冲激响应,ir(t)是第r个干扰声源,r=1,2,…,R,ηm(t)是第m个麦克风处的背景噪声,‘*’表示卷积运算。
式(1)可简化为:
xm(t)=hm*s(t)+νm(t)
(2)
为了克服语音信号非平稳性带来的信号估计问题,通常将语音信号通过短时傅里叶变换(Short Time Fourier Transformer, STFT)转换到时频域进行处理,假设房间冲激响应是时不变的,对式(2)应用STFT,式(2)在频域中表示为:
X(t,k)=H(k)S(k)+V(t,k)
(3)
其中,X(t,k)=[X1(t,k),...,XM(t,k)]T,H(k)=[H1(k),...,HM(k)]T,V(t,k)=[V1(t,k),...,VM(t,k)]T,且Xm(t,k)、Hm(k)和Vm(t,k)分别是xm(t)、hm和νm(t)的STFT,t表示间索引,k表示频率索引。Hm(k)可建模为延迟衰减模型[6]:
Hm(k)=Dm(k)=αme-jωkτm
(4)
其中,τm是第m个麦克风与参考麦克风m=1之间的到达时间差,ωk是频点k角频率的弧度表示。D(k)=[D1(k),...,DM(k)]T是麦克风阵列的导向矢量[2]。文献[7]证明最优多通道最小均方误差语音增强滤波器Wopt可分解为:
(5)
(6)
其中,φss和φnn分别为波束形成输出结果中目标信号和噪声信号的功率谱密度。最后,目标信号估计为:
(7)
算法的整体框架如图1所示。
算法包含四部分:时频掩码估计、波束形成、干扰噪声功率谱密度估计和单通道维纳滤波。在时频掩码估计部分,结合多麦克风音频信号估计的相位时频掩码和参考麦克风估计的语音存在概率,得到最终的时频掩码。在波束形成部分,通过时频掩码估计出导向矢量和噪声协方差矩阵,基于最小方差无失真响应对目标信号波束形成,对干扰信号和背景噪声进行消除。在干扰噪声功率谱密度估计部分,通过参考麦克风语音存在概率修正的相位时频掩码最大似然估计出上一阶段波束形成后残留的干扰噪声功率谱密度。在单通道维纳滤波部分,通过上一阶段估计的干扰噪声功率谱密度进一步消除波束形成输出结果中残留的干扰噪声,生成增强语音。
为了克服线性麦克风阵列前后指向性模糊和端射方向敏感的问题,本文采用均匀环形麦克风阵列,如图2所示。设式(1)是基于均匀环形麦克风阵列建立的模型,包含M个麦克风。对于一个给定方向的声源,相邻麦克风对表示为{mi,mi+1},最后一对麦克风对表示为{mM,m1}。
(8)
其中,τmi→m1(φg)=τm1m2(φg)-τmimi+1(φg)为{m1,m2}麦克风对与{mi,mi+1}麦克风对的相对时延[9]。
麦克风对音频信号互相关功率谱的相位在单源区域内估计为:
(9)
其中,*表示复共轭。
由式(8)和式(9)分别已知预设角度相位和音频信号相位,时频掩码索引Icircular(t,k)可通过下式估计为:
(10)
其中,Icircular(t,k)表示时频掩码索引,‖·‖2表示欧氏范数。
图1 算法噪声消除流程
图2 均匀环形麦克风阵列
针对线性麦克风阵列端射方向敏感的问题,考虑到提出的环形麦克风阵列基于相位时频掩蔽的算法特点,本文在式(10)的基础上增加基于预设角度的权重因子,以弱化误差较大的麦克风对对相位的影响,强化误差较小的麦克风对对相位的影响。因此,式(10)修改为:
Icircular(t,k)
(11)
其中,权重因子Wweight(φg)定义为:
Wweight(φg)=αweightcos(φg)+βweight
(12)
其中,αweight和βweight为常数,设目标声源来源于第g个扇区,则基于相位估计的时频掩码Mcircular(t,k)为:
(13)
式(13)估计的时频掩码是依赖于不同扇区声源的相位差异,故在目标声源和干扰声源都不存在的情况下是不准确的。因此,式(13)中的时频掩码需要依赖于参考麦克风的语音存在概率进行修正得到最终的时频掩码M(t,k),如式(14)所示:
(14)
其中,threshold为常数,spp为基于文献[10]的方法计算的参考麦克风的语音存在概率,如式(15)所示:
(15)
其中,q(t,k)是先验语音不存在概率,ξ(t,k)是先验信噪比,γ(t,k)是后验信噪比。当语音存在时,时频掩码可以分离出目标信号和干扰信号;当语音不存在时,时频掩码可以分离出语音信号和噪声信号。
设Mν(t,k)表示只包含干扰噪声信号的时频点,Ms+ν(t,k)表示带噪信号的时频点,则只包含干扰噪声信号的协方差矩阵Rν(t,k)和带噪信号的协方差矩阵Rs+ν(t,k)分别为:
(16)
(17)
因此,目标语音的协方差矩阵表示为:
Rs(t,k)=Rs+ν(t,k)-Rν(t,k)
(18)
导向矢量可由目标语音协方差矩阵广义特征值分解的最大特征值对应的特征向量估计[8]。
文献[11]提出在类广义旁瓣消除结构下用最大似然的方法估计波束形成后残留的噪声功率谱密度,取得了比单通道残留噪声功率谱密度估计[9]更好的效果。但是文献[11]并未考虑干扰的影响,因此,本文通过上文基于参考麦克风语音存在概率修正的相位时频掩码得到目标语音存在概率,准确估计出波束形成后残留的干扰噪声功率谱密度。
(1-α(t0,k0))X(t0,k0)X(t0,k0)H
(19)
其中,(t0,k0)表示目标语音不存在时的时频点索引,α(t0,k0)表示目标语音存在概率,定义为:
(20)
(21)
其中,C2(t)为一个时变的比例因子。
(22)
由式(5)可得出波束形成后信号的功率谱密度为:
(23)
将式(22)、(23)代入式(6)的维纳后置滤波中,可得到增强语音Y(t,k),如式(24)所示:
(24)
本节中,将提出的算法在MATLAB环境下进行仿真实验。实验中所用的30条纯净语音和噪声数据均来自CHIME4语音库[12],采样率为16 kHz,量化精度为16 bit。噪声数据包括BUS噪声、CAF噪声、PED噪声和STR噪声。为消除混响对算法的影响,选择低混响房间,混响时间T60在200 ms以内。环形六麦阵列原点位于房间中央,阵列半径为5 cm,目标声源位于麦克风阵列的0°方向,干扰声源位于麦克风阵列的180°方向,两者距离麦克风阵列原点都为1 m。在背景噪声下,目标声源发声,4 s之后干扰声源发声,12 s之后目标声源结束,4 s之后干扰声源结束,4 s之后背景噪声结束。通过MATLAB对目标声源、干扰声源和背景噪声进行混合,信干比为0 dB的条件下信噪比分别为-5 dB、0 dB、5 dB和10 dB。增强算法STFT使用的帧长为512个采样点,帧移为128个采样点。
为验证本文所提算法的性能,本文采用经典的基于广义互相关相位(Generalized Cross-Correlation Phase, GCC-Phat)的延迟求和波束形成器和最优修正对数幅度谱(Optimal Modified Log Spectral Amplitude, OMLSA)后置滤波器的麦克风阵列噪声消除算法为基线方法。为能客观评估算法性能,本文采用感知语音质量(Perceptual Evaluation of Speech Quality, PESQ)、频域分段信噪比(Frequency Weighted Segment Signal Noise Ratio, fwsegSNR)、信号干扰比(Signal to Interference Ratio, SIR)、信号失真比(Signal to Distortion Ratio, SDR)这一系列指标分别对原始语音(original)、基线方法(baseline)、本文所提算法(proposed)与加入多通道后置滤波的本文所提算法(proposed+multipost)的性能进行全面衡量。
PESQ是评估语音主观试听感受的客观计算方法[13]。PESQ分值越高说明其语音感知质量越高。
图3为在BUS噪声、CAF噪声、PED噪声和STR噪声环境下各算法在各信噪比条件下的平均PESQ得分结果。可见本文所提算法在低信噪比(-5 dB)条件下,相比基线方法具有显著提升的增强效果,同时随着信噪比提高(0 dB、5 dB、10 dB),通过加入多通道后置滤波,在高信噪比(5 dB、10 dB)条件下,语音感知质量进一步提高。4种噪声条件下,STR噪声语音感知质量提升幅度相对有限,说明所提算法在背景噪声平稳时的优势有限。
频域分段信噪比是衡量增强语音中所含噪声能量的常规指标,其定义式如式(25)所示:
fwsegSNR=
(25)
图4为在BUS噪声、CAF噪声、PED噪声和STR噪声环境下,各算法在各信噪比条件下的平均fwsegSNR值。总体上看,本文所提算法在各背景噪声环境下表现的噪声消除能力最强,在低信噪比(-5 dB)条件下加入后置滤波后,fwsegSNR值有所下降,说明在噪声消除的同时去除了较多语音部分。在CAF噪声、PED噪声环境下,本文所提算法相比基线方法,fwsegSNR值提升最大,说明所提算法在背景噪声非平稳时效果最好。
信干比是衡量算法抑制干扰声源性能的常规指标[14],其定义式如式(26)所示:
(26)
其中,starget为增强语音中的目标语音,einterf为增强语音中的干扰语音。SIR值越大说明干扰消除得越好。
图5为在BUS噪声、CAF噪声、PED噪声和STR噪声环境下,各算法在各信噪比条件下的平均SIR值。可见,基线方法对干扰几乎没有消除作用,而本文所提算法具有显著的抑制干扰效果。在信干比为0 dB的条件下,本文所提算法在低信噪比(-5 dB)时,抑制干扰10 dB左右;在高信噪比(10 dB)时,抑制干扰20 dB左右。同时,加入后置滤波后,SIR值有所提升,说明本文提出的基于spp的后置滤波具有抑制干扰的效果。
图4 4种背景噪声环境下,各算法在各信噪比条件下的fwsegSNR均值
图5 4种背景噪声环境下,各算法在各信噪比条件下的SIR均值
图6 4种背景噪声环境下,各算法在各信噪比条件下的SDR均值
信号失真比是衡量算法抑制干扰过程中语音失真程度的常规指标[14],其定义式如(27)所示:
(27)
其中,starget为增强语音中的目标语音,einterf为增强语音中的干扰语音,enoise为增强语音中的噪声分量,eartif为增强语音中的人为噪声。SDR值越小说明增强语音过程中语音失真越严重。
图6为在BUS噪声、CAF噪声、PED噪声和STR噪声环境下,各算法在各信噪比条件下的平均SDR值。在低信噪比条件下(-5 dB),本文所提算法与基线方法相比,造成的语音失真更小,但随着信噪比提高(0 dB、5 dB、10 dB),其优势逐渐减小。后置滤波加入后,在高信噪比(10 dB)条件下,SDR值有所下降,说明后置滤波在抑制干扰的同时会使语音有一定程度的失真。
本文针对在干扰声源和背景噪声的环境下传统波束形成和后置滤波算法难以有效实现噪声消除的问题,提出一种基于相位时频掩蔽的麦克风阵列噪声消除算法。该算法利用不同声源的相位差异和语音存在概率估计时频掩码对目标语音波束形成,对干扰声源和背景噪声有效抑制,然后通过后置滤波进一步抑制残留干扰和噪声。在4种不同噪声以及4种不同高低信噪比环境下进行了实验,证明所提算法能有效提高语音的质量。
在后续研究中,将考虑所提算法的实时性,同时提高现有算法的计算效率,减小后置滤波引起的语音失真,此外针对所提算法在混响环境下的适用性问题展开研究。