一种用于实时语音增强的卷积准循环网络
2022-07-04时云龙袁文浩胡少东娄迎曦
时云龙,袁文浩,胡少东,娄迎曦
(山东理工大学 计算机科学与技术学院,山东 淄博 255000)
语音作为信息传递的重要载体之一,在现实生活中不可避免地被各种背景噪声干扰,导致语音的质量和可懂度均有所下降。语音增强的作用就是从含有背景噪声的语音信号中,最大程度地提取出纯净的目标语音信号,进而提高语音质量和可懂度[1-2]。十几年来,研究人员相继提出了抑制噪声对目标语音影响的语音增强方法。常见的传统语音增强方法有谱减法[3]、维纳滤波法[4]、子空间法[5]等,这些方法在平稳噪声环境中有良好的增强效果,但在非平稳噪声环境中常常会引入“音乐噪声”[6-7],导致增强后的语音质量下降。
近年来,深度学习在图像分类、语音识别等领域取得了巨大的成果,研究人员开始将深度神经网络引入语音增强问题中,以获得更好的语音增强性能。深度学习一般采用神经网络处理数据,常用的神经网络有深度神经网络(Deep Neural Networks,DNN)、卷积神经网络(Convolutional Neural Network,CNN)、循环神经网络(Recurrent Neural Networks,RNN)等。文献[8]将语音增强任务作为回归问题,使用受限玻尔兹曼机的方法初始化网络参数,模型使用含噪语音的对数功率谱(Log-Power Spectrogram,LPS)特征作为输入,通过训练深度神经网络模型估计纯净语音的对数功率谱特征,利用含噪语音的相位信息合成增强后的语音信号,取得了较好的增强效果。文献[9]提出了一种利用深度神经网络估计非负矩阵分解算法的编码向量方法,解决了语音和噪声的子空间可能重叠的局限性。网络模型通过学习含噪语音到纯净语音和噪声的编码向量的复杂映射,提高了基于非负矩阵分解的语音增强方法性能。
为了对语音信号在时间和频率两个维度的局部相关性进行利用,进一步提高语音增强的性能,文献[10]将卷积神经网络应用到语音增强任务中。文献[11]提出冗余卷积编码解码器,可以在编码器处提取噪声的冗余表示,并在解码器处进行消除,使用全卷积神经网络在含噪语音的频谱和纯净语音的频谱之间找到一个映射来解决语音增强问题,有效提高了语音的质量和可懂度。文献[12]提出了一种利用深度特征损失函数来训练全卷积神经网络的方法,在端到端的语音增强方法中,得到了更好的增强效果。
由于语音的序列特性,文献[13]使用循环神经网络来处理语音增强问题。为了降低梯度消失和梯度爆炸对循环神经网络训练带来的影响,研究人员相继设计出循环神经网络的变体长短期记忆网络(Long Short-Term Memory,LSTM)、门控循环单元(Gated Recurrent Unit,GRU)等网络实现语音增强,进一步提升了增强后语音的各项指标。文献[14]对基于长短期记忆网络的语音增强模型进行了全面研究,针对不同的训练目标,长短期记忆网络在不同信噪比(Signal Noise Ratio,SNR)上表现出的互补特性,提出了一种多目标联合学习的集成框架,充分利用不同训练目标的优势,提高模型在未知噪声条件下的泛化能力。文献[15]提出了基于长短期记忆网络的渐进式学习模型,通过密集连接加深网络,产生更好的语音清晰度。
为了更好地利用语音序列信息的上下文关系,研究人员常使用循环神经网络来处理序列问题。但由于循环神经网络每一时刻的处理都依赖上一时刻的输出,导致网络训练缓慢。文献[16]改进了长短期记忆网络的隐层神经元连接方式,使网络模型在计算时不再依赖上一时刻的输出,提出了一种可以并行计算的准循环神经网络(Quasi-Recurrent Neural Network,QRNN)。通过实验,证实了准循环神经网络在情感分类[16]、机器翻译[16]、实时文本转语音[17]等领域在能够保证网络性能的前提下,提高了模型计算速度。然而,准循环神经网络在隐层对输入语音序列采用全连接网络方式进行特征提取,忽略了语音信号的时频域局部相关性,限制了模型的性能。文献[10-12]中已经证明卷积神经网络在语音增强任务中,能够更加专注于语音的局部结构并加以利用,有效地抑制噪声,保留更完整的语音信号。因此,在保证因果性的前提下,为了利用含噪语音在时频域特征的相邻频带和相邻帧之间的局部相关性,笔者使用卷积层改进了准循环神经网络在隐层对输入语音序列的特征提取方式,设计出一种适合实时语音增强的卷积准循环网络(Convolutional Quasi-Recurrent Network,CQRN)。最后通过语音增强实验对其性能进行客观评价。
1 基于深度神经网络的实时语音增强方法
基于深度神经网络的实时语音增强方法使用的是因果形式的输入。此外,为了利用含噪语音在时频域中相邻帧和频带之间的相关性,网络的输入一般为含噪语音的多个相邻帧的时频域特征。因此,当对第t帧的含噪语音进行实时语音增强时,网络的输入Ψt可以表示为
(1)
其中,Yt,s表示第t帧第s个频带的特征值,k是网络输入的窗长,n是语音在时频域的特征维度。为减少网络计算量,仅使用当前帧的时频域特征作为输入,此时输入到网络的特征Ψt表示为
Ψt=[Yt,1,Yt,2,…,Yt,n]T。
(2)
基于深度神经网络的实时语音增强方法通过使用大量含噪语音数据进行网络训练,从而得到含噪语音时频域特征到纯净语音时频域特征的映射fθ(其中θ是网络的参数集合),然后通过fθ来估计纯净语音的时频域特征。采用大小为M的mini-batch训练网络,使用平均绝对误差(Mean Absolute Error,MAE)作为损失函数:
(3)
其中,Ψt是网络的输入,即含噪语音第t+k+1帧到第t帧的时频域特征,St是与输入含噪语音对应的纯净语音在第t帧的时频域特征。
2 QRNN网络结构
QRNN改进了长短期记忆网络的隐层神经元的连接方式,不再依赖上一时刻的输出,可以进行并行计算。此外,QRNN只需要计算遗忘门和输出门,结构更加简单,减少了网络计算量。
给定一个长度为T,每个子序列向量的维度为n的含噪语音频谱特征X=[x1,x2,x3,…,xT]。首先经过掩蔽卷积(Masked convolution)对含噪语音时频域特征信息在时间维度上进行卷积操作。通过m个宽度为k的卷积滤波器,只允许当前时刻和过去时刻的信息输入到QRNN隐层,使得每一时刻输入到QRNN隐层的序列长度始终为k,如图1所示,给出了QRNN的计算过程。第t时刻时,输入到隐层含噪语音的特征序列为[xt-k+1,xt-k+2,…,xt],在QRNN隐层采用全连接的方式,计算序列zt、遗忘门ft以及输出门ot
图1 QRNN计算过程
(4)
(5)
(6)
其中,Wz、Wf、Wo分别为计算zt、ft和ot的权重矩阵。从式(4)~式(6)可以看出:zt、ft以及ot只与序列[xt-k+1,xt-k+2,…,xt]有关。滤波器的宽度k的取值越大,QRNN可以利用的含噪语音信息越多,模型的性能提升,但同时也会导致计算量增大,模型的复杂度增加。为权衡网络的性能和复杂度,在节5.3中只考虑k值取1,2,3时的情况。
最后,利用序列zt、遗忘门ft以及输出门ot,可以计算t时刻的单元状态ct和输出特征ht:
ct=ft⊙ct-1+(1-ft)⊙zt,
(7)
ht=ot⊙ct,
(8)
其中,⊙表示哈达玛积(Hadamard product)。
3 CQRN网络结构
QRNN在计算输入序列以及各个门函数时,含噪语音特征首先经过全连接层,而全连接层忽略了语音在频域中二维相关性,仅考虑了序列的时域特性,限制了语音增强的性能。为了利用含噪语音在时频域特征的相邻频带和相邻帧之间的局部相关性,笔者改进了QRNN在隐层对输入含噪语音序列特征提取的方式,设计出一种适合实时语音增强的CQRN。
CQRN与QRNN类似,使用掩蔽卷积对输入含噪语音特征序列进行处理,因此CQRN也具有对语音序列信息进行并行运算的能力。与QRNN不同的是,在CQRN隐层采用卷积网络结构对含噪语音的频谱特征进行提取,充分利用含噪语音时频域的二维结构特征。
图2给出了CQRN的计算过程。在第t时刻,输入到CQRN隐层的序列为Xt=[xt-k+1,xt-k+2,…,xt],其中,xt的维度为n。CQRN隐层对输入序列进行卷积运算,得到计算序列Zt、遗忘门Ft以及输出门Ot,其计算公式分别为
图2 CQRN计算过程
(9)
(10)
(11)
其中,WZ、WF、WO分别为计算Zt、Ft和Ot的权重矩阵,*表示卷积运算。与QRNN计算序列zt不同,CQRN计算序列Zt使用的是收敛速度更快、对噪声鲁棒性更好的指数线性单元(Exponential Linear Unit,ELU)激励函数。
最后,利用序列Zt、遗忘门Ft和输出门Ot,可以计算出t时刻的单元状态Ct和输出特征Ht:
Ct=Ft⊙Ct-1+(1-Ft)⊙Zt,
(12)
Ht=Ot⊙Ct。
(13)
结合图1和图2,可以看出,QRNN的计算完全忽略了输入特征序列的二维结构,而CQRN的计算始终在卷积操作的多通道特征上进行,因此CQRN可以更好地利用语音序列的局部相关性,获得更好的语音增强效果。
4 实验与结果分析
4.1 实验配置
实验选用爱丁堡大学信息学院语音技术研究中心提供的可用于训练语音增强方法的语音数据集[18]。数据集中包含训练集和测试集两部分,其中,训练集使用由14名男性说话人和14名女性说话人构成的纯净语音,共有11 572个语音数据文件;使用10种不同的噪声类型,其中包括8种来自DEMAND数据集[19]的实际噪声和2种人工合成的噪声类型[20],将纯净语音和噪声语音分别按照0 dB、5 dB、10 dB和15 dB的信噪比进行合成含噪语音数据文件。测试集使用由1名男性说话人和1名女性说话人构成的纯净语音,共有824段语音数据文件;使用来自DEMAND数据集[19]中不同于训练集的另外5种实际噪声,将纯净语音和噪声语音分别按照2.5 dB、7.5 dB、12.5 dB和17.5 dB的信噪比合成含噪语音数据文件。
将实验用到的所有语料的采样频率重采样为16 kHz,除特殊说明外,短时傅里叶变换(Short-Time Fourier Transform,STFT)的帧长设置为512点(32 ms),帧移设置为256点(16 ms),并使用汉明窗防止产生频谱泄露。使用STFT对含噪语音和纯净语音的每一帧进行处理得到一个257维的STFT幅度谱,分别作为输入特征和训练目标。使用的模型均含有7层的网络结构,CQRN和QRNN的隐层节点数为512。此外,CQRN中的卷积结构采用大小为1×9的卷积滤波器,即时间维度上的宽度为1,频域维度上的宽度为9。笔者采用的网络训练工具为CNTK[21]。
4.2 评价指标
使用了在语音增强领域常用的4种评估指标来测试CQRN的性能,包括语音信号失真指数(Composite measure of SIGnal distortion,CSIG)[22]、背景噪声干扰指数(Composite measure of BAcKground intrusiveness,CBAK)[22]、整体质量(Composite measure of Overall quality,COVL)[22]和语音质量感知评估(Perceptual Evaluation of Speech Quality,PESQ)[22]。其中,PESQ的得分范围为[-0.5,4.5],其他评估指标的得分范围为[0,5]。评估指标的得分越高,表示语音增强方法的性能越好。此外,为了验证CQRN的实时性,还计算了网络模型的实时率(Real-Time Factor,RTF)以及网络模型处理一帧含噪语音信息需要的时间。其中,RTF≤1时,就可以认为网络模型的处理满足实时性的要求。
4.3 网络性能比较
为了验证笔者提出的CQRN在实时语音增强任务中的有效性,进行了4部分的实验对比。首先为了验证CQRN在语音增强性能上优于QRNN,将CQRN与QRNN在增强后语音的质量和网络模型的参数量进行对比;其次为了进一步比较CQRN在语音增强任务的优越性,将CQRN与其他复杂网络的语音增强方法进行对比;然后,考虑到帧移对语音增强性能和实时性的影响,使用对不同帧移的时频特征进行训练CQRN并分析结果;最后,验证CQRN进行语音增强的实时性。
4.3.1 CQRN与QRNN对比
为了比较CQRN与QRNN的语音增强性能,在同一测试集上对两种网络进行测试。图3(a)~(d)分别给出了滤波器宽度k值不同取值所对应的增强后语音的平均CSIG、CBAK、COVL和PESQ的得分柱状图。从图3中可以看出,笔者提出的CQRN在各项语音增强性能评估指标的得分上均优于QRNN。在不同k值下,同一网络的性能也存在差异,其中k=2时语音增强效果提升最显著,而当k=3时,语音增强的性能较k=2时提升不大。
(a) CSIG得分
此外,相对全连接层,卷积层具有局部连接和权重共享的特性,且CQRN的参数量主要来自于卷积层,而QRNN的网络参数量主要来自全连接层,因此CQRN的网络参数量明显小于QRNN。表1所示为QRNN与CQRN网络参数量对比。随着k值的增加,两种网络的参数量都有所增加,但CQRN的参数量增加更为缓慢。
表1 QRNN与CQRN网络参数量对比
综上分析,权衡网络模型的复杂度和性能的关系,为充分利用CQRN在实时语音增强领域的优势,在实际应用中可以将滤波器的宽度k设置为2。此时,不仅CQRN的性能高于QRNN,且CQRN的参数量仅约为QRNN的53.61%,这不仅提高了语音增强的性能,还降低了模型的参数量。
4.3.2 与其他语音增强方法对比
为了进一步验证CQRN在语音增强性能方面的优越性,还将基于CQRN的语音增强方法与其他常见的语音增强方法在4个客观评估指标上进行了对比。表2列出了不同语音增强方法在同一数据集的增强性能指标得分情况,同时标明了不同方法是否使用了因果形式的输入。从表2中可以看出,笔者提出的CQRN在保证输入为因果形式的前提下,网络性能优于其他语音增强方法。
表2 不同语音增强方法的性能对比
4.3.3 帧移对CQRN性能的影响
近期研究表明,在时频域的语音增强中,STFT使用较小的帧移,获得的语音增强效果会更好[29]。此外,STFT使用较小的帧移,可以对下一帧含噪语音更早进行处理,如果网络模型处理的速度足够快,则语音增强的延迟会更小,所以较小的帧移比较适合低延时且简单的语音增强网络模型。因此,笔者在STFT帧长为512点(32 ms)的条件下,分别使用帧移为256点(16 ms)与128点(8 ms)进行实验对比。表3是滤波器宽度k=2的情况下,帧移分别为128点和256点的语音增强性能对比。可以看出,帧移为128点时,CQRN的语音增强的评估指标得分均高于帧移为256点的评估指标得分。
表3 帧移对CQRN性能的影响
4.3.4 CQRN实时性验证
为了验证CQRN的实时性,采用帧长512点(32 ms)、帧移256点(16 ms)的STFT幅度谱作为输入特征,分别在NVIDIA 1080Ti GPU和AMD R7-2700X CPU平台上进行实验。实验结果表明,CQRN进行语音增强时,在GPU和CPU平台上的平均RTF分别为0.026和0.699,在GPU平台和CPU平台上处理一帧需要的时间分别为0.41 ms和11.19 ms。因此,CQRN在这两种实验平台上能够满足实时性的要求。
5 结束语
基于QRNN的语音增强方法在时间序列上可以对含噪语音进行并行计算,但其在隐层进行特征提取时,直接使用全连接层而完全忽略了含噪语音时频域的相关性。基于此,笔者将CNN与QRNN相结合,提出了一种应用于实时语音增强的CQRN。CQRN使用卷积层代替了QRNN的全连接层,进而改变了QRNN在隐层对含噪语音特征进行特征提取的方式,既能通过卷积层提取含噪语音序列在时频域的二维相关性,提高语音增强的性能,又降低了模型的参数量。实验结果表明,CQRN在语音增强的性能和网络模型参数量方面都优于QRNN。相比于现有常用的语音增强方法,CQRN在保证因果形式输入的前提下,有效地降低了语音失真,更好地抑制了背景噪声,得到语音质量更好的语音信号。此外,在STFT帧长为512点(32 ms)和帧移为256点(16 ms)的情况下,CQRN在NVIDIA 1080Ti GPU和AMD R7-2700X CPU实验平台上均满足实时性的要求。
在下一步的研究中,为了达到在低配环境下的实时性,将对模型进行优化,在保证模型性能的前提下,提高模型的实时性。