本文档提供了训练Real-Time Voice Cloning系统中每个组件的详细说明。它涵盖了三个主要模型的训练过程:说话人编码器(Speaker Encoder)、合成器(Synthesizer,Tacotron 2)和声码器(Vocoder,WaveRNN)。有关训练前数据预处理的信息,请参阅数据预处理。
SV2TTS框架需要按顺序训练三个模型,因为每个模型的输出都将作为下一个模型训练的输入。
来源: encoder_train.py synthesizer_train.py synthesizer_preprocess_embeds.py vocoder_preprocess.py vocoder_train.py
在训练任何模型之前,请确保您已
说话人编码器将语音样本转换为捕捉说话人身份的固定长度嵌入。
编码器需要大量的说话人数据进行训练
encoder_preprocess.py 预处理成梅尔频谱图python encoder_train.py <run_id> <clean_data_root> -m <models_dir> [options]
主要参数
run_id:本次训练的唯一标识符clean_data_root:预处理后的编码器数据路径-m/--models_dir:保存模型权重的目录(默认为 "saved_models")-v/--vis_every:损失更新之间的步数(默认为 10)-u/--umap_every:嵌入可视化更新之间的步数(默认为 100)-s/--save_every:模型保存之间的步数(默认为 500)-f/--force_restart:强制从头开始训练编码器训练
来源: encoder_train.py encoder/train.py encoder/data_objects/speaker_verification_dataset.py10-56 encoder/visualizations.py
合成器(Tacotron 2)根据说话人嵌入,从文本生成梅尔频谱图。
在训练合成器之前
synthesizer_preprocess_audio.py 准备带有文本的音频数据synthesizer_preprocess_embeds.py 生成说话人嵌入python synthesizer_train.py <run_id> <syn_dir> -m <models_dir> [options]
主要参数
run_id:本次训练的唯一标识符syn_dir:预处理的合成器数据路径-m/--models_dir:保存模型权重的目录(默认为 "saved_models")-s/--save_every:模型保存之间的步数(默认为 1000)-b/--backup_every:模型备份之间的步数(默认为 25000)-f/--force_restart:强制从头开始训练--hparams:通过逗号分隔的 name=value 对覆盖超参数合成器训练
hparams.tts_schedule 中定义的多个阶段的计划来源: synthesizer_train.py synthesizer/train.py26-236 synthesizer/models/tacotron.py
声码器(WaveRNN)将梅尔频谱图转换为音频波形。
有两种声码器训练方法
对于GTA训练,首先生成对齐的梅尔频谱图
python vocoder_preprocess.py <datasets_root> -s <syn_model_fpath>
python vocoder_train.py <run_id> <datasets_root> [options]
主要参数
run_id:本次训练的唯一标识符datasets_root:数据集根目录的路径-g/--ground_truth:在真实梅尔数据上训练(而不是GTA梅尔数据)-s/--save_every:模型保存之间的步数(默认为 1000)-b/--backup_every:模型备份之间的步数(默认为 25000)-f/--force_restart:强制从头开始训练声码器训练
来源: vocoder_train.py vocoder/train.py18-118 vocoder/models/fatchord_version.py
完整的训练工作流程需要按顺序执行以下步骤
| 步骤 | 脚本 | 目的 | 关键产出 |
|---|---|---|---|
| 1 | encoder_preprocess.py | 准备编码器训练数据 | 梅尔频谱图 |
| 2 | encoder_train.py | 训练说话人编码器 | encoder.pt |
| 3 | synthesizer_preprocess_audio.py | 准备合成器数据 | 梅尔频谱图+元数据 |
| 4 | synthesizer_preprocess_embeds.py | 创建说话人嵌入 | 用于合成器的嵌入 |
| 5 | synthesizer_train.py | 训练合成器 | synthesizer.pt |
| 6 | vocoder_preprocess.py | 创建GTA梅尔频谱图 | 用于声码器的GTA梅尔数据 |
| 7 | vocoder_train.py | 训练声码器 | vocoder.pt |
渐进式训练:每个模型都训练到收敛后再进行下一步
检查点:以固定的间隔保存模型(通过 --save_every 配置)
验证:在训练过程中监控生成的样本以检测问题
资源管理:
超参数调整:
r)和注意力参数来源: encoder_train.py synthesizer_train.py vocoder_train.py synthesizer_preprocess_embeds.py vocoder_preprocess.py
每个模型都提供不同的方式来监控训练进度
说话人编码器:
合成器:
声码器:
训练完成时间因数据集大小和硬件而异
来源: synthesizer/train.py237-258 vocoder/train.py116-117 encoder/visualizations.py103-155