房慧保,马建芬+,田玉玲,张朝霞
(1.太原理工大学 信息与计算机学院,山西 晋中 030600; 2.太原理工大学 物理与光电工程学院,山西 晋中 030600)
为了解决传统单通道语音增强方法存在的语音失真和残留噪声过多问题,多名研究者提出了基于深度神经网络(DNN)的语音增强算法[1-6],但是,这些算法都是通过最小化干净语音和增强语音之间的均方误差(MSE)标准来训练网络的,而MSE标准并不是基于人耳听觉感知的标准。针对这一问题,一些研究者提出了在DNN训练期间引入基于人类听觉感知特性的心理声学标准[7,8]。由于在不同频带上,相同的MSE可能对语音质量及可懂度有不同的影响,一些研究者提出了对MSE代价函数进行加权的方法,他们将绝对听阈、听觉掩蔽等作为听觉感知特征,引入代价函数的计算中[9-12]。
除了对MSE进行加权外,一种更为直接的方法是将已有的语音质量和语音可懂度客观评价标准作为代价函数来训练网络[13,14]。所以,可以通过将这些评价标准解读为合适的损失函数来建立恰当的代价函数用于端到端的语音增强。本文提出了一种基于频域加权分段信噪比标准[15]的感知相关代价函数。在此基础上,将频域加权分段信噪比和感知加权均方误差结合,得到一种联合优化代价函数。接下来分别将这两种代价函数用于DNN训练,通过实验对比,探讨感知相关代价函数的应用是否可以进一步提高深度神经网络语音增强性能。
语音增强的目标是在给定含噪语音信号的情况下,估计出干净语音信号。假设受噪声干扰的输入信号y(t) 是由干净语音信号x(t) 和噪声d(t) 叠加而成,即
y(t)=x(t)+d(t)
(1)
其中,t表示离散时间变量。两边同时做K点离散傅里叶变换(DFT)后,就可以得到第l帧上的第k个频带的含噪语音信号频谱,即
Y(l,k)=X(l,k)+D(l,k),k=1,…,K
(2)
其中,Y(l,k)、X(l,k) 和D(l,k) 分别表示含噪语音频谱、干净语音频谱和噪声频谱。l表示帧,k表示频带。此外,可以将式(2)以极坐标的形式表示,即
|Y(l,k)|ejφy(l,k)=|X(l,k)|ejφx(l,k)+|D(l,k)|ejφd(l,k)
(3)
其中,|Y(l,k)|、|X(l,k)| 和 |D(l,k)| 分别表示含噪语音信号、干净语音信号和噪声的幅度谱。φy(l,k)、φx(l,k) 和φd(l,k) 分别表示含噪语音信号、干净语音信号和噪声的相位谱。
在传统的MSE-DNN框架中,DNN的输入是含噪语音的对数功率谱(LPS)特征,它包含了2τ+1个相邻帧的声学上下文信息,训练目标是干净语音的LPS特征,训练阶段优化的代价函数为
(4)
但是,MSE代价函数和语音可懂度没有必要的关联性。MSE不关注干净语音幅度谱和网络输出幅度谱之间的正负差异,正差异表示估计的幅度谱被衰减了,而负差异表示估计的幅度谱被放大了,这两种失真对人耳听觉感知的影响不一定相同。也就是说,简单的通过最小化干净语音和增强语音之间的MSE,并不能保证增强语音的可懂度一定提高。
为了克服上述MSE代价函数的问题,本文提出了感知相关代价函数,并将其用于网络训练,以提高语音质量和语音可懂度。基于感知相关代价函数的深度神经网络语音增强方法实验框架如图1所示。它包括两个阶段:训练阶段和增强阶段,本文主要对特征提取、感知相关代价函数的构建和DNN训练进行介绍。
图1 所提方法实验框架
2.2.1 特征提取
在训练阶段,通过将语料库中的干净语音和噪声逐帧地相加得到含噪语音信号。由于语音信号的时间连续性,我们将相邻时间帧的声学特征合并为一个向量作为DNN的输入。因此输入特征是含噪语音的当前帧、3个过去帧和3个未来帧的所有频带的幅度谱特征,并将这7个帧的幅度谱特征合并成一个向量,即
Y=[y(l-3,1),…,y(l-3,K),…,y(l,1),…,
y(l,K),…,y(l+3,1),…,y(l+3,K)]
(5)
其中,y(l,k) 表示含噪语音信号的第l帧位于频带k的幅度谱分量。训练目标是干净语音当前帧的每个频带的幅度谱特征,即
X=[x(l,1),…,x(l,K)]
(6)
其中,x(l,K) 表示干净语音信号的第l帧位于频带K的幅度谱分量。得到输入特征和训练目标后,将这些数据进行标准化,使它们服从均值为0、方差为1的高斯分布。接下来需要构建感知相关代价函数,将其用于DNN训练。
2.2.2 感知相关代价函数的构建
频域加权分段信噪比是一种语音可懂度客观评价标准,它的优点主要包括:使用临界带频率间隔可以对听力正常听众的频率选择性进行恰当的建模,并且可以将感知激励加权函数施加于各个频带。频域加权分段信噪比的计算如下
(7)
(8)
具体来讲,当某个频带的信噪比大于0时,设为1,反之设为0,这样做考虑的是,当语音的能量超过噪声能量一定数值时,噪声将被掩蔽,并且不被人耳听觉感知[16]。因此本文提出了在DNN训练过程中通过最小化以下感知相关代价函数来优化网络参数
(9)
在MSE代价函数的计算中,每一帧的均方误差是通过对所有频带的干净语音和增强语音对数功率谱之间的误差平方和取平均值得到的,也就是说不同频带对基于梯度的网络训练有相同的贡献。但是,不同频带的误差对人耳听觉感知的影响是不同的,这些误差不应该被均匀加权,而是应该根据它们对听觉的影响,对不同的频带的均方误差施加不同的权重。此外,DNN应该更加关注对人耳听觉感知更为重要的频带。根据这些理论分析,有研究者提出了一种感知加权均方误差代价函数[17],即
(10)
其中,Lm表示第m条干净语音信号的频带个数,W(l,k) 是对不同频带施加的权重,仍然根据式(8)来动态选择,以最小化所有频带的误差之和的几何平均。
在此基础上,本文将上述感知加权误差和频域加权分段信噪比结合,提出了一种联合优化代价函数,即
(11)
其中,感知加权误差和频域加权分段信噪比这两项的权重都设为固定值1。构建出代价函数后,接下来通过训练一个DNN来得到干净语音的幅度谱估计。
2.2.3 DNN训练
DNN模型的搭建参考了文献[3],它的输入为7×257维的含噪语音幅度谱特征;然后经过3个全连接层(或隐藏层),每个全连接层有2048个神经元;最后经过一个257维的全连接层,获得神经网络的输出。除了输出层的激活函数为线性(linear)函数以外,其它层的激活函数均为整流线型单元(relu)。为了防止过拟合,在3个隐藏层后面添加了0.2的Dropout,网络训练过程使用的自适应调整参数学习率的算法为Adam,学习率为0.0001。
基于感知相关代价函数的DNN训练如图2所示。首先对网络的权重ω和偏差单元b进行初始化,再利用前馈神经网络(FNN)得到每个频带的幅度谱估计,即
图2 基于感知相关代价函数的DNN训练流程
(12)
接下来利用干净语音的幅度谱xm(l,k),根据式(9)和式(11),求出感知相关代价函数值。为了最小化MSSNR和wMSE+MSSNR代价函数值,通过反向传播算法对DNN的权重进行训练,由此得到训练好的DNN。
在本研究中,训练语音和测试语音都来自TIMIT数据集。TIMIT数据集是由630名说话人(男性438名,女性192名)每人说10句所组成的语音集合,它分为训练集和测试集,训练集中有4620句,测试集中有1680句,一共6300条干净语音。训练噪声和测试噪声分别来自Aurora2数据库和NOISEX-92数据库。在6种信噪比(-5 dB、0 dB、5 dB、10 dB、15 dB、20 dB)条件下,通过将 TIMIT 训练集中的所有4620条干净语音与Aurora2数据库中的100种噪声类型叠加,可以得到2 772 000(4620×100×6)条含噪语音,这些含噪语音信号和对应的干净语音信号共同形成一个多条件训练集。在测试阶段,为了使实验条件更接近真实环境,使用一些和训练集不匹配的噪声类型。在上述6种信噪比条件下,将TIMIT测试集中的100条干净语音信号与2种可见噪声(汽车噪声、铃声)和NOISEX-92数据库中的8种未见噪声(比如:exhibition、pink、Factory1等)叠加,得到一个包含1000(2×100+8×100)条含噪语音信号的测试集。实验中所有语音波形文件和噪声的采样率均为16 KHz。然后对信号进行分帧、加汉明窗,其中帧长为32 ms(512个采样点),帧移为16 ms(256个采样点),再对每一帧做257点DFT,就可以将时域信号转换为信号的频谱,由此可以得到257维的幅度谱特征。
为了验证本文提出的两种代价函数可以进一步提高语音增强性能,将MSSNR和wMSE+MSSNR代价函数分别用于DNN训练,并将这两种方法与3种对比方法进行比较,3种对比方法分别是:传统的最小均方误差对数谱幅度估计(LogMMSE方法)、基于MSE代价函数的深度学习语音增强算法(MSE-DNN方法)和基于感知加权均方误差代价函数的深度神经网络语音增强算法(wMSE-DNN方法)。为了方便,将这3种对比方法用方法A、方法B和方法C来表示。将本文提出的基于MSSNR代价函数的深度神经网络语音增强算法(MSSNR-DNN方法)和基于wMSE+MSSNR代价函数的深度神经网络语音增强算法(wMSE+MSSNR-DNN方法)用方法D和方法E来表示。为了减少算法的复杂度,4种深度学习方法使用相同的网络结构。
本文利用语音质量感知评价(PESQ)和短时客观可懂度(STOI)两种语音评价方法对增强语音进行客观评价。PESQ用来对语音信号的感知质量进行客观评价,取值范围是-0.5到4.5。通过比较增强语音和干净语音,可以计算出PESQ分数。PESQ越高,语音质量越高。STOI用来对增强语音的可懂度进行客观评价,取值范围是0到1,也是关于干净语音和增强语音的函数。STOI值越高,表明增强语音的可懂度越高。
表1列出了在6种信噪比条件下,含噪语音以及通过传统的LogMMSE方法、4种基于不同代价函数的深度神经网络语音增强方法得到的增强语音的平均PESQ结果。从表中可以看出,基于DNN的语音增强方法和传统方法相比,在PESQ上实现了显著的增益。wMSE-DNN方法和MSE-DNN方法相比,增强语音的质量提高,表明对均方误差进行感知加权,并将其用于DNN训练,可以进一步提高语音质量。在大多数情况下,本文提出的MSSNR-DNN方法得到的PESQ分数都优于MSE-DNN方法和wMSE-DNN方法,这表明在DNN的训练过程中最小化基于频域加权分段信噪比的感知相关代价函数,可以提高增强语音的质量。但是当SNR=20 dB时,MSSNR-DNN方法得到的PESQ分数略有下降,这表明在输入信噪比高的情况下,通过这种方法会造成轻微的语音失真问题,但这种失真不会对人耳听觉造成影响。此外,在6种信噪比环境下,wMSE+MSSNR-DNN方法可以得到比另外3种深度学习方法更好的语音质量,这是由于MSE没有考虑人耳听觉系统的感知特性,根据理想二值掩蔽对MSE加权,将其和频域加权分段信噪比结合,作为代价函数来优化DNN,可以进一步提高增强语音的感知质量。
表1 不同信噪比下的平均PESQ结果
表2列出了在6种信噪比条件下,含噪语音以及通过传统的LogMMSE方法、4种基于不同代价函数的深度神经网络语音增强方法得到的增强语音的平均STOI结果。从表中很明显可以看出,4种基于DNN的语音增强方法和传统方法相比,STOI值显著提高。在低信噪比条件下,基于感知加权均方误差代价函数的DNN训练有利于语音可懂度的提高。大多数信噪比下,经过wMSE+MSSNR-DNN方法处理以后的增强语音的STOI值高于其它3种深度学习方法,这是由于利用人耳听觉系统的感知特性,对均方误差进行感知加权,并将其和频域加权分段信噪比结合,可以进一步提高增强语音的可懂度。但是,当SNR=5 dB时,wMSE+MSSNR-DNN方法得到STOI值下降,这可能是由于该方法通过采用感知加权,在一定程度上造成了语音信息丢失。在大多数信噪比条件下,MSSNR-DNN方法优于MSE-DNN方法和wMSE-DNN方法。但是,在高信噪比环境中,特别是当SNR=20 dB时,虽然通过MSSNR-DNN方法得到的语音质量和MSE-DNN方法、wMSE-DNN方法相比略有下降,但是增强语音的可懂度分别提高了0.012和0.003,这是由于频域加权分段信噪比和语音可懂度高度相关。
图3表示TIMIT语料库中的一条干净语音,SNR=-5 dB 的含噪语音,以及通过5种不同的方法得到的增强语音的语谱图。从图3(b)可以看出当SNR=-5 dB时,语音信息被噪声掩盖。从图3(c)看出传统的LogMMSE方法存在的残留噪声和语音失真问题严重。从图3(e)可以看出wMSE-DNN方法和其它4种方法相比,残留噪声最少,但是语音信息的损失情况最为严重,因此难以提高语音可懂度。通过比较图3(d)、图3(e)和图3(f)可以看出,MSSNR-DNN方法可以有效地恢复语音信息,从而提高增强语音的可懂度,但是语音段间仍然存在残留噪声。从图3(g)可以看出,利用wMSE+MSSNR-DNN方法,可以进一步抑制残留噪声,同时保留更多的语音信息,这表明该方法可以保留更多对人耳听觉感知有重要作用的语音段,因此语音可懂度进一步提高。
图3 语音信号的语谱图比较
本文提出了一种基于感知相关代价函数的深度神经网络语音增强算法。在基于DNN的语音增强回归问题中,使用基于本文提出的两种感知相关代价函数进行DNN训练,可以保留对人类听觉感知更为重要的频带,并且有效提高增强语音的质量和可懂度。
今后可以尝试将其它能够表征人类听觉感知特性的心理声学特征引入代价函数的计算中。此外,下一步可以将本文提出的联合优化代价函数中的wMSE和MSSNR进行权重设置,探究不同权重因子对语音增强性能的影响。