《ONE-SHOT VOICE CONVERSION BY VECTOR QUANTIZATION》

1018组会

VQVC 简析

image-20201018132532040

  • 《VQVC+: One-Shot Voice Conversion by Vector Quantization and U-Net architecture》

image-20201018001016143


1. 特点

  • 模型结构:AE 类型,U-Net 框架
  • 常见 VC 特征解纠缠思路:The disentangle capability is achieved by vector quantization (VQ), adversarial training, or instance normalization (IN)
    • VQ
    • 对抗
    • IN
  • VQVC:对 隐变量 进行 量化

2. 相关

(一)直接转换语音,不需要单独 “特征解纠缠”

  1. CycleGAN && StarGAN 专注于解决 “多对多问题”
  2. BLOW:基于Flow的方式:直接对 波形 进行转换,而不用转换成 语音特征

(二) speaker && linguistic 解耦

  1. AutoVC—— AE 结构,通过控制 隐变量 尺寸(layer dimension)来实现解纠缠
  2. IN 法image-20201018105402931
  3. VQVC

3. 加入 U-Net 的原因:

  • 以上这些 特征解纠缠 的思路可行,但是由于这些额外限制,会使得重构音质受损
  • U-Net 的重构能力超级强,所以本身是没法做 VC 的,因为她 解纠缠 能力不好
  • 本文尝试 结合 U-Net 的强大重构能力,以及 VQ 的 特征解耦能力,使得转换的语音,在相似度提高的同时,解决流畅度问题;

4. VQVC 思路:

  • 内容:离散码
  • 说话人信息:连续语音信号 - 离散码
  1. 先做 Encode 得到隐变量 Z;
  2. 再对这个隐变量做 量化,(结合 codebook ),提取出 内容向量 C(content embedding)——不同说话人,说同样一句话,得到的向量趋于相似向量值;
  3. 将 Z 和 C 做量化减法,得到 Speaker Embedding——S

内容:离散码
说话人信息:连续语音信号-离散码


  • Codebook 本身是可训练的
  • image-20201018152000315
  • image-20201018152105943

公式(1):

  • x(带帽)表示的是 语音 x 中的一个小片段;

  • argmin 函数:求取 使得函数 y = f(x) 取得最小值的 x 值集合

  • 将 Encode 之后的 隐变量 z,拿来和 Codebook 中的向量 求取差值最小项(欧式距离)

  • 最后的 $C_x$ 是将上述 x^ 做一个整体的 concate 得到的

公式(2):

结合(VQVC+)的部分公式 来看:image-20201018152950185

  • $E_t$ 表示的是,在所有 T 帧上,求取 Z 和 C 的期望值 s,最后将 s 重复 T 次,以此表征 speaker embedding;
  • 重复 T 次是为了让 s 的尺寸 和 C 一样,并方便后续操作

公式(3):

image-20201018153358420

  • 第一个损失: 重构损失

公式(4)、(5):

image-20201018153714828

  • 第二个损失:隐变量损失 L(latent)
  • 目的是更好地从 隐变量Z 中提取 Content Embedding,来代表整个语音片段的内容部分
  • 🌟值得一提的是:为了让 C 更好地表征内容,在这个环节中,Codebook不做更新:防止网络为了缩小 Loss,而把 Codebook 往 说话人信息方向靠,使得提取出来的 Content Embedding 含有 Spealer 信息;

公式(5):

  • 两个 Loss 的叠加

关于 IN:

  • 本图来自(VQVC+):

image-20201018154451621

  • 在 Encode 得到隐变量 z 之后,在进一步提取 content embedding 之前,需要先做一次 IN(Instant Norm)
  • IN 本身也被其他论文证明,具有
  • 特征解耦 的功效(这里 IN 是必须操作)
  • 这样能预先一步过滤 说话人信息

image-20201018160153595


一些特征处理细节:

  • n_mels = 160
  • GriffinLim
  • 24K
  • 一些额外的规范化normalize 处理:
    • 减去均值,除以均方差,处理到【0,1】

image-20201018155429424

image-20201018155438508


结果:

  1. 消融实验

image-20201018162109398

  1. ABX 实验image-20201018162138602
  1. image-20201018162222357

  2. Speaker Embedding 区分度:语音片段长度120帧;CodeBook 尺寸 32;训练使用数据 20 人image-20201018162241525

疑问点:

  • 量化部分的具体操作看不懂,说的不详细

  • 没有代码对照

image-20201018155901510


总结:

  • 创新意义 > 实用意义
  • 没脱离 AE 结构,还是在隐变量 特征解耦上做文章,效果不突出;
  • Demo 听起来,语气语调信息损失严重
  • 当作已有方法总结中的一种,不建议使用

  • 开题报告
  • PPT