GPT-SoVITS使用指南——点动科技

部署成功后界面

在这里插入图片描述

一、数据集处理

  • 注:请认真准备数据集!以免后面出现各种报错,和炼出不理想的模型!好的数据集是炼出好的模型的基础!

1. 使用UVR5处理原音频(如果原音频足够干净可以跳过这步,比如游戏中提取的干声)

用自带的UVR5处理音频

  • 点击开启UVR5-WebUI稍加等待就会自动弹出图二的网页,如果没有弹出复制http://服务器的IP:9873到浏览器打开
    在这里插入图片描述
  • 1.首先输入音频文件夹路径或者直接选择文件(2选1)
    文件夹上面那个地址框就是文件夹路径
    在这里插入图片描述
  • 2.先用HP2模型处理一遍(提取人声)
    在这里插入图片描述
    1. 然后将输出的干声音频再用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_lengthmin_intervalmax_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
6g1
8g2
12g5
16g8
22g12
24g14
32g18
40g24
80g48
  • 在0213版本之后添加了dpo训练。
  • dpo大幅提升了模型的效果,几乎不会吞字和复读,能够推理的字数也翻了几倍,但同时训练时显存占用多了2倍多,训练速度慢了4倍,12g以下显卡无法训练。
  • 数据集质量要求也高了很多。
  • 如果数据集有杂音,有混响,音质差,不校对标注,那么会有负面效果。
  • 如果你的显卡大于12g,且数据集质量较好,且愿意等待漫长的训练时间,那么可以开启dpo训练。
  • 否则请不要开启。
  • 下面是切片长度为10s时实测的不同显存的gpt训练最大batch_size。
  • 如果切片更长、数据集更大的话要适当减少。
显存未开启dpo batch_size开启dpo batch_size
6g1无法训练
8g2无法训练
12g41
16g71
22g104
24g116
32g166
40g218
80g4418

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_ktemperature
  • 这三个值都是用来控制采样的。
  • 在推理的时候要挑出一个最好的token,但机器并不知道哪个是最好的。
  • 于是先按照top_k挑出前几个tokentop_ptop_k的基础上筛选token。
  • 最后temperature控制随机性输出。
    比如总共有100个tokentop_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模型、合成文本再短点、换参考音频。
  • 官方也在努力修复这个问题。
  • 如果一直复读那估计是标注不准确的问题,手动校对后重炼就行。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值