会议:2019 interspeech
作者:Eliya Nachmani
单位:Facebook AI Research
demo链接: 音质不太好,但是相似度还可以
- 个人认为主要的点在于数据增广(Backtranslation),mix-up造假数据的部分;以及使用到音频倒放(识别说话人),相位反向造新的信号,在比较小的数据上实现还可以的效果。
abstract
- 实现:不需要歌词、音素、note特征,不需要平行数据—完成歌唱的音色转换。
- 结构:(1)CNN-Encoder: for all singer
(2)WaveNet Decoder, 自回归结构;输入是128-d spk_emb+encoder_output
(3)Classifier:使得向量是说话人无关的,输出是K维的向量; - 数据:对于相当少(多少)的数据—采用数据增广,借鉴backtranslation加入loss和protocols
1. introduction
本文的创新:(1)第一次无监督的(基于非平行数据)歌唱语音转换实现;
(2)两阶段的训练过程:a.unsupervised audio translation的训练;b.backtranslation在第二阶段;
(3)引入backtranslation of mixup (virtual) identities;
(4)对于小数据(5-30min),使用新的数据增广方式
Backtranslation: 机器翻译中使用的,只有单语种的训练数据, 通过当前的AMT(自动机器翻译)将语言A通过机器翻译成另外一种语言B, 那么(b, a)就是将语言B反向翻译成语言A的训练样本。
- 我们的任务训练也是双向的,对于我们的SVC,第一轮训练之后,走backtranslation,提供的pair中的虚拟特征更偏向source而不是target。
Mixup training: 用一个虚拟数据集 ( x ′ , y ′ ) (x', y') (x′,y′)训练,将真实的数据 ( x 1 , y 1 ) (x_1, y_1) (x1,y1), ( x 2 , y 2 ) (x_2, y_2) (x2,y2)通过
3. method
-
最小化分类器loss,使得C可以更准确的从encoder-emb中找到和说话人相关的信息
-
最小化重建loss,重建每一个singer的样本,softmax-base loss;
-
C不更新,只更新E,整体loss最小,倒逼E提取说话人无关的emb
L : L: L:CE loss,后一项最小化
encoder输出的说话人无关-----结果不好的原因(??) -
step2:反向合成真实说话人:真实说话人的embedding组合成新的说话人,然后将合成的emb用到training samples生成合成样本;
domain confusion loss使得latent space与说话人无关。
造平行数据(只用于encoder & decoder训练,classifier训练只用真实数据),in-between speaker(中间说话人)
3.2 数据增广
8-bit u-law量化,语音质量会损失,但是有助于训练
4 倍数据增广
- 信号反向播放,能量谱不变------会生成一首乱七八糟的歌,但是还是可以被识别为同一个人的歌;
- 人耳对音频中的相位感知不敏感,将语音信号的相位移动190度----听感没有变化,但是是新的信号;
4. experiment
数据集:
-
DAMP Dataset :挑了5个音质高的说话人,每人10首歌,9首训练,1首验证
-
NUS-48E (比DAMP干净):12个singer,每人4首歌;
-
可以实现训练集合内的many-to-many转换
-
时域信号直接进行处理,通过卷积实现分帧加窗(50ms, 12.5msshift)