音乐人声分离小结
音乐人声分离概况
音乐人声分离的目的是,从一首歌曲中分离出人声和伴奏声。Project on Music/Voice Separation这个网站比较了一些基于传统方法的效果,但是由于基于了一些假设(比如REPET就假伴奏都是周期重复信号),这些算法在实际测试过程中效果都差强人意。随着深度学习的流行,音乐人声分离这个领域也开始被基于深度学习的方法所占领。在SiSEC MUS上可以看到效果比较好的都是基于深度学习的方法。
基于深度学习方法的处理框架
训练数据
以DSD100数据集为例,下面是DSD100数据集的目录结构1
2
3
4
5
6
7
8
9
10
11
12
13
14|--DSD100
|--Mixtures
|--Dev
|--051 - AM Contra - Heart Peripheral
|--mixture.wav ==> 混合音频
|--Test
|--Sources
|--Dev
|--051 - AM Contra - Heart Peripheral
|--bass.wav ==> 各成分音频
|--drums.wav
|--other.wav
|--vocals.wav ==> 人声部分音频
|--Test训练流程
训练目标
在本任务中的训练目标是对应输入混合音频幅度谱的一个Mask,通过这个Mask与混合音频幅度谱做mask乘法,就可以得到目标音频的幅度谱,再结合混合音频相位谱,做ISTFT就可以得到目标音频。下面是本任务的损失函数,其中X代表混合音频幅度谱,Y代表目标音频幅度谱,f(X,&)代表模型输出的Mask。
Idea Binary Mask
理想二值掩蔽”(Ideal Binary Mask)中的分离任务就成为了一个二分类问题。这类方法根据听觉感知特性,把音频信号分成不同的子带,根据每个时频单元上的信噪比,把对应的时频单元的能量设为0(噪音占主导的情况下)或者保持原样(目标语音占主导的情况下)。
Idea Ratio Mask
IRM(Ideal Ratio Mask),它同样对每个时频单元进行计算,但不同于IBM的“非零即一”,IRM中会计算语音信号和噪音之间的能量比,得到介于0到1之间的一个数,然后据此改变时频单元的能量大小。IRM是对IBM的演进,反映了各个时频单元上对噪声的抑制程度,可以进一步提高分离后语音的质量和可懂度。
Deep U-Net方法介绍
1 | 卷积层参数个数 = (kernel_w * kernel_h + 1) * output_channel |
- Encode-Decode结构
U-Net中使用的Encode-Decode结构有点类似于图像中的多尺度金字塔,在高分辨率图像中更多关注的是图像的细节纹理,而在低分辨率图像中则更多关注的是图像的轮廓信息,这样就可以对不同层级的信息进行分开建模。 - 跳跃连接(Skip-connection)
skip-connection使得每个节点在进行建模时,能够同时利用到本层的信息和来自下一层的信息
相关尝试
UNet++网络结构将Skip-Connection发挥到了极致,每个节点不单单只跟同层相邻节点连接,而是跟同层所有节点进行相连。同时一个大的UNet++网络结构其内部又可以一层层拆分成小的UNet++网络结构,这个特点使得其在做剪枝优化的时候非常简单方便,如图UNet++ L4到UNet++ L1就是简化过程。
由于UNet++相对于UNet结构增加了大概20%的参数,而训练数据并没有相应增强,最后的效果还没达到UNet的结果。
Deep Complex Network
实验验证相位在分离任务中的作用
方法 | 效果(1-10分,分数越高效果越好) |
---|---|
理想结果 | 10 |
基于幅度谱方法的结果 | 8 |
基于幅度谱和相位谱方法的结果 | 7 |
忽略相位的结果 | 0 |
基于幅度谱方法的理想结果 | 8 |
相位对于音源分类任务的影响极小,更准确的幅度谱估计才能提升效果,相位沿用混合音频的相位就好。
一些可能的方向
WAVE U-Net直接在时域上进行分离
WAVE U-Net分离的结果中伴奏都很弱
Multi-Scale Multi-band
借鉴图像分割领域的一些想法和进展
对音频信号的短时幅度谱进行分割与对图像进行语义分割一个很大的不同在于,音频信号在幅度谱上是有位置差异的,也就是说同样形状的的信号在不同位置,它代表就是不同的音频内容;而在图像语义分割中,分割的对象是没有位置这个信息的,分割对象是可以存在于图像中不同的位置。
公开的数据集
名称 | 数据量 | 时长 | 年份 | 链接 |
---|---|---|---|---|
DSD100 | 100首 | 6h58m20s | 2015 | https://sigsep.github.io/datasets/dsd100.html |
ccMixter | 50首 | 3h12m30s | 2014 | https://members.loria.fr/ALiutkus/kam/ |
MUSDB18 | 150首 | 9h50m | 2017 | https://sigsep.github.io/datasets/musdb.html |
参考
[1] Project on Music/Voice Separation: 一些传统方法
[2] SigSep:关于音乐人声分离的公开数据集和开源实现方法
[3] Paper: Singing Voice Separation With Deep U-Net Convolution Networks
[4] Paper: UNet++: A Nested U-Net Architecture for Medical Image Segmentation
[5] Github: UNet-VocalSeparation-Chainer
[6] Github: UNetPlusPlus
[7] Github: Wave-U-Net
[8] Github: Deep-Complex-Networks
[9] Paper: Multi-Scale Multi-Band Densenets For Audio Source Separation
[10] SigSep–Tutorial–”Music Source Separation with DNNs, Making it work”
[11] 搜狗研究员讲解基于深度学习的语音分离
[12] Paper: Phase-Aware Speech Enhancement With Deep Complex U-Net
[13] SiSEC MUS: 音乐人声分离竞赛
[14] Project on Music/Voice Separation: 一些传统方法