朱 明,孙世若
(1.盐城工学院信息工程学院,江苏 盐城 224051;2.东南大学信息科学与工程学院,江苏 南京 210096)
现实中的语音信号总是会受到各种干扰与污染,语音增强是从被噪声污染的语音信号中提取干净语音的技术,目的是提高语音的可懂度与质量,其在语音通信、自动语音识别系统前端等有着广泛的应用。近些年,随着深度学习的发展,更多前沿的有监督深度学习方法被引入到语音增强技术中。
然而,深度学习的网络模型通常包含大量的矩阵运算,这使得它必须依靠GPU 进行推理计算。另一方面,许多基于深度学习方法的语音增强模型都是非因果系统,使得它们无法在实时系统当中应用。Valin[1]提出了一种实时DSP 和深度学习的混合方法,使用循环神经网络估计理想频带增益,可以满足实时因果系统的要求。然而,这种方法只对语音的幅值谱进行了处理而忽略了相位的作用。受此启发,本文提出了一种基于复值掩蔽与扩张卷积的语音增强方法对含噪语音进行实时增强处理。通过与基线模型对比来验证模型对语音增强性能的改善。
本文所提出的网络主要由编码器-解码器和门控扩张卷积模块构成,如图1 所示,其中编码器包含5 层卷积层,解码器分为实部和虚部解码器,分别包含5 层反卷积层。编码器和解码器中间包含5 层门控扩张卷积。
图1 网络结构
编码器-解码器网络只包含卷积和反卷积操作,并且为了满足因果系统的要求,所有卷积核的尺寸设置为3×1,即频率维度对应的卷积核尺寸为3,时间维度对应的卷积核尺寸为1。这样在保证帧与帧之间独立的同时又可以提取到相邻频点之间的特征信息。
编码器包含5 层卷积层,输入特征是语音短时傅里叶频谱的实部与虚部。解码器网络采用双流结构,采用2 个相同的解码器结构分别估计增强语音的实部和虚部。解码器同样包含5 层与编码器镜像的反卷积层,从而保证输出特征与输入特征的维度一致。所有卷积-反卷积层均采用ReLU 激活函数,解码器最后一层反卷积采用线性激活以保证输出复值掩蔽取值范围是无界的。
门控扩张卷积网络是连接编码器和解码器的中间级,目的是充分利用过去语音的时频信息,提高网络的性能。它将线性门控单元(GLU)中的卷积替换为时域维度上的因果扩张卷积并把多个线性门控单元堆叠(共5 层),通过这种方法可以让网络的感知视野达到64 帧。下面分别介绍因果扩张卷积和线性门控单元。
传统的卷积神经网络为了增加网络的感知视野,通常采用增加网络的深度或者扩大卷积核的尺寸,但这往往导致梯度消失或过大的计算量,导致整体网络性能的下降。为了有效地解决这一问题,Yu等[2]提出了扩张卷积的概念,其最大的特点是网络的感知视野随网络深度指数增加。如图2 所示,扩张卷积通过在卷积核每个元素之间填充0 元素来增加感知视野大小。因果关系是通过限制卷积核只在过去的样本上扩张实现的。
图2 一维因果扩张卷积(卷积核大小为2)
门控机制[3]最早是用于缓解RNN 在传播过程中的梯度消失问题,从而有效保留时间序列的信息。Dauphin 等[4]改进了LSTM 中的门控机制并用于卷积神经网络[5]中,称为线性门控单元,其基本结构如图3 所示。
图3 线性门控单元
式(1)表示门控机制的输出,其中conv(x)表示卷积,tanh 表示tanh 激活函数,σ表示sigmoid 激活函数,☉表示元素相乘。线性门控单元输出的梯度表示为:
通常,梯度消失是由于反向传播过程中存在tanh 和sigmoid 激活函数的导数,而上述梯度公式中的第一项∇conv1(x)☉σ(conv2(x))不包含激活函数的导数,因而可以将梯度流在层与层之间有效传递。
传统的理想比率掩模[6](IRM)是在幅值域中定义的,而本文采用复值理想比率掩模[7](cIRM),它可以有效利用频域中的相位信息,更加有效地重构语音波形。cIRM 同时利用了复数频谱的实部和虚部对语音波形进行重构,便于网络学习语音的相位信息,具体计算方法如式(3):
式中:Y表示含噪语音的频谱,S表示干净语音的频谱,下标r表示实部,i表示虚部。解码器的双流结构分别预测cIRM 的实部Mr和虚部Mi。为了进一步提高语音的可懂度,网络还联合优化了PASE[8]特征损失。PASE 是Koyama 等提出的一种基于DNN 的语音编码器,利用PASE 提取增强语音和干净语音的特征并计算两者的均方误差(MSE)作为联合优化损失项。则对于本文所述的网络损失函数为:
式中:s代表语音的时域波形,S表示语音的频谱,X表示含噪语音频谱。
实验在公开数据集Voice Bank[9]和DEMAND[10]上进行,其中Voice Bank 为干净语音数据集,训练集包含28 个不同的说话人,测试集包含2 个不同的说话人。DEMAND 为噪声数据集,选取其中10 种不同类型的噪声进行合成,训练集的合成信噪比为0 dB、5 dB、10 dB、15 dB,测试集的合成信噪比为2.5 dB、7.5 dB、12.5 dB、17.5dB,所有音频的采样率均为16 kHz,总共包含11 572 条训练语音和824 条测试语音。模型学习率设置为0.000 1,一个批次的大小为64,总共训练30 轮。实验选择PESQ、STOI指标来评估本文所述方法的性能并计算模型的参数量和计算复杂度来评估模型的实时性。本文选择了RNNoise[1]、NSNet2[13]作为基线模型进行对比。
实验结果见表1。
表1 模型性能对比
粗体表示不同指标下的最优结果。由表1 可以看出,本文所述模型在两项常用语音可懂度与质量的评价准则下均实现了最优结果。相比原始含噪语音,本文所述模型使平均PESQ 和STOI 分别提升了0.64 和0.011,远高于RNNoise 和NSNet2,这说明有效地估计语音的相位信息可以提升语音重构的质量。
另一方面,得益于全卷积操作,模型参数量只有RNNoise 和NSNet2 的15%和3%。而模型的计算复杂度也接近RNNoise,且远低于NSNet2。在实际测试中,利用CPU(Intel i7-8700)推理一帧(10 ms)语音所需要的时间为3.8ms,这说明模型在满足实时性要求的情况下,可以有效提高语音质量与可懂度。
本文研究了一种基于复值掩蔽与扩张卷积的实时语音增强方法,模型在保证较小参数量的基础上,提高了算法的实时性能。此外,通过估计cIRM,模型充分利用语音的相位信息,提高了语音重构的质量。
为了进一步改善实时系统中语音增强的性能,可以采用更加符合人耳听觉感知的损失函数作为优化目标,由于损失函数的优化只会增加模型训练过程的计算复杂度,因而不会影响实时系统中推理计算的复杂度。除此之外,还可以使用更大规模的噪声数据集来训练模型,使模型在真实噪声环境中有更好的泛化性能。