论文解读-Unsupervised Audio Source Separation using Generative Priors

  • 时间:
  • 浏览:
  • 来源:互联网

Unsupervised Audio Source Separation using Generative Priors论文解读

本文以读懂Unsupervised Audio Source Separation using Generative Priors论文(Interspeech2020)为主线,对WaveGANDeep Audio Prior(DAP)Projected Gradient Descent(PGD) optimization等该论文所应用的方法一并做了解读,以帮助读者更好地理解该论文的思路脉络。

文章目录

1. 相关介绍

1.1 Audio source separation

首先想请大家了解一下什么是音源分离,下面是我粗略整理的思维导图:
ASS
音源分离是将各组成源信号从给定的混合音频中恢复分离出来的过程。
一些应用场景和分类包括:语音增强、音频去混响、音频降噪、说话人分离和声源定位(仅针对多声道音源分离)等。

至于当下的音源分离研究现状是怎样的,请见下图总结:
Related work

1.2 Motivation

有这样一些方法常用于音源分离:

  1. Matrix Factorization 矩阵分解机
    传统的音源分离方法主要是矩阵分解机,通过矩阵分解可以实现在混合音频数量多于要分离出的音源的数量的情况下(over-determined senarios)的音频分离,但是对混合音频数量少于要分离出的音源的数量的场景(under-determined senarios)无能为力。主要的方法包括ICA、PCA、NMF、FastICA、KernelPCA等(这五个方法也是我们后来作为实验比较对象所用到的方法)。

  2. Supervised Deep Learning 有监督的深度学习方法
    随着深度学习的火热,音源分离也尝试将神经网络引入任务中来,它可以解决传统的矩阵分解机无法分离under-determined 场景的方法。缺点是需要大量的观测标签数据,以及当训练所用的给定音源和混合过程改变时,模型需要重新训练(re-training),这是一件耗时又麻烦的事。目前有基于时域和谱域的有监督的深度学习方法。

  3. Unsupervised methods 基于无监督学习的音源分离方法
    为了解决有监督的深度学习所需带标签的观测数据集大的问题,引入了无监督学习方法。无监督学习方法,可以利用数据驱动模型的优势,利用有意义的先验知识对带标签数据集的缺乏问题做一定程度的缓解。

  4. Priors utilization对于先验知识的利用
    为了解决re-training问题,人们想到利用一些先验知识对其进行改善。

a. 统计学先验知识 该类方法往往基于一定的统计学假设,比如非高斯性和独立性等,使用起来会受一定限制。 b. 结构上的先验
一些深度神经网络的的设计表明特定的精心选择的网络,有调整或者作为一个先验来解决病态的inverse
problems的内在能力。Deep Audio Prior就是一个例子,他通过随机初始化神经网络结构,利用U-Net网络(利用了反卷积神经网络deconvolution neural network的思想)来学习时频掩码,从而达到音源分离的效果。
c. GAN 先验
第三种基于先验的方法是通过使用经过生成式模型(比如生成对抗网络GAN)定义的先验。因为GAN能够从充足的无标签数据中学习参数化的非线性分布 p ( X ; z ) p(X;z) p(X;z),其中z为模型隐变量。利用后验分布 p ( X = x ∣ x ^ ; z ) p(X=x| \hat x;z) p(X=xx^;z),我们可以利用隐变量 z z z和被损坏的观测数据 x ^ \hat x x^推测恢复出原有的完整数据。这也是利用GAN先验可以实现音源分离的理论依据之一。因为后验分布不能被可分析地表达,故在实践中,本文使用诸如PGD优化器的迭代方法来评估隐藏特征 z ^ \hat z z^,然后从生成器中采样,就是说 p ( X ; z = z ^ ) p(X;z=\hat z) p(X;z=z^).

在这里,本文主要使用无监督的方法,通过利用特定源的先验,基于精心设计的基于谱域的损失函数的投影梯度下降优化器来完成音源分离。

2. 方法

2.1 Overview

以下是本文提出方法的框架结构和算法:
framework
Algorithm
首先输入无标签的混合音频m(反映该方法的无监督性),要分离的源的数量K,和预训练好的GAN先验模型;我们所期望的输出是评估源集合 { s ^ i ∗ } i = 1... K \{\hat s ^*_i\}_{i=1...K} {s^i}i=1...K.

首先将隐向量 { z ^ i } i = 1... K \{\hat z_i \}_{i=1...K} {z^i}i=1...K初始化为0向量,则结合已经预训练好的模型先验 G i G_i Gi可以直接得到隐向量 z i z_i zi对应的音频的波形waveform,将K个waveform相混合即得到要评估的混合音 m ^ \hat m m^ 。接下来通过计算音源级别和混合音级别的语谱图spectrograms,即可计算损失函数,再依此来通过梯度下降的方法更新隐变量 z ^ i \hat z_i z^i ,在这里需要注意的是,由于WaveGAN生成waveform的功能只适用于对固定范围内的隐变量z(在这里是[-1,1]),故我们需要利用投影梯度下降优化器来对已经做过梯度下降的隐变量 z ^ i \hat z_i z^i做投影映射到可行域[-1,1]之间,来使梯度下降的更新值分布在[-1,1]之间。

  • 有关PGD优化器的相关原理如下,供有兴趣的旁友们参考:
    PGD

目标函数如下:
目标函数
等式右边第一项为经验损失(empirical loss),第二项为结构损失(structural loss)(为可选项,常为正则化项)。
最后,利用迭代优化最后使损失最小而得到的最终隐变量 z ^ i ∗ \hat z^*_i z^i和预训练好的GAN先验生成器来生成各个源对应的waveform,混合起来即得到评估混合音 { s ^ i ∗ } \{\hat s^*_i\} {s^i}

2.2 用于数据先验重构的WaveGAN

以下是我总结的这里使用的WaveGAN的一些依据:
WaveGAN
我们可以看到,由于本文的数据集是:

  • SC09:一种英文版各种单一人声念数字的1s一段的音频集合,16kHz;
  • Drums:一种1s一段的各种单一鼓声的集合,16kHz;
  • Piano:一种巴赫选集的钢琴声,每一段的长度都在50s以上,48kHz。(训练时先被重采样至16kHz)
    (“各种单一”的意思是整个数据集包含不同的人和鼓,但是每一段只由同一个人或同一个鼓声发声)
    由于WaveGAN已经被证明了能够生成语音、鼓声和钢琴声,因此可以确定直接拿来用;以及WaveGAN生成音频的速度效率很高,几秒钟能生成几个小时长的音频,可以直接用于多媒体场景。故选择了WaveGAN生成最后的音频。
    在这里,我们分别单独生成了K个特定音源的先验。

2.3 Losses

这里设计了4个基于谱域的损失函数,下面一一介绍。

2.3.1 多分辨率声谱损失 L m s L_{ms} Lms

是为了保证待评估混合音和输入混合音之间的感知相似性而设置的:
Loss1
∣ S T F T l ( . ) ∣ |STFT^l(.)| STFTl(.)代表了第 l l l个空间分辨率下的声谱能量。在这里,我们利用双线性插值做了平均池化。 l l l类似于CV中的图片下采样因子,在这里使用的是(2,2)维度的平均池化利用零填充的算法:

  • l = 1 l=1 l=1时:表示对原声谱图进行了2*2的平均池化,并计算上面的损失保留下来;
  • l = 2 l=2 l=2时:我们对已经做过这样一次平均池化的声谱图又做一次同样的平均池化,再次计算上面的损失并保留;
  • l = 3 l=3 l=3时:重复平均池化、损失计算;
    最后我们对 l l l的每一个取值对应计算得出的损失求和得到最终的多分辨率声谱损失 L m s L_{ms} Lms
2.3.2 源分离损失 L s d L_{sd} Lsd

该损失从对图片的损失函数设计中受到的启发,其目的是为了通过计算由不同特定源先验生成的声谱图之间的相关度correlation,使之尽可能的小而设计的。该值越小,由不同源先验生成的属于不同源的spectrogram就越不相关。计算公式如下:
Loss2
其来源中原始设计的针对图片的损失函数如下,该函数DAP中也借鉴了,有兴趣的旁友们可以了解一下:
Lexcl
这里的n为图片下采样因子,图片生成器通过双线性插值以 2 n − 1 2^{n-1} 2n1因子进行采样。目的是为了使图片的Transmission层和Reflection层相关性越小越好。

2.3.3 混合音相关损失 L m c L_{mc} Lmc

这个损失函数的设计思路和上一个是一样的,只是其目的是为了使待评估的混合音和输入混合音之间尽可能相关,这里本文作者就直接使用加一个负号通过使其绝对值尽可能大些来增加二者之间的相关性,个人感觉设计比较粗糙,公式如下:
Loss3

2.3.4 频率连续性损失 L f c L_{fc} Lfc

从声谱图上根据时间和频率对应的每一个点来计算能量,目的是为了改善输入混合音和合成混合音之间的感知相似度,尽可能使其时频连续性好,论文中列出的公式如下:
Loss4
emmm我研究公式的时候感觉不太能理解这个除法的设计道理,总觉得可能把除法换成减法会更好理解一些,但由于本人不够了解图像方面的知识,也不敢轻易下结论。
于是去查看了代码的详细计算方法,却发现代码的确是计算的除法,但是却和上图的公式对不起来,写出来应该是这样:
Loss4-1
只能说作者的风格的确不够严谨呢,不过思维还是够活跃跳跃的。

  • 最终的损失函数为:
    在这里插入图片描述
    其中通过调参发现下面的取值下效果较好:
    在这里插入图片描述

3. 评估与实验

评估指标中,mean spectral SNR和 mean EMS envelope distance主要用于评估声谱的感知质量,而mean SIR主要用于量化一个评估源对另一个造成的干扰大小。SNR和SIR越大越好,mean EMS envelope distance则越小越好。
我将实验复现之后分别得到的损失曲线如下:
lossPlot
再拉近了单独看第一个:
lossplot1
在这里蓝色曲线代表 L m s L_{ms} Lms,黑色为 L s d L_sd Lsd,绿色为 L m c L_{mc} Lmc,黄色为 L f c L_{fc} Lfc.
我们可以看到结合 β i \beta_i βi的取值,起作用的主要是多分辨率声谱损失,其他的损失取值相比它来说都太低,作用基本可以忽略。所以说这个论文的loss块其实还是有很大的改善空间的。

4. 总结展望

总的做成图如下:
sum

总的来说,本文通过使用无监督的方法,通过利用特定源的先验,基于精心设计的基于谱域的损失函数的投影梯度下降优化器来完成音源分离。可以分离不限定数量的音源,但是必须有相应的数据集以训练GAN先验,但是它不能分离先验训练中没有用到的源。如果要分离未知混合过程(方式)的音源还需进一步设计工作。

以下纯属个人想法
(精心设计的损失函数如果表达成精心拼凑可能会更贴切,看着理论上的意义还不错,但是实验起来却几乎对实验不产生多大影响,尤其在$L_{ms}$相当大和占比也相当大的基础上,其他的源就像在陪衬而已。但是论文还是水出来了,公式和自己实验用到的不一样也没被发现,挺幸运的嘛。

作为音频刚入门菜鸟选手,还请各位大佬多多指教,欢迎大佬们来评论区喷我鸭~~

以下是我精读论文过程中参考的论文,贴出来也供大家参考鸭~

参考文献

  1. D. Wang, J. Chen. “Supervised Speech Separation Based on Deep Learning: An Overview,” IEEE/ACM Transactions on Audio, Speech, and Language Processing. PP. 10.1109/TASLP.2018.2842159, 2017.
  2. S. Makino, S. Araki, R. Mukai, and H. Sawada, “Audio source separation based on independent component analysis,” in IEEE International Symposium on Circuits and Systems, vol. 5, pp. May, 2004.
  3. J. Karhunen, L. Wang, and R. Vigario, “Nonlinear pca type approaches for source separation and independent component analysis,” International Conference on Neural Networks (ICNN), vol. 2, pp. 995–1000, 1995.
  4. D. Ulyanov, A. V edaldi, and V . Lempitsky, “Deep image prior,” IEEE Conference on Computer Vision and Pattern Recognition, pp. 9446–9454, 2018.
  5. Y . Tian, C. Xu, and D. Li, “Deep audio prior,” arXiv preprint arXiv:1912.10292, 2019.
  6. I. Goodfellow, J. Pouget-Abadie, M. Mirza, B. Xu, D. WardeFarley, S. Ozair, A. Courville, and Y . Bengio, “Generative adversarial nets,” Advances in neural information processing systems, pp. 2672–2680, 2014.
  7. A. Radford, L. Metz, and S. Chintala, “Unsupervised representation learning with deep convolutional generative adversarial networks,” arXiv preprint arXiv:1511.06434, 2015.
  8. C. Donahue, J. McAuley, and M. Puckette, “Adversarial audio synthesis,” arXiv preprint arXiv:1802.04208, 2018.
  9. Drummond, L.G., Iusem, A. A Projected Gradient Method for Vector Optimization Problems. Computational Optimization and Applications 28, 5–29 , 2004.
  10. S. Mika, B. Schölkopf, A. J. Smola, K.-R. Müller, M. Scholz, and G. Rätsch, “Kernel pca and de-noising in feature spaces,” Advances in neural information processing systems, pp. 536–542, 1999.
  11. O. Ronneberger, P . Fischer, and T. Brox, “U-net: Convolutional networks for biomedical image segmentation,” International Conference on Medical image computing and computer-assisted intervention, pp. 234–241, 2015.
  12. X. Zhang, R. Ng, and Q. Chen, “Single image reflection separation with perceptual losses,” IEEE Conference on Computer Vision and Pattern Recognition (CVPR), pp. 4786–4794, 2018.

本文链接http://www.dzjqx.cn/news/show-617090.html