如何用 --restore_path 微调 TTS 预训练模型【免费下载链接】TTS - a deep learning toolkit for Text-to-Speech, battle-tested in research and production项目地址: https://gitcode.com/GitHub_Trending/tt/TTS如果你已经有一个自己的语音数据集想基于 TTS 提供的预训练模型做微调fine-tuning而不是从头训练核心操作就是在训练命令里加上--restore_path把预训练权重的路径传给训练脚本。本文按 微调文档 给出的流程走一遍完整路径准备数据集、下载预训练模型、修改配置、用--restore_path启动微调最后用推理命令验证模型。微调能带来两个实际好处预训练模型已经学到了任务相关特征在新数据集上收敛更快在小数据集几小时录音上也能得到合理结果。但文档同时明确提示微调不保证理想效果最终性能仍取决于数据集质量和你选择的超参数需要一定的调参工作。准备安装与数据集格式训练脚本依赖 TTS 的训练栈requirements.txt 中列出了trainer0.0.36、coqpit0.0.16等依赖通过pip install TTS安装时会一并引入文档推荐从 PyPI 安装。数据集需要按 数据集格式化文档 组织。文档给出的推荐结构是/MyTTSDataset | | - metadata.txt | - /wavs | - audio1.wav | - ...metadata.txt中每行用|分隔三列音频文件名、转写文本、归一化转写文本audio1|This is my sentence.|This is my sentence. audio2|1469 and 1470|fourteen sixty-nine and fourteen seventy文档建议语音文件用无损格式推荐wav避免压缩伪影没有归一化转写时两列可以填同一个转写文本之后在 text cleaner 或 phonemizer 阶段做归一化数据集格式取自 LJSpeech 格式TTS 内置了对应的 formatter按这个格式组织即可直接开始训练如果你的数据集用了新格式或新语言才需要自己写formatter或text_cleaner。选择并下载预训练模型用tts命令列出所有可用模型tts --list_models模型名格式为model_type/language/dataset/model_name。文档建议根据你的需求速度 vs 音质选模型最简单的测试方式是直接在目标硬件上用tts命令跑一下看速度和效果。下载模型时给tts指定一个模型名它会自动下载并把模型路径打印到终端tts --model_name tts_models/es/mai/tacotron2-DDC --text Ola.文档示例输出示例结果 Downloading model to /home/ubuntu/.local/share/tts/tts_models--en--ljspeech--glow-tts ...注意两点这里的终端路径以文档实际输出为准你自己的机器上以后续命令中出现的实际路径为准模型目录下除了model_file.pth权重还有config.json配置文件两者都会在下一步用到。修改微调配置微调前需要修改模型配置中的若干字段。文档给出 3 种修改方式如果你用TTS/bin/train_tts.py训练直接编辑config.json文件中的字段如果你用recipes目录下的 Python 训练脚本直接编辑脚本内配置用命令行参数覆盖字段例如--coqpit.lr 0.00001修改学习率。文档列出的几个关键字段datasets微调所用的数据集run_name运行名称用于命名输出目录和日志面板条目output_path微调模型的保存路径lr微调时建议用更小的学习率避免大更新步长丢掉预训练学到的特征audio相关字段不同数据集音频特性不同必须检查当前音频参数例如采样率是否反映你的数据集。以 recipes/ljspeech/glow_tts/train_glowtts.py 为例数据集通过BaseDatasetConfig(formatterljspeech, meta_file_trainmetadata.csv, path...)定义GlowTTSConfig中设置epochs、batch_size、output_path等训练参数换成自己的数据集时主要改BaseDatasetConfig的字段再按需调整模型配置。用 --restore_path 启动微调无论你用recipes下的训练脚本还是TTS/bin/train_tts.py都要用--restore_path指定预训练模型路径。文档给出的两条命令CUDA_VISIBLE_DEVICES0 python recipes/ljspeech/glow_tts/train_glowtts.py \ --restore_path /home/ubuntu/.local/share/tts/tts_models--en--ljspeech--glow-tts/model_file.pthCUDA_VISIBLE_DEVICES0 python TTS/bin/train_tts.py \ --config_path /home/ubuntu/.local/share/tts/tts_models--en--ljspeech--glow-tts/config.json \ --restore_path /home/ubuntu/.local/share/tts/tts_models--en--ljspeech--glow-tts/model_file.pth其中--restore_path指向预训练模型的model_file.pth权重文件train_tts.py方式下还需要--config_path指向模型目录里的config.jsontrain_tts.py 会用该配置文件加载模型再用命令行参数覆盖其中的字段。CUDA_VISIBLE_DEVICES用来指定训练用的 GPU可用nvidia-smi查看本机 GPU。文档同时展示如何在启动命令上直接覆盖配置字段文档原文中第二行末尾缺一个续行反斜杠按可执行命令补齐CUDA_VISIBLE_DEVICES0 python recipes/ljspeech/glow_tts/train_glowtts.py \ --restore_path /home/ubuntu/.local/share/tts/tts_models--en--ljspeech--glow-tts/model_file.pth \ --coqpit.run_name glow-tts-finetune \ --coqpit.lr 0.00001监控训练与验证结果训练启动后训练文档 中给出的日志开头长这样文档示例 Experiment folder: /your/output_path/-Juni-23-2021_0252-78899209 Using CUDA: True Number of GPUs: 1 Setting up Audio Processor... | sample_rate:22050 ... EPOCH: 0/1000 -- STEP: 0/405 -- GLOBAL_STEP: 0 | loss: 2.34670 ...日志中会依次打印实验目录、AudioProcessor 参数、数据加载信息如Found 13100 files in /your/dataset/path/...和每个 step 的 loss、学习率、梯度范数等可在终端直接观察。另外可以启动 Tensorboard 查看指标和样本输出tensorboard --logdir训练输出目录这里训练输出目录替换为日志开头打印的Experiment folder路径。训练完成后或中途取任意 checkpoint用tts命令加载你的模型做推理来验证微调效果tts --text Text for TTS \ --model_path path/to/checkpoint_x.pth \ --config_path path/to/config.json \ --out_path folder/to/save/output.wav--model_path指向训练输出的某个checkpoint_x.pth--config_path指向对应实验目录里的config.json生成的output.wav即为验证产物。限制与注意事项微调效果不保证取决于数据集质量与微调超参数文档明确提示需要一定调参datasets、audio等字段必须与你实际的数据集匹配例如采样率不一致时需要检查并修正audio参数文档中所有/home/ubuntu/.local/share/tts/...路径都是文档示例输出请替换为你终端上tts命令实际打印的模型下载路径微调的是 TTS 声学模型如需更好的波形质量训练文档指出同样的工作流可以再去训练一个 vocoder 模型这属于另一个独立任务不在本文范围内。【免费下载链接】TTS - a deep learning toolkit for Text-to-Speech, battle-tested in research and production项目地址: https://gitcode.com/GitHub_Trending/tt/TTS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考