基于 RTVC-7 Voice Cloning Model 的 Cross-Lingual TTS 的三步走: 第二步 Tuned-EarSpeech 搭建

0. 说明

  1. 用 M2VoC 的数据训练
  2. 可以加上 databaker, thucoss
  3. 并且可以在 RTVC-7 Voice Cloning Model 的 Tacotron Pretrained Model 上忽略 embedding layer, 进行 Tune

1. Git Clone

  1. git clone https://github.com/ruclion/Pretrained-EarSpeech.git Tuned-EarSpeech -b 81428b30a486314577bfbd59b272d7e4bd369ef4
  2. mv Pretrained-EarSpeech Tuned-EarSpeech
  3. cd Tuned-EarSpeech
  4. git init
  5. git add .
  6. git commit -m 'init'
  7. git remote add origin https://github.com/ruclion/Tuned-EarSpeech.git
  8. git push -u origin master

2. 训练数据

2.1. AISHELL-3_denoise_dereverb_

实验室降噪过的数据, 感谢大家. (不过没关注怎么降得~)

/ceph/dataset/AISHELL-3_denoise_dereverb_

2.2. M2VoC

M2VoC 比赛的数据, 目标也是合出来他们的声音, 和大家对比~

/ceph/dataset/M2VoC

3. speaker embedding

和逸轩保持一致, 使用张阳的 speaker embedding 结果, 便于调试

/ceph/home/hujk17/npy-EarSpeech-HCSI-Data

目录结构:

npy-EarSpeech-HCSI-Data -> dereverb_npy -> SSB0005 -> spk-SSB00050001.npy

                                                                                           -> spk-SSB00050002.npy

                                                                       -> SSB0009 -> ...

                                             -> tst_npy          -> MST-Originbeat-S1-female-5000 -> spk-000001.npy

                                                                       -> TST-Track1-S4-male-Game-100 -> spk-000001.npy

4. 预处理数据 -> mel

见 preprocess_dataset

5. 改代码

改好了, 基本上没动

以 FaPig 为模型名字, 逻辑从 FaPig_train.py 开始

6. Base 版逻辑

https://github.com/ruclion/Tuned-EarSpeech

依据是改动代码最少

需要枚举的逻辑有很多, 其中本质上思路有不同的:

  • Base 版 的 Speaker Embedding 使用张阳给逸轩的, 加了一个 FC 到 256; 再尝试下 GE2E 的

仅仅是可以加快收敛的:

  • Base 版未进行 Guided Attention
  • Base 版模型随机初始化, 不使用 warm-up
  • 代码中只有 60000 的 train data, 没有 validation 的代码
  • Batch 只使用的代码自带的 12, 实际上 16 或者 20 应该没问题

7. GE2E 版逻辑

https://github.com/ruclion/Tuned-GE2E-EarSpeech

依据是在 Base 版的基础上, 只改动 Speaker Embedding 为 GE2E 的结果, 其他思路先不加

逻辑从 /ceph/home/hujk17/Tuned-GE2E-EarSpeech/FaPig_extract_GE2E.py 开始, 提取完了所有的 GE2E Embedding

  • 256 的 Embedding 仍然后面接了一个 FC, 和 Base 一致, 并且 FC 也不会太影响
  • 换代码的时候, 仅仅是指定 speaker 路径不同
  • 剩下代码和 Base 完全一致

8. Base 版实验结果

8.1. 默认 batch_size

  • batch_size = 12, 4000 多内存
  • 7 个小时左右, 到达 20000 步, 能够初步形成 alignment 图, 看来代码正确
  • teacherForce 的音频还可以

8.2. 大 batch_size

根据峰哥的建议, 可以尝试跑满 GPU, 代码只有 Batch 那部分不同: https://github.com/ruclion/Tuned-BigBatch-EarSpeech

8000 步之后出了 cuda 的问题, epoch 都过去了, 很奇怪

接着恢复训练

9. GE2E 版实验结果

batch size = 12

9.1. 训练 Loss

  • batch_size = 12, 4000 多内存
  • 2个小时左右, 到达 7000 步, 能够初步形成 alignment 图, 看来 GE2E Speaker Embedding 更集中一些/准确
  • teacherForce 的音频还可以

 

猜你喜欢

转载自blog.csdn.net/u013625492/article/details/114433738