A Convolutional Neural Network with Non-Local Module for Speech Enhancement

A Convolutional Neural Network with Non-Local Module for Speech Enhancement

论文链接

摘要

卷积结构本身具有局部感受野的限制,只有在递归调用卷积网络时,远距离依赖关系才得以捕获。这种递归卷积网络会导致效率上以及优化上的困难。受最近non-local mudule(我暂时称为非局部模块) 在许多计算机视觉任务中的出色表现启发,本文应用了在视觉任务上提出的非局部模块,原则上只用一层就可以实现全局感受野。

非局部模块可以获得从长距离的时频特征捕捉到全局信息,并且非局部模块的输入维度是灵活的,可以适应到很多网络结构。这种结构不仅可以提高计算效率,模型效果也不错。

关键词:speech enhancement, convolutional neural network, non-local module

介绍

语音增强不仅可以改善语音的听感,也可以用于其他语音相关的预处理步骤,即前端。如ASR,语音编码,助听器中都可以使用。

传统的语音增强方法已经研究了几十年,这些方法大多是基于背景噪声的附加性质,包括谱减法、迭代维纳滤波,最小均方误差谱(MMSE)算法在内的语音和噪声信号的统计特性。

然而,对于高度非平稳的噪声场景,这些基于统计的方法通常无法保证有效,正是因为不正确的假设,在增强语音任务中又引入了附加噪声。

上述的基于统计的方法几乎达到了传统处理方法的极限。在过去这几年,基于深度学习的方法取得了显著的突破:

  1. On Training Targets for Supervised Speech Separation》提出的mask方法可以说是目前增强任务中必用的一种结构,物理意义非常明确。
  2. SEGAN: Speech Enhancement Generative Adversarial Network》、《Conditional generative adversarial networks for speech enhancement and noise-robust speaker verification》提出了GANs在增强领域的应用。
  3. Gated Residual Networks with Dilated Convolutions for Supervised Speech Separation》、《A Fully Convolutional Neural Network for Speech Enhancement》、《Raw Waveform-based Speech Enhancement by Fully Convolutional Networks》这三篇介绍了FCNN相关应用。
  4. A Wavenet for Speech Denoising》、《Speech Enhancement Using Bayesian Wavenet》提出了WaveNet相关应用
  5. Speech enhancement with LSTM recurrent neural networks and its application to noiserobust ASR》、《Long short-term memory for speaker generalization in supervised speech separation》提出了RNN用于捕捉语音信号的短时特征,比DNN的表现高很多。
  6. 提到了RNN,就必须说一下CNN,CNN在速度上可以说是三种结构最快的,而且某些被提出的基于CNN的模型已经证明同样具有处理序列模型的能力。如《Language Modeling with Gated Convolutional Network》、《Gated Convolutional Neural Network for Sentence Matching
  7. 当然,也有结合CNN和RNN的C-RNN,《A convolutional recurrent neural network for real-time speech enhancement》、《Convolutionalrecurrent neural networks for speech enhancement》提出的网络证明C-RNN具有较好的泛化能力。

这阅读量,太扎实了哈哈

本文的目标就是设计一种既能捕捉到全局特征,又能达到类似卷积层的计算效率的网络结构。在这之前,《Multi-scale context aggregation by dilated convolutions》提出的空洞卷积/膨胀卷积被用来扩大感受野,增加网络捕获上下文信息的能力。

文章提到了全连接网路会丢失“位置信息”,不过我觉得对于音频来说,全连接网络既然可以保存时频特征的全局信息,音频上下文之间也具有相关性,这种所谓的“位置信息”在图像中可能很明显,不过在序列模型中,位置信息我没有感觉出来具体指的是什么。

non-local module在《Non-local neural networks》中提出。以及对应的其他视觉模型中的应用:《Non-local recurrent network for image restoration》、《Efficient Coarse-to-Fine Non-Local Module for the Detection of Small Objects》、《Arbitrary Style Transfer with Style- Attentional Networks》。

网络的基本结构是CNN+non-local module。非局部模块计算时频特征每个同频单元(imefrequency units in each frame)的相互相似性,这种相互相似性对于捕捉全局信息很有帮助。实验结果表明,这种结构大大提高了计算效率,和DNN,LSTM,C-RNN相比,都有不错的提升。

用于语音增强的非局部卷积神经网络

非局部模块

其中表示输入信号(图片,序列,视频等,也可能是它们的features),表示输出信号,其size和相同。用来计算和所有可能关联的位置之间pairwise的关系,这个关系可以是比如的位置距离越远,值越小,表示位置对影响越小。用于计算输入信号在位置的特征值。是归一化参数。
这段话在《Non-local Neural Networks》也有,可能是避免造成误解。

相似性函数(从非局部均值和双边滤波器来看)如嵌入高斯函数。在《Non-local Neural Networks》中提到了高斯函数以及嵌入高斯函数,区别就是嵌入高斯函数在一个embedding space中去计算相似度。此外,论文还提到self-attention模块是嵌入高斯函数的一种特殊形式,非局部均值和self-attention可以统一来看待。

公式:

其中 是两个卷积核为1的嵌入公式。
对应的,归一化参数变成了对 维进行softmax操作,即对于给定的 就变成了计算所有 的softmax,即

这一段结合《Non-local Neural Networks》看会更好一点。

非局部模块的输入和输出是保持一致的,所以可以很方便的嵌入到已有的模型中。本文也是对时频特征进行卷积,保持T的维度。“non-local block”这个词就能知道要产生残差项了。定义如下:

表示没有偏置的卷积操作, 来自于非局部计算公式。具体计算细节如图:

看图的话就是多了一步残差项的区别。

网络参数设置

“extension block”为了获得更大的感受野。所有层的激活函数使用的是ELU,参考《Fast and accurate deep network learning by exponential linear units (elus)》。

这个网络有个特点就是对于数据的利用比较全,在输入层就开始多次卷积。维度逐渐降低后,在高层特征使用复杂度稍大的non-local module。还提到简单的使用很多个non-local blocks并不能提升网络效果,所以最后在最后三层嵌入了两个模块。

实验

实验在TIMIT上进行,总计1000条训练数据和400条测试数据。

噪声:Babble, factory1, white Gaussian noise from NOISEX-92,railway noise from the Aurora2,

随机选取上述四种噪声类型中与干净语音长度相同的噪声段,与干净语音混合,生成一组信噪比为-5~15db、增量为5db的人工噪声段。

数据参考:

DARPA TIMIT acoustic-phonetic continous speech corpus CD-ROM. NIST speech disc 1-1.1

Assessment for automatic speech recognition II: NOISEX-92: a database and an experiment to study the effect of additive noise on speech recognition systems

The AURORA experimental framework for the preformance evaluations of speech recognition systems under noisy conditions

数据下采样到8kHZ,使用汉明窗,窗长256,帧移128,采用对数谱(自己尝试的结果是对数谱难收敛。)。并且输入和输出特征被标准化为零均值和单位方差,输出端进行反向处理。随机选取10%的对数谱数据作为验证集。
使用不同于训练集和验证集的噪声集:factory2 noise from the NOISEX-92, restaurant and street from the Aurora2 database,以及不同的SNR(-3 dB and 3 dB)作为noise mismatch测试集。

三个基线:

  1. DNN

    3 * 1024的hidden layer和sigmoid激活函数应用于除输出层之外的所有完全连接层。

    An Experimental Study on Speech Enhancement Based on Deep Neural Networks

  2. LSTM
    2 * hidden layer,都有1024个hidden unit。LSTMs的输出被输入到一个完全连接的层中。

    Speech enhancement with LSTM recurrent neural networks and its application to noiserobust ASR

  3. C-RNN
    2-D convolution 64 filters,kernel size (T, 16),t-f stride (1,8),2层512 hidden unit LSTM

    Convolutionalrecurrent neural networks for speech enhancement

不同的non-local block层实验,可以看到层数为2的时候是最好的,所以全局信息有作用,但也可能不是语音增强起主要作用的特征,论文的一个观点感觉比较正确:

more attention should be payed to the local timefrequency information of the first few layers to learn better features for the following layers of the network.

这个有点奇怪,对于不同的指标,Res-NL和NL各有优劣,论文没有解释这一点。不过总体来说,这种模块已经可以证明在增强应用上的确效果不错。

1
2
3
4
5
6
7
T=11(past 5 frames to future 5 frames)
Adam optimizer
learning rate is set to 0.001
Batch size = 128
MSE Loss
Epoch = 100
prevent overfitting: validation loss doesn’t decrease for more than 5 epochs

对于SNR为3db情况下的模型降噪图谱,可以看到NL要保留的更完整一些,这在实际应用中也很有意义。

从参数量来看,NL方式也有优势。

总结

一种新的非局部卷积神经网络。非局部操作通过计算时频单元的相互相似性,能够捕获频域中的长距离相关性。非局部模块是一个灵活的构建块,可以很容易地与任何现有的模型一起使用。实验结果表明,所引入的架构比其他baseline有更好的增强性能。另外,在网络的前几层中,为了更好地学习下几层的特征,需要更多地关注前几层的局部时频信息。在未来的语音增强中,将尝试采用一种更有效的方法,将二维谱图的全局信息聚合到非局部模块中。

一直想看这篇,终于抽出时间了。