10

NVC-Net: Voice conversion的SOTA工作

 3 years ago
source link: https://zjcqn.top/research/2022/05/31/NVC-Net.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Paper: NVC-Net: End-to-End Adversarial Voice Conversion

这篇是Sony团队提出的语音转换领域的SOTA工作,亮点在于

  • non-parallel
  • zero-shot
  • fast inference (3600kHz on NVIDIA V100)

传统VC的痛点

【平行训练集】传统的VC采用平行训练集进行训练,即训练集源语音和目标语音的文本内容是一致的。这种方式一方面存在对齐问题,需要预处理,另一方面数据采集是非常耗时且低效的。这些通点使得基于GAN的非平行训练方式得到了快速的发展。现在非平行训练的VC效果已经可以和平行方式的VC相媲美。

【输入音频建模】音频信号时域分辨率高(例如16kHz),信息量庞大,难以直接输入处理。因此常见的解决方法是通过提取语音特征降低输入维度,后续再通过声码器(vocoder)从特征还原语音。然而,传统的声码器(WORLD, STRAIGHT等)经常引入人造痕迹(如类金属噪声等)。为了解决这个问题,现在有很多复杂的神经网络声码器(autoregressive和non-autoregressive)。 其中autoregressive vocoder(e.g. WaveNet,WaveRNN)推理慢,难以运用到real-world的场景下(实时)。尽管non-autoregressive vocoder(e.g. WaveGlow)能够快速推理, 内存需求和计算量很大。尽管lightweight vocoder(e.g., MelGAN, Parallel WaveGAN)解决了内存问题,但是存在特征匹配的问题,并且生成的语音可能会产生噪声或碰撞。

【zero-shot】传统的语音转换研究对于unseen voice conversion 的关注较少。AutoVC通过预训练说话人编码器和bottleneck层,对语音信息、说话人信息进行接纠缠,实现了zero-shot voice conversion。然而,说话人编码器不能泛化到unseen speaker上,因为说话人的embedding是分散的。

Main Contribution

  • NVC-Net: many-to-many, non-parallel, disentanglement, raw audio input.
  • 无需额外训练vocoder,不存在特征不匹配问题,快速推理
  • zero-shot

VAE-based:通过调整decoder来限定输出语音的身份信息,poor-quality

GAN-based:不需要假定数据分布,能够自动学习捕获真实语音的分布,生成听感自然的语音。最早的研究工作基于CycleGAN。学习源说话人到目标说话人的语音特征的mapping,结合adversarial loss, cycle-consistency loss, identity mapping loss。后来的StarGAN-VC显示出了出色的语音转换性能。还有人证明了GAN能够提高VAE-based模型,但是在音频领域的应用比图像领域更加充满挑战性,因为语音是高度周期性的,并且人耳对不连续是非常敏感的,输出的语音需要高时域分辨率。

解纠缠:将语音看成是说话人身份和语音内容两部分的组合,通过解纠缠技术、语音识别技术将其分离。通过语音识别模型提取语音相关的特征,再通过与说话人相关的模型将这些特征转换成目标说话人的特征。

文章强调其他工作大部分都是在语音的中间表征(语音特征或频谱等)上进行的,甚至有的需要用到监督学习的鲁棒的vocoder,少有直接在原始音频上进行转换的。

VNC-Net

Training Objectives

Adversarial loss $\mathcal{L}_{adv}(E_c,E_s,G)$

Reconstruction loss $\mathcal{L}_{rec}(E_c,E_s,G)$

Content preservation loss $\mathcal{L}_{con}(E_c,G)$

Kullback-Leibler loss $\mathcal{L}_{kl}(E_s)$

Final loss $\mathcal{L}(E_c,E_s,G)$

Components

inherited from MelGAN and WaveNet

Content encoder. 全卷积网络,能够接收任何长度的信号。它将raw audio$(1\times T)$映射到content representation $(d_{con},T/256)$。包含四个降采样块,每个块包含4个residual blocks和1个 strided convolution。最后是两个GELU激活的卷积层。

Speaker encoder.

Generator. 继承自MelGAN,输入从语音特征转换成content representation。相当于是Content encoder的镜像,但是在Residual stack中输入speaker embedding。speaker embedding首先经过$1\times1$的卷积降低维度成和content representation的feature map一样。

image-20220531150144650

众所周知在训练GAN时若数据不足会导致过拟合,为了让模型能学到语义信息而不是“记住”输入信号,采用了一些数据增强措施。

将信号相位改变180度对人类听觉感知是没影响的,因此可以采取输入乘上-1的方式;

还有就是对输入进行随机幅度缩放(0.25~1);

为了降低伪影,在计算重建loss时在真实波形中引入少量时间抖动。

这些措施都不会改变speaker identity或content information。

此外,对于speaker encoder来说,还采取了音频切小段再随机重组的方式,从而更好地避免内容信息泄漏到speaker embedding里,利于解耦。

数据集:VCTK,44小时,109说话人,English。

采样率:22050Hz

train-test:9-1

优化器:Adam

batchsize:8(输入是32768个采样点~1.5s)

GPU:4 * NVIDIA V100

训练时间:约15min/epoch

Baseline:

  • StarGAN-VC2:https://github.com/SamuelBroughton/StarGAN-Voice-Conversion-2
  • Blow:https://github.com/joansj/blow
  • AutoVC:https://github.com/auspicious3000/autovc

Traditional voice conversion

Zero-shot voice conversion

Disentanglement analysis

Inference speed and model size.

Inference的速度非常快

image-20220531154131793.png

Latent embedding visualization

Model details

image-20220531150757387

image-20220531150804073

image-20220531150809731

</div


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK