跳转至

GPT-SoVITS音频镜像使用说明

1、云端使用

1.1 开启打开日志

image.png

1.2 检查 WebUI 是否启动完成

出现以下图红框信息,表示启动成功

image.png

2、数据集处理

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

2.1 使用UVR5处理原音频

如果原音频足够干净可以跳过这步,比如游戏中提取的干声

点击开启UVR5-WebUI稍加等待,后如下图所示

image.png

点最下面那个链接就会自动跳转UVR5WebUI的页面。

image.png image.png

首先输入音频文件夹路径或者直接选择文件(2选1)推荐是用上传音频

是用文件夹路径

回到应用打开文件管理

image.png image.png 复制文件夹路径,粘贴到待处理音频文件夹路径

注:该文件夹内可以自行上传音频文件

工具操作建议

  1. 可先用HP2模型处理一遍(提取人声)
  2. 然后将输出的干声音频再用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,建议不要改输出路径,当然也可以使用其他切分工具切分。

image.png

切分完后文件在/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,建议不要改输出路径。

image.png

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需要一些时间,点击查看日志,看有没有报错就好了。

image.png

2.5 校对标注

这步比较费时间,如果不追求极致效果可以跳过

输入标注文件的文件路径,注意是文件路径!不是文件夹路径!示例:/root/onethingai-tmp/GPT-SoVITS/output/asr_opt/slicer_opt.list 注意后面的文件名必须要输进去!打不开就再三检查路径是否正确!必须要有.list的后缀!!!然后开启打标webui

点最下面那个链接就会自动跳转打标webui的页面

image.png image.png

工具教学视频可以上 B 站,搜索 SubFix 或 音频标注手动精修工具,自行学习

3、训练

3.1输出日志

进入这个页面

image.png

  1. 先设置实验名也就是模型名,不要有中文!

  2. 然后第一个输入的是标注文件路径,注意是文件路径!不是文件夹路径!示例:/root/onethingai-tmp/GPT-SoVITS/raw/xxx.list 注意后面的文件名必须要输进去!打不开就再三检查路径是否正确!必须要有.list的后缀!!!

  3. 第二个输入的是切分音频文件夹路径 示例:/root/onethingai-tmp/GPT-SoVITS/output/slicer_opt

  4. 然后点一键三连。

注意:复制的路径都不能有引号!!!千万不能有引号!

3.2 微调训练

image.png

首先设置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代表步数。不是轮数越高越好。

image.png

选择好模型点开启TTS推理

image.png

4.2 开始推理

点最下面那个链接就会自动跳转推理的页面

image.png image.png

然后上传一段参考音频,建议是数据集中的音频。最好5秒参考音频很重要!会学习语速和语气,请认真选择。参考音频的文本是参考音频说什么就填什么,语种也要对应。当前可以选择无参考文本模式,但非常不建议使用,效果非常拉胯。

接着就是输入要合成的文本了,注意语种要对应。目前可以中英混合,日英混合和中日英混合。切分建议无脑选50字一切,低于50字的不会切。如果50字一切报错的话就是显存太小了可以按句号切。如果不切,显存越大能合成的越多,实测4090大约1000字,但已经胡言乱语了,所以哪怕你是4090也建议切分生成。合成的过长很容易胡言乱语。

top_p, top_k 和 temperature 参数,保持默认就行了。这些控制的都是随机性,拉大数值,随机性也会变大,所以建议默认就好。

如果出现吞字,重复,参考音频混入的情况,这是正常现象。不是模型炼差了,不用为模型担心。改善的方法有使用较低轮数的GPT模型、合成文本再短点、换参考音频。官方也在努力修复这个问题。