GPT-SoVITS使用指南——点动科技
·
GPT-SoVITS使用指南——点动科技
部署成功后界面
一、数据集处理
- 注:
请认真准备数据集!以免后面出现各种报错,和炼出不理想的模型!好的数据集是炼出好的模型的基础!
1. 使用UVR5处理原音频(如果原音频足够干净可以跳过这步,比如游戏中提取的干声)
用自带的UVR5处理音频
- 点击开启UVR5-WebUI稍加等待就会自动弹出图二的网页,如果没有弹出复制http://服务器的IP:9873到浏览器打开
- 1.首先输入音频文件夹路径或者直接选择文件(2选1)
文件夹上面那个地址框就是文件夹路径
- 2.先用HP2模型处理一遍(提取人声)
-
- 然后将输出的干声音频再用onnx_dereverb
- 然后将输出的干声音频再用onnx_dereverb
- 4.最后用DeEcho-Aggressive(去混响)
- 5.输出格式选wav。
- 6.输出的文件默认在GPT-SoVITS-beta\GPT-SoVITS-beta\output\uvr5_opt这个文件夹下
建议不要改输出路径,到时候找不到文件。
处理完的音频 (vocal) 的是人声,(instrument) 是伴奏,(No Reverb) 的没混响的,(Reverb) 的是混响。(vocal) (No Reverb) 才是要用的文件,其他都可以删除。结束后记得到WebUI关闭UVR5节省显存。
二、切割音频
在切割音频前建议把所有音频拖进音频软件(如au、剪映)调整音量,最大音量调整至-9dB到-6dB,过高的删除
1.首先输入原音频的文件夹路径(不要有中文)
- 如果刚刚经过了UVR5处理那么就是
uvr5_opt
这个文件夹。 - 然后建议可以调整的参数有
min_length
、min_interval
和max_sil_kept
单位都是ms
。 min_length
根据显存大小调整,显存越小调越小。min_interval
根据音频的平均间隔调整,如果音频太密集可以适当调低。max_sil_kept
会影响句子的连贯性,不同音频不同调整,不会调的话保持默认。其他参数
不建议调整。
2.点击开启语音切割,马上就切割好了
- 1.默认输出路径在
output/slicer_opt
。
建议不要改输出路径,到时候找不到文件。 - 2.当然也可以使用
其他切分工具
切分。 - 3.切分完后文件在
\GPT-SoVITS-beta\GPT-SoVITS-beta\output\slicer_opt
。 - 4.打开切分文件夹,排序方式选大小,将时长超过 显存数秒的音频手动切分至显存数秒以下。
比如4090显卡
显存是24g
,那么就要将超过24s
的音频手动切分至24s
以下,音频时长太长
的会爆显存
。 - 5.如果语音切割后还是一个文件,那是因为音频太密集了。可以调低
min_interval
,实在不行用au
手动切分。
三 、音频降噪(如果原音频足够干净可以跳过这步,比如游戏中提取的干声)
在0221版本之后才有这个功能而且不太好用,对音质的破坏很大,谨慎使用。
- 输入刚才切割完音频的文件夹,默认是output/slicer_opt文件夹。
- 然后点击开启语音降噪。
- 默认输出路径在output/denoise_opt,建议不要改输出路径,到时候找不到文件。
四、打标
为什么要打标:打标就是给每个音频配上文字,这样才能让AI学习到每个字该怎么读。这里的标指的是标注
把刚才的切分文件夹输入
- 如果你
音频降噪
过,那么默认是output/denoise_opt
文件夹 - 如果你
切分了没有降噪
,那么默认是output/slicer_opt
文件夹 - 然后选择
达摩ASR
或者fast whisper
。 达摩ASR
只能用于识别中文
,效果也最好。fast whisper
可以标注99种语言
,是目前最好的英语和日语识别
,模型尺寸选large V3
,语种选auto自动
就好了。- 然后点开启
离线批量ASR
就好了,默认输出是output/asr_opt
这个路径,建议不要改输出路径
,到时候找不到文件。 ASR
需要一些时间,看着控制台有没有报错就好了
如果有字幕的可以用字幕标注,准确多了。内嵌字幕或者外挂字幕都可以。
五、校对标注(这步比较费时间,如果不追求极致效果可以跳过)
1.输入标注文件的文件路径
- 注意是
文件路径
!不是文件夹路径!示例:D:\GPT-SoVITS-beta\GPT-SoVITS-beta0128\output\asr_opt\slicer_opt.list
注意后面的文件名必须要输进去
! - 打不开就再三检查路径是否正确!必须要有.list的后缀!!!
2.开启打标
webui
打开后就是SubFix
- 从左往右从上到下依次意思是:跳转页码、保存修改、合并音频、删除音频、上一页、下一页、分割音频、保存文件、反向选择。
注:
- 1.每一页修改完都要点一下保存修改(Submit Text)
- 2.如果没保存就翻页那么会重置文本,在完成退出前要点保存文件(Save File)
- 3.做任何其他操作前最好先点一下保存修改(Submit Text)
- 4.合并音频和分割音频不建议使用,精度非常差,一堆bug。
- 5.删除音频先要点击要删除的音频右边的yes,再点删除音频(Delete Audio)。
- 6.删除完后文件夹中的音频不会删除但标注已经删除了,不会加入训练集的。
- 7.这个SubFix一堆bug,任何操作前都多点两下保存。
六、训练
6.1 输出logs
- 来到第二个页面
6.1.1 先设置实验名也就是模型名,理论上可以是中文!
6.1.2 第一个输入的是标注文件路径
注意是文件路径
!不是文件夹路径!示例:D:\GPT-SoVITS-beta\GPT-SoVITS-beta0128\output\asr_opt\slicer_opt.list
注意后面的文件名必须要输进去
!
6.1.3 第二个输入的是切分音频文件夹路径
示例:G:\GPT-SoVITS\output\slicer_opt
。注意复制的路径都不能有引号
!!!然后点一键三连
6.2微调训练
6.2.1首先设置batch_size
- sovits训练建议batch_size设置为显存的一半以下,高了会爆显存。
- bs并不是越高越快!
- batch_size也需要根据数据集大小调整,也并不是严格按照显存数一半来设置,比如6g显存需要设置为1。
- 如果爆显存就调低。
- 当显卡在Windows任务管理器的GPU界面3D占用100%的时候就是bs太高了,使用到了共享显存,速度会慢好几倍。
- 以下是切片长度为10s时实测的不同显存的sovits训练最大batch_size,可以对照这个设置。如果切片更长、数据集更大的话要适当减少。
显存 | batch_size |
---|---|
6g | 1 |
8g | 2 |
12g | 5 |
16g | 8 |
22g | 12 |
24g | 14 |
32g | 18 |
40g | 24 |
80g | 48 |
- 在0213版本之后添加了dpo训练。
- dpo大幅提升了模型的效果,几乎不会吞字和复读,能够推理的字数也翻了几倍,但同时训练时显存占用多了2倍多,训练速度慢了4倍,12g以下显卡无法训练。
- 数据集质量要求也高了很多。
- 如果数据集有杂音,有混响,音质差,不校对标注,那么会有负面效果。
- 如果你的显卡大于12g,且数据集质量较好,且愿意等待漫长的训练时间,那么可以开启dpo训练。
- 否则请不要开启。
- 下面是切片长度为10s时实测的不同显存的gpt训练最大batch_size。
- 如果切片更长、数据集更大的话要适当减少。
显存 | 未开启dpo batch_size | 开启dpo batch_size |
---|---|---|
6g | 1 | 无法训练 |
8g | 2 | 无法训练 |
12g | 4 | 1 |
16g | 7 | 1 |
22g | 10 | 4 |
24g | 11 | 6 |
32g | 16 | 6 |
40g | 21 | 8 |
80g | 44 | 18 |
6.2.2接着设置轮数
- SoVITS模型轮数可以设置的高一点,反正训练的很快。
- GPT模型轮数千万不能高于20(一般情况下)建议设置10。
- 然后先点开启SoVITS训练,训练完后再点开启GPT训练,不可以一起训练(除非你有两张卡)!
- 如果中途中断了,直接再点开始训练就好了,会从最近的保存点开始训练。
- windows训练的时候请ctrl+shift+esc打开任务管理器看,下拉打开选项,选择cuda。
- 如果cuda占用为0那么就不在训练。专用GPU内存就是显存,其他的内存都是共享的,并不是真正的显存。
- 爆显存了就调低bs。
- 或者存在过长的音频,需要回到前面的步骤重新制作数据集。
注:win11没有cuda打开设置--系统--显示--显示卡--默认图形设置
关闭硬件加速GPU计划,并重启电脑
- 训练完成会显示训练完成,并且控制台显示的轮数停在设置的(总轮数-1)的轮数上。
- 看cuda占用需要下拉选择cuda,如果win11找不到cuda界面需要关闭硬件加速GPU计划并重启
七、推理
7.1:开启推理界面
- 先点一下刷新模型,下拉选择模型推理,e代表轮数,s代表步数。
- 不是轮数越高越好。
- 选择好模型点开启TTS推理,自动弹出推理界面。
- 如果没有弹出,复制http://服务器IP地址:9872到浏览器打开。
请严格区分轮数 (Epoch) 和步数 (Step):1 个 Epoch 代表训练集中的所有样本都参与了一次学习,1 Step 代表进行了一步学习,由于 batch size 的存在,每步学习可以含有数条样本
7.2开始推理
- 最上面可以切换模型,在刚练完挑模型的时候很重要
然后上传一段参考音频,建议是数据集中的音频。
- 最好5秒。参考音频很重要!会学习语速和语气,请认真选择。
- 参考音频的文本是参考音频说什么就填什么,语种也要对应。
- 而且注意:是无参考文本!不是无参考音频!参考音频无论什么情况都要的!
接着就是输入要合成的文本了
- 注意语种要对应。
- 目前可以中英混合,日英混合和中日英混合。
- 切分建议无脑选
50字一切
,低于50字的不会切。 - 如果50字一切报错的话就是显存太小了可以按句号切。
- 如果不切,显存越大能合成的越多,实测4090大约1000字,但已经胡言乱语了,所以哪怕你是4090也建议切分生成。
- 合成的过长很容易胡言乱语。
关于top_p,top_k
和temperature
- 这三个值都是用来控制采样的。
- 在推理的时候要挑出一个最好的
token
,但机器并不知道哪个是最好的。 - 于是先按照
top_k
挑出前几个token
,top_p
在top_k
的基础上筛选token。 - 最后
temperature
控制随机性输出。
比如总共有100个token
,top_k
设置5,top_p
设置0.6,temperature
设置为0.5。那么就会从100个token
中先挑出5个概率最大的token
,这五个token
的概率分别是(0.3,0.3,0.2,0.2,0.1)
,那么再挑出累加概率不超过0.6
的token(0.3和0.2)
,再从这两个token
中随机挑出一个token
输出,其中前一个token
被挑选到的几率更大。以此类推
关于重复惩罚
= 1
不惩罚重复,> 1
时开始惩罚重复,< 1
时鼓励重复。一般都设置为 > 1
,因为本身复读就挺严重的。
- 如果出现吞字,重复,参考音频混入的情况,这是正常现象。
- 改善的方法有使用较低轮数的GPT模型、合成文本再短点、换参考音频。
- 官方也在努力修复这个问题。
- 如果一直复读那估计是标注不准确的问题,手动校对后重炼就行。
更多推荐
已为社区贡献5条内容
所有评论(0)