单位:腾讯AI lab
作者:Chengqi Deng
会议: 2020 icassp
demo:
文章目录
abstract:
本文是基于【2019 interspeech : Unsupervised Singing Voice Conversion】的改进工作
现有的SVC很多不在调上,说明pitch预测的不准。本文是为了更精确的预测pitch,更灵活的修正pitch。
本文提出用adversarial trained pitch regression network帮助encoder更好的学习pitch不变的音素表示singer-invariance embedding,另外一个单独的module送入source中提取的pitch到decoder module。本文是基于非平行数据做的SVC任务,参考之前的WaveNet encoder,虽然可以合成高相似度的语音,但是语音的质量不好—phone和pitch联合建模的缺点。
1. introduction
歌唱语音合成输入是lyrics和notes,通过vocoder自回归的生成合成的歌唱语音。
歌唱语音转换是歌唱合成的另一种形式,和传统的speech voice conversion 相,SVC需要应对更大范围的基频变化,以及更快速的音量/音调变化。性能主要看转换的音乐表示部分和音色相似度。
也分为基于平行数据的方法和基于非平行数据的无监督方法。【Wavenet: A generative model for raw audio】用wavenet-encoder-decoder结构做SVC,可以达到一定的效果,但是同时建模phone和pitch变化很难。
本文引入对抗训练,使得encoder建模歌唱者和pitch无关的信息,然后用单独的pitch extractor和speaker embedding 表征说话人 。
2. method
model architecture
结构包含五个部分:
- encoder:输出说话人和pitch无关的embedding,对输出做nearest-neighbor interpolation
- decoder:自回归的结构
- singer classification net
- pitch regression net:网络预测pitch,然后做一个线性差值
- LUT speaker embedding
singer classification network and pitch regression network
loss reconstruction
S
j
S^j
Sj是第
j
j
j个人的语音,
E
(
S
j
)
E(S^j)
E(Sj)是encoder的输出,
p
(
S
j
)
p(S^j)
p(Sj)是pitch extractor提取的基频信息,
v
j
v_j
vj是look up table之后说话人的向量表示。
模型的损失函数
重建损失函数表示为:
因为想要encoder建模和说话人身份以及pitch无关的信息,所以另外加对抗loss
总结:对抗损失
步骤:
- 第一步使用 L a d L_{ad} Lad优化 C s C_s Cs和 C p C_p Cp模型
- 第二步使用 L t o t a l L_{total} Ltotal优化整个模型参数
- 循环1/2
trick:使用backtranslation and mixup techniques
- 生成补充数据:使用任意两个人的speaker embedding(A+B)随机权重混合-feak_spk_embedding,
- feak_spk_embedding+ A-wav中的pitch+ encoder(A-wav),然后用decoder合成一个假数据,送给model-input,
- encoder(feak-wav)+A-speaker embedding + pitch,和A-wav算重建损失(这个过程不加对抗loss)
主要是使得encoder见过各种各样的组合,增强泛化性
3. experiment
数据集
- NUS-48E数据集,6男6女歌唱者,包括48首歌,每人唱4首
- train-set:男声歌唱者,数据转换成单声道,sr=16,另外用到8-bit u-law编码压缩输入空间,加速训练(会使语音质量下降)
- test-set:训练集合6个人之间互转(无法完成集外的转换)