LEARNING WITH LEARNED LOSS FUNCTION: SPEECH ENHANCEMENT WITH QUALITY-NET TO IMPROVE PERCEPTUAL EVALUATION OF SPEECH QUALITY

LEARNING WITH LEARNED LOSS FUNCTION: SPEECH ENHANCEMENT WITH QUALITY-NET TO IMPROVE PERCEPTUAL EVALUATION OF SPEECH QUALITY

摘要

MSE-LOSS作为语音增强最常用的一种损失函数,更大的原因可能是神经网络框架内置的loss对其影响,很多人在这上面解释了为什么MSE-LOSS有效果,以及和人类感知系统之间的关系。不管怎么说,总有一种事后诸葛亮的味道。本文非常直接,目标就是让PESQ最大,做法就是训练一个评价网络,以最大精度去评测两个音频之间的PESQ指标。然后固定权重,去训练其他模型,按照论文的说法,是能够使模型效果获得提高的。

介绍

MSE-LOSS低并不意味着音频质量高,所以以PESQ和STOI为目标LOSS进行网络的更新就变成了一个新的考虑方向。

论文提到了他们之前用STOI作为LOSS(《End-to-end waveform utterance enhancement for direct evaluation metrics optimization by fully convolutional neural networks》),以及很多尝试都是去拟合PESQ来使这个指标变得可微。这些针对于特定指标的模型都证明了其自身相对于纯MSE-LOSS的优越性。

本文的思想是用神经网络去近似pesq,这里是把神经网络作为一个映射函数,算是回归本质了。在之前的论文(《Quality- Net: an end-to-end non-intrusive speech quality assessment model based on BLSTM》)使用了类似的方法,不需要clean语音就可以近似计算增强语音的一个指标,这个指标和pesq有很大的相关性。

这里把Quality-Net作为映射函数,一个与PESQ相关的映射函数。然后前面接一个增强网络。

PESQ优化

论文用到的映射函数(quality-net)和之前的版本有点区别。lstm层改为cnn,加快收敛。

训练映射函数

步骤:

  • 计算训练数据的pesq。
  • 使用MSE-LOSS作为这个映射函数的loss
  • 训练之后就是把映射函数的权重固定,然后去训练增强模型部分:

image.png

  • 论文中提到了一种overlap-add的方法。需要注意

实验

数据

数据使用的是TIMIT corpus。

训练集:

用300句clean语音训练,10中噪声类型(crowd, 2 machine, alarm and siren, traffic and car, animal sound, water sound, wind, bell, and laugh noise)加噪,从-8~8步长4的五种SNR范围,总共形成了15000跳训练语句。

验证集:

从TIMIT训练集额外选出100句干净语音,然后采用不同于上述的噪声数据进行加噪,从-10~10步长5的5种SNR范围,总共500句

测试集:

选用TIMIT测试集中100条语句,使用四种噪声,-6 dB, 0 dB, 6 dB, 12 dB, and 18 dB,五种SNR,2000条语句进行测试。

除了噪声数据,训练集还包括增强模型得出来的数据结果。

模型

论文提到对于音乐增强是采用了《DNN-based source enhancement to increase objective sound quality assessment score》这篇论文的一个想法,有时间可以读一下。
具体来说就是下面的公式:

image.png

其中

1
G_{min} = 0.05

优化策略使用RMSProp,是适合RNN的一种梯度下降算法。

enhancement model是lstm+dnn hidden mask。

具体结构:
two bidirectional LSTM layers, each with 200 nodes, followed by two fully connected layers, each with 300 LeakyReLU nodes and 257 sigmoid nodes for IRM estimation

注意的就是输出的时候过了上面的music噪声加强过滤公式。

quality net是4层卷积filters and kernel size as follows: [15, (5, 5)], [25, (7, 7)], [40, (9, 9)], and [50, (11, 11)]

为了解决音频的变长问题,加了一层global average pooling layer。特征固定是50维。后面接三层全连接网络,具体结构:each with 50 and 10 LeakyReLU nodes, and 1 linear node

最后是归一化到0~1的。归一化步骤请看:《Spectral normalization for generative adversarial networks》

由于保证了连续性,这一步也是能够提高模型优化效果的。

用quality net 微调增强模型

不知道这里为什么说是fine tuning,感觉这个应该是重新训练了吧。难道是保留了之前的权重,还是说暗示这种方法其实作用不是很大。

不过在看完提升的结果之后,还是fine tuning更合适:

image.png

从结果上说,这里得到的提升在验证集上不是很明显,大概在0.1左右。不过这证明了quality net的确是有效果的,能够帮助模型进一步提高。

看到这一步也大概知道为什么没有留下代码了。讲道理,这些步骤合在一起挺烦人的,更何况还要给别人看。

实验结果

image.png

从结果上看,即便是使用了可微版PESQ的PMSQE作为loss,结果也没有BLSTM的好,不知道BLSTM在PMSQE上的表现如何。

不过这种方法不是万能的,在迭代刚开始,由于增强数据也被用于训练,所以quality net本质上还是学习了当前网络的一个优化,当参数更新几次后,新的数据显然表现要差很多,如下图所示。这也是作者后面继续研究的一个重点。

image.png

结论

本文提出采用质量网作为近似的PESQ函数,形成目标函数对语音增强模型进行微调。该学习损失函数成功地解决了直接PESQ优化过程中遇到的不可微问题。实验结果表明,将质量净损失最小化可以进一步显著提高PESQ评分。在未来的工作中,作者计划同时优化STOI和PESQ评分,并提出损失函数和多指标学习。