前言
最近一直在寻找能够平替GPT-SoVITS的语音合成项目,于是找到了很合适的VoxCPM。他不像IndexTTS 2那样占用巨大,反而占用极小的情况下能够实现完美的自然语音克隆,音色还原的确不如其他项目,但是他最近的1.5版本支持了lora训练,弥补了这一个缺点。
使用体验
语音克隆我只使用过GPT-SoVITS,相比之下,我认为VoxCPM最大的优点就是语音自然拟真,且流式输出流畅。但是也存在缺点,显存占用比GPT-SoVITS大,在断句时有时也会断句过长或过短。
整体表现有很高的上限,也有稍微不可接受的下限。
而且对参考音频的质量要求很高,而且语气断句会很多模仿参考音频。
整体感觉就是不错的,如果显存占用小一些(还是说有部分是缓存的问题?),稳定性强一点,再添加情感向量支持,就是一个很全面的模型了,期待后续更新。
再就是lora训练方面,我在韩语和日语上测试了,适配效果特别棒,尽管只是在模仿训练数据,模型还是学会了在小语种上进行地道的断句和语气。
LoRA微调
本来是没有打算写这篇文章,出这期视频的,但是项目的issue有很多在问lora的效果如何,怎么训练lora,于是就打算写这篇文章。
我在VoxCPM更新时就进行了lora微调,效果表现很惊人。于是我也提交了PR给了一个WebUI,官方也适配移植,给出了现在的WebUI
那么接下来就讲一下怎么利用这个WebUI进行微调
数据集准备
数据集是要存放在JSONL文件内,每一行是一条数据:
{"audio": "path/to/audio1.wav", "text": "Transcript of audio 1."}{"audio": "path/to/audio2.wav", "text": "Transcript of audio 2."}{"audio": "path/to/audio3.wav", "text": "Optional duration field.", "duration": 3.5}{"audio": "path/to/audio4.wav", "text": "Optional dataset_id for multi-dataset.", "dataset_id": 1}必要元素
| Field | 描述 |
|---|---|
audio | 文件路径 (绝对路径或相对路径) |
text | 配对的文本 |
可选元素
| Field | 描述 |
|---|---|
duration | 时长(秒) (加速 sample filtering) |
dataset_id | 数据集编号区分多个数据集 (default: 0) |
要求
- 数据格式: WAV
- 采样率: 16kHz for VoxCPM-0.5B, 44.1kHz for VoxCPM1.5
- 文本: 配对准确的文本
可以查看 examples/train_data_example.jsonl 这个完整的示例.
我是直接从GPT-SoVITS的数据集转过来的,不过需要重采样(GPT-SoVITS 是32k,VoxCPM要求44.1k)
开始训练
在根目录下运行:
python lora_ft_webui.py打开http://127.0.0.1:7860/ 进入WebUI

预训练模型路径和数据集的JSONL文件自己填写
eval数据集一般人也用不到
参数讲解
-
学习率:模型学习的快慢,默认即可
-
最大迭代次数:最大步数,根据数据集调整,默认也可以
-
批次大小:根据自己显存调整
-
LoRA Rank:控制LoRA对模型的影响程度,默认即可
-
LoRA Alpha:同上
-
保存间隔 (Steps):每XXX步保存一次
-
梯度累积:默认即可,显存小可以在降低批次大小时调大,时间换空间,
- 注:
-
数据加载线程:默认即可
-
日志间隔:默认即可
-
验证间隔:无eval无需理会
-
权重衰减:默认即可
-
热身步数:建议
-
最大步数:默认等于最大迭代次数
-
采样率:与基座模型匹配即可
-
Tensorboard 路径:会自动创建,默认即可
WARNING接下来是十分重要的内容,涉及到训练的参数激活部分
是否启用LoRA LM
是否训练语言模型,如果你的训练内容需要模仿语气,断句等等语言习惯,特别是非中英文语言训练时,必须开启!!!
一般都是默认要开启!!!
启用 LoRA DIT
是否训练扩散模型,如果需要克隆数据集的音色,必须开启!如果只是非中英文语言适配,可以不开启。
启用proj训练
一般不开启,这些层对于模型性能有着显著影响!
LoRA Dropout
丢弃的参数的占比,用于防止过拟合,一般默认即可
最后一步
当全部参数设好之后就可以开始训练了
可以在文件夹下找到日志文件运行tensorborad,观察训练情况
LoRA推理
我写的WebUI是支持热拔插LoRA的,所以可以随意切换LoRA文件。
推理部分我就不赘述了,各位自己探索就好了。
部分信息可能已经过时








