A Convolutional Recurrent Neural Network for Real-Time Speech Enhancement

A Convolutional Recurrent Neural Network for Real-Time Speech Enhancement

文章:A Convolutional Recurrent Neural Network for Real-Time Speech Enhancement
作者:Ke Tan, DeLiang Wang

ABSTRACT

现实生活中许多语音增强的应用都需要实时处理,最好没有延迟或者低延迟,例如助听器和人工耳蜗。本文提出了CRN的网络结构实现单通道语音增强。把CED和LSTM结合到CRN架构中,形成一个实时处理的因果系统。而且,所提出的模型中噪声与说话人无关,即噪声类型和说话人在训练集和测试集中可以是不同的,实验表明CRN比现存的LSTM模型表现出更好的PESQ和STOI。而且,CRN所需的参数更少。
关键字:噪声和说话人无关的语音增强。实时应用,CED,LSTM,CRN

Introduction

语音分离旨在将目标说话人从背景干扰噪声中分离出来,包括非语音噪声,干扰语音和房间混响。语音增强涉及到分离语音和非语音噪声,生活中有各种各样的应用,例如:鲁棒性自动语音识别和移动设备语音交流。这些都需要实时处理,换句话说,语音增强应该被表现为低计算复杂度,并且提供瞬时输出。
文章中,我们集中于可运行在实时应用中的单通道语音增强,例如,在数字助听器中,对于听的人来说,3毫秒的延迟就很明显,大于10毫秒的延迟则令人讨厌。对于这些应用,需要一个没有未来信息的因果语音增强系统。
受CASA中时频掩蔽的启发,近年来语音分离被作为监督学习任务进行研究,使用DNN来学习噪声特征到时频掩蔽的mapping。IBM是第一个在监督语音分离中使用的目标,他把时频单元归为语音域或噪声域。最近提出的训练目标包括IRM,和基于mapping的特征,对应于目标语音的功率或幅度谱。此项研究中,我们使用了目标语音的幅度谱作为训练目标。
对于有监督的语音增强,噪声泛化和说话人泛化同样重要,处理噪声泛化的一个简单有效的方法是训练不同类型的噪声,类似的,处理说话人泛化也是这样,训练集中包含了大量的说话人,然而,许多研究发现DNN的前向传播不能跟踪训练集中的多个说话人,典型的,DNN从帧周围的小上下文窗口独立的为每个时间帧预测一个标签。一种解释是DNN不能利用对于跟踪目标说话人来说非常重要的长的上下文信息。最近的研究发现将语音分离当作序列到序列的映射能更好利用长的上下文信息。
基于这样的想法,RNNs和CNNs被用于噪声和说话人无关的语音增强,即噪声类型和说话人在训练和测试时可以不同,Chen et al.提出了有四层隐藏LSTM层的RNN解决噪声无关的说话人模型的说话人泛化。实验结果发现LSTM模型适用于未训练的说话人,并且在STOI优于DNN模型,最近有研究提出了提出了基于扩张卷积的GRN,相比于LSTM。GRN在不同的SNR上对未训练的说话人表现出更高的参数有效性和泛化能力,但是,GRN在每个时间帧需要大量的未来信息来做mask估计或者谱映射,因此不能被使用在实时语音增强上。
受最近CRN工作上的启发,我们提出了一个新的关于噪声和说话人无关的实时语音增强系统CRN架构,CRN结合了CED和LSTM。所提出的系统比LSTM有更好的客观语音可懂度和质量,而且,CRN训练参数更少。
论文的其他部分包括:模型的具体细节描述,实验的建立和结果,以及总结。

System description

2.1Encoder-decoder with causal convolutions
Badrinarayanan et al.首次对于像素成像标签提出了卷积编码解码网络(一个因果卷积的例子是卷积输出不依赖于特征输入),一个卷积编码器后面跟着一个相应的卷积解码器,送进softmax分类器中,encoder是卷积层和池化层的一个栈,他用于从输入的原始图像中提取高层特征。decoder和encoder的结构相同,顺序相反,他将低分辨率特征映射到encoder的输出去。。。对称的结构保证输入和输出有相同的shape。所以它很适合做像素级成像标签预测,目标是预测输入图像的每个pixel的标签。
对于语音增强,使用CED把噪声的幅度谱映射到干净语音的幅度谱上,幅度谱可以简单的被视为图像,据我们所知,Park et al.首次在语音增强中引入了CED,他们提出了R-CED,由重复的卷积,BN层和RELU激活函数层组成。R-CED另外使用了跳跃连接进一步优化,将编码器中的每一层连接到对应的解码器。
在我们的网络中,encoder有5层卷积层,decoder有5层反卷积层。我们将指数线性单元(ELUs)应用到所有的卷积层和反卷积层除了输出层。ELUs比RELUS,可以更快的收敛,更好的泛化,在输出层,我们优化了soft plus(对RELU函数做一个平滑估计)激活层,它用来约束输出是正的,而且,我们在每一个卷积或反卷积层后和激活函数前用了BN,kernels的个数保持对称,当在encoder中减少,在decoder中增加,为了在频域方向利用更大的上下文信息,我们在频域方向对所有的卷积或反卷积层中采用的步长为2,换句话说,我们将频域的特征映射尺寸减半在编码器中逐层映射,在解码器中加倍,而不改变时间维度特征映射的尺寸。为了提高网络的信息流和梯度,我们优化了跳跃连接,将每个编码器连接到解码器的输入中。
为了获得实时语音增强的casual 系统,我们在encoder-decoder之上提出使用casual卷积层,输入被当作特征向量的序列,图一值解释了在时域上,在casual卷积中,输出不依赖于特征输入,用casual卷积代替了noncasual卷积和encoder-decoder架构构成了casual系统,同样的操作也应用在反卷积上。
2.2Temporal modeling via LSTM、
利用上下文信息对于跟踪说话人很重要,上下文信息不能被CED使用。LSTM是RNN的一种,它包含记忆单元,LSTM在各种应用的时态建模中取得成功,例如声学模型和视频分类,考虑到语音的时间。。,我们在encoder和decoder中插入了俩层LSTM层,研究中,我们使用了下面公式定义的LSTM。
为了获得LSTM需要的shape,在输入LSTM前,我们将频域和encoder输出的深度的维度打平产生一个特征向量序列,LSTM的输出序列被reshape去适应decoder,值得注意的是,LSTM层并不改变系统的因果性。
2.3network architecture
A Convolutional Recurrent Neural Network for Real-Time Speech Enhancement_第1张图片
我们使用了161维度的STFT噪声的幅度谱作为特征输入,干净语音作为训练目标。CRN的结构如图所示
A Convolutional Recurrent Neural Network for Real-Time Speech Enhancement_第2张图片
神经网络的输入编码进更高维的潜在空间中,潜在特征向量的序列,由俩层LSTM建模,是继善,LSTM的输出层被decoder转换回原始输入时的shape,CRN将二者结合起来,利用了CNN的特征提取能力和RNN的时间建模能力。
模型的 一些细节在表一给出,每一层的输入和输出被描述为 featureMaps × timeSteps ×
frequencyChannels,每层的超参数也在表中给出,我们对所有的卷积和反卷积层都将零填充到时域方向,而不是频域方向,为了实现因果卷积网络,我们使用23的卷积核(timefrequency),注意在每个decoder层中feature maps的数量被跳跃连接加倍。
2.4LSTM baseline
实验中,我们建立了俩个LSTM baselines作为对比。在第一个LSTM模型中,使用一个11帧的特征窗口估计目标的一帧(10帧过去的和1帧现在的),换句话说,11帧的特征向量被连接到一个长向量中作为每个时间步骤的网络输入,在第二个LSTM中,没有使用特征窗口,第一个模型标记为LSTM-1,第二个标记为LSTM-2,从输入到输出分别是,LSTM-1有11161,1024,1024,1024和161个单元,LSTM-2有11161,1024,1024,1024和161个单元,俩个baseline都没有使用未来的信息。

Experiments

3.1
数据集:WSJ0 SI-84训练集,包含83(42名男性,41名女性)个说话人的7138条说话人信息。
从中抽取6个说话人作为未训练的说话人,我们使用其余的77个说话人训练模型,为了实现噪声无关的模型,我们用了一个语音库中的1000条噪声用来训练,时长126个小时(thttps://www.sound-ideas.com),测试集使用了俩种有挑战性的噪声(babble和cafeteria)(http://www.auditec.com)
我们制作了一个训练集包含320000条混合语音,时长500小时,我们将随机挑选的训练语音和随机从1000句-5-0db的训练噪声中截取的片段混合在一起,为了检验模型对于说话人泛化的效果,我们创建了俩个测试集,噪声使用6个训练说话人(3男3女)和6个未训练说话人。一个测试集包含由6个训练的说话人产生的150(25*6)条混合语音,另一个是未训练的说话人产生的150混合语音,注意所有的测试集不在训练集中,我们在训练集中使用-5dB和-2dB的SNR,所有的信号按16kHz采样。
模型优化器使用Adam.学习率为0.0002,MSE作为目标函数,训练模型时使用16minibatch,在minibatch中,所有的训练样本都用0填充以具有和最长样本相同的时间步长,最好的模型是通过交叉验证来选择的。
3.2Experimental results
实验中,我们使用STOI和PESQ作为评价指标,实验结构如下表所示。
A Convolutional Recurrent Neural Network for Real-Time Speech Enhancement_第3张图片
LSTM-1和LSTM-2在训练和未训练说话人上的分数很接近,说明LSTM-1使用了特征窗口并没有提升性能。而CRN在俩个评价指标上都持续由于LSTM baselines,例如,CRN比LSTM模型在STOI上提升了2%,在PESQ上提升了0.1,从表中看出,CRN在未训练说话人表现更好,大多数有挑战性的情况是未训练的说话人和未训练的噪声以-5dB混合在一起的语句,CRN在未处理的混合语句上有在STOI上有18.56%的提升,在PESQ上有0.55的提升
CRN利用了BN,很容易的应用到卷积操作上加速训练和提升性能,图4比较了训练和测试的MSE在不同模型的训练轮次上,模型估计了在测试集上的6个未训练的说话人。我们观察到CRN收敛的更快并且相比于俩个baselins有更低的MSE值,而且,CRN所需的参数个数更少。
A Convolutional Recurrent Neural Network for Real-Time Speech Enhancement_第4张图片
原因是在卷积层中使用了共享权重,因此CRN也更容易训练。
另外,CRN中的因果卷积在未使用未来的信息时捕捉了输入STFT幅度谱的本地的空间信息,相反的,LSTM模型把输入的每一帧当作一个打平的特征向量,不能有效的利用STFT幅度谱中的时频结构。另一方面,CRN中的LSTM 建模了潜在空间的时间依赖,这一点在与说话人无关的语音增强中的说话人特征很重要。

Conclusions

研究中,我们提出了CRN来解决噪声与说话人无关的实时语音增强应用,提出的模型时因果语音增强系统,不适用未来的信息,估计的结果表明CRN在STOI和PESQ上比俩个LSTM 的baseline表现要好,无论是训练还是未训练说话人。另外,CRN的参数更少,我们认为模型将为实时语音增强的实时应用提出了一个更好的方法,这些应用包括在线操作,单通道操作和噪声与说话人无关的模型。

你可能感兴趣的:(深度学习,pytorch)