总而言之,音色的相似度都不是很尽如人意,而且在长文本上,有时越到后面语速就越快,也越播音腔,音色也会渐渐变化,听完倒回听开头的话就感觉完全是另一个人,非常神秘,考虑到微调的麻烦程度,如果不是像我一样折腾着玩的话,目前或许还是直接用Base更好。
不过也请注意,我也只是玩过之后记录一下,也并没有对超参或者其他东西做对比测试,所以结论和效果仅供参考,如果有人有更好的微调方法的话也欢迎评论区分享!
====
关于Qwen3-TTS的微调以及对比测试:
0. 本次测试使用Qwen3-TTS-12Hz-1.7B-Base,以及对于它的微调。
1. 微调使用约20小时的录播经ASR和声纹清洗后制作出的数据集,未经人工校对。
2. 对于未微调的Base,使用即将播放的音频作为参考进行克隆,对于微调后的模型,则是使用该条音频作为数据集中所有样本的ref_audio,在推理时使用该speaker.
3. 所有模型都是仅合成一次,就取这次结果。
4. 为了对比需要,选择Base,epoch 0, 3, 6, 9, 18, 32作为展示,大家也可以弹幕说说感觉哪个效果更好。
====
以下是一些经验和感想:
0. 微调对小数据相当不友好,仅仅只是几十几百条语音的话完全不如直接用Base,甚至即使我这样微调后也不一定说比Base要好。
1. 默认的 lr 2e-5 对于默认的 bs 2 来说相当的大,基本上只会训到胡言乱语,推荐直接加个0先从 lr 2e-6 开始尝试。
2. 默认的 dataloader 设置有一些小问题,会导致显卡占用上不去,推荐去 sft_12hz.py 给 train_dataloader 加一些 num_workers(是的,就是这个经典的问题)
3. 微调后有时会有句尾突然截断的问题,感觉可能在数据集中每条语音后加一点空白效果会好一些。
4. 预处理完毕后,实际上你只需要几十Mb大小的那个 train_with_codes.jsonl 以及那一条你的 ref_audio 就可以完成训练了,不再需要数据集中那些音频,如果是云端训练的话可以参考,本地预处理一下能节省大量上传数据集的时间。
5. 目前微调仅支持单说话人的Base模型微调,也就是说多说话人,以及情感控制和音色设计都是完全没有的。
6. 感觉默认的3 epoch实际上应该是个比较好的值,最多根据数据量和lr以及实际效果酌情调整,推荐也请准备至少2小时的数据。
====================
使用到的项目链接:
https://github.com/QwenLM/Qwen3-TTS