李 辉,景 浩,严康华,徐良浩
(1.河南理工大学 物理与电子信息学院,河南 焦作 454000; 2.河南理工大学 电气工程与自动化学院,河南 焦作 454000)
语音增强的目标是抑制背景噪声对含噪语音的干扰,从而提高目标语音的质量和可懂度[1]。作为语音信号处理的关键步骤,语音增强技术在说话人识别[2]、人机交互[3]等领域有着广阔的应用前景。
近年来,随着深度学习技术的发展,语音增强被视为一种有监督学习问题[4]。数据驱动的方法通过建立含噪语音与干净语音之间的非线性映射关系完成语音增强过程。现有的语音增强方法普遍将时域信号转换到频域处理,并在频域构建与目标源相关的训练目标。训练目标具体分为两种,即特征映射的训练目标和时频掩蔽的训练目标。然而,频域处理方法存在一些共性问题:首先,额外的时频变换增加了计算成本,不利于将模型应用于实时性较强的场合;其次,训练时仅使用含噪语音的对数功率谱特征或者联合特征进行模型学习,忽视了相位学习的重要性[5-6]。在增强语音时域波形合成过程中,准确的相位信息能有效改善增强语音的质量[7-8]。为解决上述问题,研究人员提出了一系列解决方法。文献[9]将波形信号作为生成对抗网络(Generative Adversarial Network,GAN)的输入。该方法对解决语音增强问题具有一定的启发意义,与传统方法相比取得了较好的增强效果。但是该方法的训练过程存在不稳定现象。为提高GAN在训练过程中的稳定性,文献[10]提出一种基于Wasserstein GAN的语音增强方法;文献[11]结合梯度惩罚项,提出一种相对GAN的语音增强方法。实验证明,文献[10~11]提出的两种方法均显著提高了模型在训练过程中的稳定性。针对传统卷积神经网络(Convolutional Neural Network,CNN)由于特征提取能力有限造成的性能瓶颈问题,研究人员提出不含全连接层的全卷积神经网络(Fully Convolutional Networks, FCN)[12],并采用FCN解决了图像处理领域的语义级别分割难题。受FCN在图像分割任务中优异表现的影响,文献[13]提出一种Wave-U-Net网络。作为FCN的一种变体,Wave-U-Net网络在音乐与人声分离任务中取得了较好的性能。此外,得益于CNN的参数共享机制,文献[13]所提出的方法也降低了计算成本。
然而上述时域处理方法并未充分考虑语音序列不同帧在时间维度上的相关性信息。在不可见噪声条件下,模型存在过增强情况,特别是当信号中同时含有语音和噪声时,增强语音存在失真现象。基于此,本文提出一种基于卷积循环网络与非局部模块(Non-local Attention Module and Convolutional Gated Recurrent Neural Network,NAM-CGNN)的语音增强方法。该方法在Wave-U-Net网络基础上进行了改进,包含以下两点:(1)原始网络的卷积层可以有效提取输入语音的局部特征,但忽视了语音不同帧之间的时序相关性,因此本文在网络中间层添加门控循环单元(Gated Recurrent Unit,GRU)网络,充分利用语音序列的内部时序特征;(2)受人类听觉选择注意力机制的启发,本文将文献[14]的非局部模块嵌入网络卷积层中,减少了模型对噪声特征的关注程度,使其更关注干净语音特征。
干净语音信号s(n)、噪声信号d(n)以及含噪语音信号y(n)三者在时域满足关系式(1)。
y(n)=s(n)+d(n)
(1)
不同于频域处理的语音增强方法,本文直接在波形层次进行端到端语音增强。在训练阶段,分别从含噪语音和干净语音中随机抽取长度为16 384的语音片段,并将其送入模型内部进行参数更新。在增强阶段,采用同样的方式对含噪信号进行无重叠分帧;然后输入训练好的模型中得到相应的增强片段;最后对增强片段依次拼接实现增强语音的合成。
由于Huber损失函数对异常点的鲁棒性优于均方误差(Mean Squared Error,MSE)损失函数,因此本文使用Huber损失函数作为目标函数。Huber损失函数是包含参数δ的分段函数,具有MSE损失函数以及平均绝对误差(Mean Absolute Error,MAE)损失函数的优点。训练过程可以根据训练效果对超参数δ的取值进行调整。当网络估计值与真实值之间的偏差介于[-δ,δ]时,损失函数趋向MSE损失函数;反之,趋向MAE损失函数。其计算式为
(2)
在语音信号处理领域,Wave-U-Net网络具有良好的映射能力,其在音乐与人声分离任务中具有较好的效果。语音增强可以被视一种特殊的分离任务。不同于音频分离任务中输出两种分离目标,语音增强任务只需考虑一种目标语音输出的情况。为此,本文以Wave-U-Net网络为基础并进行改进,提出一种基于卷积循环网络与非局部模块的语音增强方法,其网络结构如图1所示。
图1 网络结构Figure 1.Network structure
该网络由包含跳跃连接的编解码网络、非局部模块和并行的 GRU 网络层3个部分构成。以含噪语音作为输入,通过编码端堆叠的下采样模块提取含噪信号的深层特征,同时采用非局部模块对深层特征进行加权处理,增大干净语音的特征权重并弱化非关键特征权重。然后,利用两个并行的GRU网络层对加权后的深层特征进行时序相关性计算。最后,由解码端对中间层的输出特征进行解码,并逐层恢复原始输入信号。
语音序列的内部时序特性是一种非常重要的潜在特征。为充分利用编码端输出特征的时序信息,本文使用GRU网络进行时序相关性建模。GRU由更新门和重置门构成,与长短时记忆(Long Short-Term Memory,LSTM)单元相比,两者在语音增强领域性能相当,但GRU的结构更加简单,计算代价也更少[15]。本文从整体考虑,在不影响计算负担的前提下,使用GRU网络捕获语音序列之间的相关性。
GRU的内部结构如图2所示,其前向计算过程为
rt=σ(Wxrxt+Whrht-1+br)
(3)
图2 GRU结构Figure 2. The structure of GRU
zt=σ(Wxzxt+Whzht-1+bz)
(4)
(5)
(6)
受人类听觉选择注意力机制的启发,本文在编码端和解码端中添加了非局部模块。由于底层卷积输出的浅层特征表示并不具备表征目标语音高层信息的能力,因此本文将非局部模块添加在编码端与解码端之间,以自注意力(Self-Attention)机制对特征图进行加权,建立位置之间的相互联系。该方法被广泛应用于目标检测[16]、图像分割[17]等任务,其计算式为
(7)
式中,i和j分别代表相关位置索引;Yi代表位置i的输出响应;f(Xi,Xj)表示对位置i的输入特征Xi和位置j的输入特征Xj进行相似性计算;h(Xj)用于计算输入特征Xj的映射表示;C(X)为归一化项。
如图3所示。给定卷积层的输出特征图为X∈C×F,其中C和F分别表示特征图的通道数以及特征维度,计算步骤如下:
图3 非局部模块Figure 3. Non-local module
步骤1以特征图X作为输入,生成注意力权重A(Xi,Xj)
A(Xi,Xj)=Softmax(θ(Xi)Tψ(Xj))
(8)
其中,θ和ψ均代表一维卷积操作,其卷积核的大小和步长均为1;
步骤2将步骤1的注意力权重A(Xi,Xj)与经过一维卷积操作生成的特征Xj映射表示进行矩阵相乘,得到式(7)中的输出响应Yi;
步骤3对步骤2的输出Yi使用卷积核大小和步长均为1的一维卷积操作进行维度调整,使其维度与该模块输入保持一致,进而使用残差连接进行相加,得到包含语音序列全局信息的增强特征Zi,表示为
Zi=WzYi+Xi
(9)
其中,Wz代表训练过程中待学习的权重矩阵。
模型参数设置如表1所示,其中网络层的输入及输出维度按照“通道数×特征维度”进行标注。对于编码端和解码端,超参数一栏中k表示卷积核大小,s为步长,n为卷积核个数。对于GRU层,288为该层节点数。
表1 模型的参数设置
具体来说,模型输入是维度为16 384的含噪语音片段。其中,编码端是由一系列的下采样模块组成,每个下采样模块中依次为一维卷积层、批量归一化(Batch Normalization,BN)层和激活函数层。在卷积层中,为保证输入与输出维度相同,以Same方式进行补零。同时,数据流在编码端传递过程中,依次将下采样模块的输出特征在序列维度减半。因此,编码端最终输出特征大小为288×4,其中288为通道数,4为序列维度。随后,将输出特征依次输入非局部模块以及GRU网络中,分别完成编码端输出特征的加权以及时序相关性的计算过程。
解码端同样由相同数量的上采样模块组成,其结构与编码端保持一致,通过跳跃连接与编码端进行关联。在跳跃连接之前,需要先对上一部分的输出在序列维度进行缩放因子为2的线性插值,之后再与相应的下采样模块输出在通道维度进行拼接,解码端输出特征大小为24×16 384。随后,将其与编码端的输入进行拼接,拼接后特征图的通道数为25,序列维度保持不变。最后,将拼接结果送入输出层进行维度规整。
除输出层使用Tanh激活函数外,其他网络层均使用Leaky ReLU作为激活函数。Leaky ReLU函数是ReLU函数的变体,其允许较小的负数激活值,从而放宽了稀疏性限制。
本文实验采用Pytorch1.2框架进行网络搭建,并使用GPU加速训练,配置信息如表2所示。
表2 实验环境
实验中所有语料采样率均被调整为16 000 Hz,所需干净语音来自ST-CMDS中文数据集。该数据集是由北京冲浪科技公司制作并开源的干净语音数据集,共包括855位说话人,共计102 600段语音,总时长约为150小时。为验证所提方法在不同噪声背景下的增强性能,分别使用ESC-50数据集[18]以及Noisex-92数据集[19]作为训练和测试时使用的噪声数据,其中ESC-50数据集中共有50种不同类别的环境噪声,每种噪声中共有约40段,共计2 000段噪声数据;Noisex-92数据集中共有15种不同类型的噪声。
从ST-CMDS数据集中随机选择2 000段作为实验语料,并按照8∶2的比例进行训练集与测试集的干净语音划分。最终训练集中干净语音数量为1 600段,测试集为400段。训练阶段,在ESC-50数据集中随机抽取10段数据作为训练噪声,同时保证这10段噪声均来自不同的噪声类别,并从-10 dB、-5 dB、0 dB、5 dB和10 dB信噪比中随机选择其中一个作为全局信噪比进行语音合成,最终训练集中共包含16 000(1 600×10×1)段含噪语音。在测试阶段,从Noisex-92数据集中选择6种噪声数据,分别为Babble、Destroyer engine、F16、HF channel、M109和White,将其与测试集的干净语音按照-3 dB、0 dB、3 dB的信噪比进行含噪语音合成,最终测试集中含噪语音数量为2 400(400×6×1)段。
将模型所需的训练总周期设置为1 000,每一批次送入网络的数据大小为10,并使用Adam优化器进行网络优化,其中学习率设为0.001,β1=0.9,β2=0.999。
为了对所提方法的可行性进行验证,本文分别训练了多种端到端语音增强模型,具体包括:(1)SEGAN模型,即文献[9]提出的基于最小二乘生成对抗网络的语音增强模型;(2)WGAN模型,即文献[10]提出的基于Wasserstein距离的生成对抗网络的语音增强模型;(3)SERGAN模型,即文献[11]提出的结合梯度惩罚项的相对生成对抗网络的语音增强模型;(4)Wave-U-Net模型,即文献[13]提出的全卷积U-Net网络的语音分离模型;(5)NAM-CNN模型,即由非局部模块和全卷积U-Net网络组成的语音增强模型;(6)CGNN模型,即由并行门控循环网络和全卷积U-Net网络组成的语音增强模型;(7)NAM-CGNN模型,即本文提出的联合非局部模块与卷积循环网络的语音增强模型。
本文使用两种评价指标对增强结果进行评估,分别为语音感知质量评价(Perceptual Evaluation of Speech Quality,PESQ)[20]和短时客观可懂度(Short Time Objective Intelligibility,STOI)[21]。其中,PESQ得分介于-0.5~4.5,得分越高代表语音质量越好;STOI 得分介于0~1,得分越高说明语音可懂度越高。
表3和表4反映了不同模型在不可见说话人和不可见噪声类型上的含噪语音和增强语音的PESQ平均值和STOI平均值。本文依次使用a、b、c、d、e、f、g、h代表未处理的含噪语音、SEGAN模型、WGAN模型、SERGAN模型、Wave-U-Net模型、NAM-CNN模型、CGNN模型和NAM-CGNN模型。
表3 不同模型增强语音的PESQ平均得分
表4 不同模型增强语音的STOI平均得分
由表3与表4可知,对于PESQ得分,当信噪比为-3 dB时,在非平稳噪声Babble条件下,使用本文方法生成的增强语音PESQ得分相比未处理的含噪语音PESQ得分平均提升23%;GAN模型表现相当,其提升范围均在10%以下。在平稳噪声White条件下,本文方法也同样占据优势,相比未处理的含噪语音提升58%。对于STOI得分,为方便观察,本文将STOI得分转换为百分比形式。整体上看,7种模型的增强语音STOI均值较含噪语音均有不同程度的改善。其中,NAM-CGNN模型生成的增强语音表现最好,与含噪语音相比平均提升7.9%,而WGAN模型的表现较差。
通过对比Wave-U-Net模型和NAM-CNN模型,可以看出在编码端和解码端嵌入了非局部模块能够有效提升增强语音的可懂度以及语音质量。 与Wave-U-Net模型相比,NAM-CNN模型增强语音的PESQ得分提升5%;在STOI得分上,两者得分非常接近,这是由于加入非局部模块能充分考虑特征图内部的关键特征信息,通过弱化非关键信息的方式提升语音增强效果。
对比添加GRU层的CGNN模型和未添加GRU层的Wave-U-Net模型,在信噪比为3 dB时,二者在不同噪声类型的增强语音PESQ得分上差距并不大。这是因为随着信噪比的增加,含噪语音自身的噪声成分逐步降低,而添加的GRU网络层性能有限。综合所有条件,在增强语音的STOI得分上,Wave-U-Net模型的表现则略优于CGNN模型。
为直观验证所提方法的增强效果,对不同方法增强语音的语谱图进行对比分析,结果如图4所示。选择信噪比为-3 dB,噪声类型为M109的一段测试语音,其中图4(a)和图4(b)分别为干净语音和含噪语音的语谱图,图4(c)~图4(i)分别是由SEGAN模型、WGAN模型、SERGAN模型、Wave-U-Net模型、NAM-CNN模型、CGNN模型和NAM-CGNN模型得到的增强语音语谱图。语谱图的横轴代表时间,纵轴代表频率,坐标点的值对应语音信号的能量,颜色深浅表示能量大小。由图4可以看出,GAN模型与本文模型相比,在语音的开始与结束部分(白色虚线框标识区域)仍然存在较为明显的噪声残留。通过试听实验,增强语音出现了类似音乐的噪声,影响主观听觉感受。与GAN模型相比,本文模型生成的增强语音PESQ得分提升15%以上,这与之前的结论保持一致。虽然使用本文模型和Wave-U-Net模型得到的增强语音较好地还原了干净语音的低频细节信息,但对高频部分的处理并不理想,且在图4(g)的虚线框中仍有部分噪声冗余。
(a)
本文提出了一种联合卷积循环网络和非局部模块的语音增强方法。该方法以全卷积网络作为基础进行研究,首先添加非局部模块改善神经网络对语音序列关键信息不敏感的问题;然后引入GRU网络,充分利用编码端输出特征之间的时序相关性;最后使用Huber损失函数代替原有的MSE损失函数来提升模型的鲁棒性。通过设计多组对比实验证明了本文所提方法能有效提升增强语音的质量和可懂度。由于语音信号自身结构上的复杂性,下一步工作将从模型结构入手,提高模型在未知噪声环境下的泛化能力。