GPT-SoVITS音频镜像使用说明
1、云端使用
1.1 开启打开日志
1.2 检查 WebUI 是否启动完成
出现以下图红框信息,表示启动成功
2、数据集处理
请认真准备数据集!以免后面出现各种报错,和炼出不理想的模型!好的数据集是炼出好的模型的基础!
2.1 使用UVR5处理原音频
如果原音频足够干净可以跳过这步,比如游戏中提取的干声
点击开启UVR5-WebUI稍加等待,后如下图所示
点最下面那个链接就会自动跳转UVR5WebUI的页面。
首先输入音频文件夹路径或者直接选择文件(2选1)推荐是用上传音频
是用文件夹路径
回到应用打开文件管理
复制文件夹路径,粘贴到待处理音频文件夹路径
注:该文件夹内可以自行上传音频文件
工具操作建议
- 可先用HP2模型处理一遍(提取人声)
- 然后将输出的干声音频再用onnx_dereverb最后用DeEcho-Aggressive(去混响),输出格式选wav
输出的文件建议填写 /root/onethingai-tmp/GPT-SoVITS/output/uvr5_opt这个文件夹下,文件可以通过 文件管理 数据盘上来查看
处理完的处理完的音频(vocal)的是人声,(instrument)是伴奏,(No Reverb)的没混响的,(Reverb)的是混响。(vocal)(No Reverb)才是要用的文件,其他都可以删除。
注:结束后记得到WebUI关闭UVR5节省显存。
一般出错原因:一般是音频太短了,导致音频缓冲区爆了,也有一些是因为显卡性能不够的。
2.2 切割音频
在切割音频前建议把所有音频拖进音频软件(如au、剪映)调整音量,最大音量调整至-9dB到-6dB,过高的删除
首先输入原音频的文件夹路径(不要有中文),如果刚刚经过了UVR5处理那么就是uvr5_opt这个文件夹。然后建议可以调整的参数有min_length、min_interval和max_sil_kept单位都是ms。
min_length:根据显存大小调整,显存越小调越小
min_interval:根据音频的平均间隔调整,如果音频太密集可以适当调低
max_sil_kept:会影响句子的连贯性,不同音频不同调整,不会调的话保持默认
其他参数不建议调整。
点击开启语音切割,马上就切割好了
默认输出路径在/root/onethingai-tmp/GPT-SoVITS/output/slicer_opt,建议不要改输出路径,当然也可以使用其他切分工具切分。
切分完后文件在/root/onethingai-tmp/GPT-SoVITS/output/slicer_opt。可通过云端提供的文件管理来查看文件夹,排序方式选大小,将时长超过 显存数 秒的音频手动切分至 显存数 秒以下(比如显卡是4090 显存是24g,那么就要将超过24秒的音频手动切分至24s以下,音频时长太长的会爆显存)。如果语音切割后还是一个文件,那是因为音频太密集了。可以调低min_interval,实在不行用au手动切分。
2.3 音频降噪
如果原音频足够干净可以跳过这步,比如游戏中提取的干声
这个功能而且不太好用,对音质的破坏很大,如果不需要可以跳过该操作。 输入刚才切割完音频的文件夹,默认是/root/onethingai-tmp/GPT-SoVITS/output/slicer_opt文件夹。然后点击开启语音降噪。默认输出路径在/root/onethingai-tmp/GPT-SoVITS/output/denoise_opt,建议不要改输出路径。
2.4 打标
为什么要打标:打标就是给每个音频配上文字,这样才能让AI学习到每个字该怎么读。这里的标指的是标注
这步很简单只要把刚才的切分文件夹输入
如果你音频降噪过,那么默认是/root/onethingai-tmp/GPT-SoVITS/output/denoise_opt文件夹
如果你切分了没有降噪,那么默认是/root/onethingai-tmp/GPT-SoVITS/output/slicer_opt文件夹
然后选择达摩ASR或者fast whisper
达摩ASR只能用于识别中文,效果也最好
fast whisper可以标注99种语言,是目前最好的英语和日语识别,模型尺寸选large V3,语种选auto自动就好了
然后点开启离线批量ASR就好了,默认输出是/root/onethingai-tmp/GPT-SoVITS/output/asr_opt这个路径,建议不要改输出路径。ASR需要一些时间,点击查看日志,看有没有报错就好了。
2.5 校对标注
这步比较费时间,如果不追求极致效果可以跳过
输入标注文件的文件路径,注意是文件路径!不是文件夹路径!示例:/root/onethingai-tmp/GPT-SoVITS/output/asr_opt/slicer_opt.list 注意后面的文件名必须要输进去!打不开就再三检查路径是否正确!必须要有.list的后缀!!!然后开启打标webui
点最下面那个链接就会自动跳转打标webui的页面
工具教学视频可以上 B 站,搜索 SubFix 或 音频标注手动精修工具,自行学习
3、训练
3.1输出日志
进入这个页面
-
先设置实验名也就是模型名,不要有中文!
-
然后第一个输入的是标注文件路径,注意是文件路径!不是文件夹路径!示例:/root/onethingai-tmp/GPT-SoVITS/raw/xxx.list 注意后面的文件名必须要输进去!打不开就再三检查路径是否正确!必须要有.list的后缀!!!
-
第二个输入的是切分音频文件夹路径 示例:/root/onethingai-tmp/GPT-SoVITS/output/slicer_opt
-
然后点一键三连。
注意:复制的路径都不能有引号!!!千万不能有引号!
3.2 微调训练
首先设置batch_size,sovits训练建议batch_size设置为显存的一半以下,高了会爆显存。bs并不是越高越快!batch_size也需要根据数据集大小调整,也并不是严格按照显存数一半来设置,比如6g显存需要设置为1。如果爆显存就调低。当显卡3D占用100%的时候就是bs太高了,使用到了共享显存,速度会慢好几倍。
以下是切片长度为10s时实测的不同显存的sovits训练最大batch_size,可以对照这个设置。如果切片更长、数据集更大的话要适当减少。
显存 | batch_size | 切片长度 |
---|---|---|
6g | 1 | 10s |
8g | 2 | 10s |
12g | 5 | 10s |
16g | 8 | 10s |
22g | 12 | 10s |
24g | 14 | 10s |
32g | 18 | 10s |
40g | 24 | 10s |
80g | 48 | 10s |
dpo大幅提升了模型的效果,几乎不会吞字和复读,能够推理的字数也翻了几倍,但同时训练时显存占用多了2倍多,训练速度慢了4倍,12g以下显卡无法训练。数据集质量要求也高了很多。如果数据集有杂音,有混响,音质差,不校对标注,那么会有负面效果。
如果你的显卡大于12g,且数据集质量较好,且愿意等待漫长的训练时间,那么可以开启dpo训练。否则请不要开启。下面是切片长度为10s时实测的不同显存的gpt训练最大batch_size。如果切片更长、数据集更大的话要适当减少。
显存 | 未开启dpo batch_size | 开启dpo batch_size | 切片长度 |
---|---|---|---|
6g | 1 | 无法训练 | 10s |
8g | 2 | 无法训练 | 10s |
12g | 4 | 1 | 10s |
16g | 7 | 1 | 10s |
22g | 10 | 4 | 10s |
24g | 11 | 6 | 10s |
32g | 16 | 6 | 10s |
40g | 21 | 8 | 10s |
80g | 44 | 18 | 10s |
接着设置轮数,SoVITS模型轮数可以设置的高一点,反正训练的很快。GPT模型轮数千万不能高于20(一般情况下)建议设置10。然后先点开启SoVITS训练,训练完后再点开启GPT训练,不可以一起训练(除非有两张卡)!如果中途中断了,直接再点开始训练就好了,会从最近的保存点开始训练。
4、推理
4.1 开启推理界面
先点一下刷新模型,下拉选择模型推理,e代表轮数,s代表步数。不是轮数越高越好。
选择好模型点开启TTS推理
4.2 开始推理
点最下面那个链接就会自动跳转推理的页面
然后上传一段参考音频,建议是数据集中的音频。最好5秒。参考音频很重要!会学习语速和语气,请认真选择。参考音频的文本是参考音频说什么就填什么,语种也要对应。当前可以选择无参考文本模式,但非常不建议使用,效果非常拉胯。
接着就是输入要合成的文本了,注意语种要对应。目前可以中英混合,日英混合和中日英混合。切分建议无脑选50字一切,低于50字的不会切。如果50字一切报错的话就是显存太小了可以按句号切。如果不切,显存越大能合成的越多,实测4090大约1000字,但已经胡言乱语了,所以哪怕你是4090也建议切分生成。合成的过长很容易胡言乱语。
top_p, top_k 和 temperature 参数,保持默认就行了。这些控制的都是随机性,拉大数值,随机性也会变大,所以建议默认就好。
如果出现吞字,重复,参考音频混入的情况,这是正常现象。不是模型炼差了,不用为模型担心。改善的方法有使用较低轮数的GPT模型、合成文本再短点、换参考音频。官方也在努力修复这个问题。