
由于经常有人在视频下询问模型使用以及训练数据来源,还是决定写一篇专栏分享一下我个人训练模型的流程。
这样大家学会之后就可以取关了,我也不更了(不是
其实整个流程并不难。
本人作为非计算机专业,也只是找了几篇教程,工具也尽量用现成的。
因此这篇专栏也基本不涉及代码知识,可以放心阅读。
作为代价,如果遇到问题,我也没办法给出解决方法,还是得靠自己去网上找找其他大佬的教程啦,呃嘿嘿嘿...
衷心希望这篇专栏能让帮助大家训练出自己想要的模型,做出更多的二创作品哦~
也希望大家能多多互相分享。可以贴在评论区,或者可以发个视频,看到的话会去点赞哒!
但是千万别拿去干坏事呀!!!
但是千万别拿去干坏事呀!!!
但是千万别拿去干坏事呀!!!

盯~
---- 教程部分 ---
1. 如何使用他人分享的模型
2. 如何获取 崩坏3 角色语音
--- 心得部分 ---
3. 数据集打标注意
4. 本人训练参数设置
5. 参考音频的选择
6. 推理多字和丢字
要使用别人分享的模型,首先,你得要有整合包。
注意,必须是 GPT-SoVITS 的整合包,不同软件之间模型并不通用。
如果还没有,请去花儿不哭大佬的地方下载学习。

官方教程文档:www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e
Github项目地址:https://github.com/RVC-Boss/GPT-SoVITS
在正式开始前,请先确保自己的设备能够正常使用整合包
可以先试用一下整合包自带的模型
整合包没问题之后,找到软件根目录,有 GPT_weights 和 SoVITS_weights 两个文件夹,这就是放置模型的地方。

你问什么是根目录?不懂看图
这里以我分享的模型为例,下载之后压缩包里会有 .ckpt 和 .pth 两种格式的文件。
你只要将前者丢进 GPT_weights 文件夹,后者丢进 SoVITS_weights 文件夹就可以了。
如果你自己训练模型,模型文件默认也是保存在这两个文件夹下的。

这是 GPT 模型文件

这是 SoVITS 模型文件
确保模型丢对位置之后,就可以打开整合包的 webui ,跳过前面的训练环节,直接来到推理部分,就可以选择到模型啦!

如果你是先打开的 webui 后丢的模型,记得点击刷新
有人会问,模型的 xxxx-e5/10/15 里的 e15 是什么意思呀?这几个我该用哪个呀?
这里只简单说明一下 e15 代表了模型经过了 15 轮训练。
作为使用者,一般用训练了最多轮的模型即可,如果效果不好,再进行排列组合切换。
不同游戏获取语音的渠道和方式都各不相同。
在此之前,先介绍一些通用方法。
下载别人整理好的语音数据集
下载别人录制的视频
自己录制游戏语音
相似替代
直接提取游戏音频
……
一般来说,内容向,或者以角色为卖点的游戏,通常会有非常丰富的角色以及剧情语音。
尤其是像原神、崩铁,甚至有大佬已经整理了非常不错的数据集:

其他游戏可能没有现成的数据集,但是,对于在角色面板能直接听到角色语音的游戏,同样可以找到非常多的单角色语音,甚至是全角色语音合集:

原神获取语音的方法实在太多了

对于崩坏3来说,靠视频切片获得数据集是我认为最简单的一种方法

只要愿意找,很多游戏都是能找到的
如果实在是找不到其他人的录屏,那么你也可以自己去游戏里录。
按照花佬的说法,只要1分钟的音频,就已经能训练出不错的效果了。
而对于一些角色语音数据比较难获取的。这里也简单提供一个思路,就是找声线相似的角色的语音数据作为数据集,比如同个cv在其他作品里的角色。
如果以上方法已经能帮助你找到合适的数据集,那真是太好了。
接下来,我分享一种直接提取音频文件的方法(以崩坏3为例),由于技术有限,提取出来的文件需要手动整理,因此会比较麻烦。
首先,你需要下载两个东西:
一个是 Extractor 2.5 用来提取音频。
一个是 vgmstream 用来转码。
具体的操作我就不乱教了,这里会涉及到一些批处理脚本和代码,大家还是直接搜索软件名,网上还是有挺多教程的。比如:

假装大家都会操作之后,用 Extractor 2.5 找到崩三的音频文件并解压。
例如在我本地的路径就是:
F:\Game\Honkai Impact 3\Games\BH3_Data\StreamingAssets\Audio\GeneratedSoundBanks\Windows
你会看到文件夹下有很多文件名是 AUDIO 开头的文件,每个文件里都有成百上千条音频。
如果要找对应的音频,只能靠一些信息慢慢找,例如剧情进度和版本号。
文件具体命名规则我也没特别明白,但大致可以猜到:

3_0_3_4 代表着是 3.0 到 3.4 版本的剧情语音

这两份应该是游戏bgm和角色语音

这些就是往世乐土的中配
提取之后的语音并不能直接播放,因此还需要 vgmstream 转码。
最终,你会得到一大堆没经过分类的音频等待着你去处理。

一个文件就有 3000+ 音频,看不出是谁的
本人技术有限,只能从网上的教程做到这一步,所以也不建议大家使用这种方法去获取数据。
也欢迎大佬教学一下如何快速处理。
虽然整合包提供了批量 ASR ( 语音识别技术 Automatic Speech Recognition ) 功能,但是在断句和部分字词的准确度上还是有点小问题。
如果要获得更好的效果,打标校对还是非常重要的。
首先,根据个人经验,如果 ASR 错误识别成了其他同音字,例如把 爱莉希雅 自动识别成了 艾丽西亚 ,整体而言对于模型效果的影响并不大,可以不特意更正。
但是如果出现了错误断句,把没有停顿的一句话错误地用逗号断开,会导致后续推理时没法用标点准确控制断句,出现语速过快等问题。
所以,如果有时间精力,想要获得比较好的效果,
可以不细扣字词的准确度,
但尽量 确保数据集断句标注正确!
另外,语句中的小停顿也可以故意不标注逗号,这样模型会学着在长句推理中拥有更自然的顿挫感。
第二,数据集中可能会有一些不到一秒的音频,或者是一些纯语气。基本上就是一个词或者几个字,以及战斗的攻击、受击语音。由于比较难打标,可以考虑直接去掉。
而一些太长的音频需要切片,一般建议 音频长度(秒数)不要超过显存太多,否则后续训练的时候容易爆显存。
整合包也内置了语音切片工具,很方便。
第三,如果长句中出现比较明显的 叹气(哎)、笑声(嗯哼、嘿嘿)等声音,建议打上标。否则推理的时候,会容易出现气声和笑声。
比如数据集的音频中,假设爱莉总会在句首 “嗯哼”,如果你不打上标,那么训练出来的模型推理得到的每一句话都有很大概率会先嗯哼一声。
但如果数据本身就没有笑声,你却硬打上“哈哈哈”,推理的时候也是笑不出来的。
具体参数说明,还是去看官方教程文档吧:www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e
我这里贴一下我在微调训练时候用的参数:

SoVITS训练参数
本人用的是 3060ti 的显卡,显存不高,所以 batch_size 只开到 4 。一般来说,设置成显存的一半即可。开高了容易爆显存。
总训练轮数 我调到了 16 轮,保存频率 没变,依旧是每 4 轮保存一个模型。
学习率 改成了 0.3 相当于是让模型学慢一点。如果调大,虽然学得快但可能不像。如果调小,就意味着需要给模型更多的训练轮数让它去学习。
这里还有一个 过拟合 问题,不过本文不展开。
只要记住不是轮数越大,学习率越小,效果就越好。
需要找到合适的。
个人在给数据集打标校准的时候就会开始同时选择参考音频了,毕竟会大致过一遍。
很多时候,数据集的数据并不能表现角色的某种语气、情绪,这时候需要去相关的视频找一些片段单独提取干声做成参考音频。
比如我的分享的爱莉模型,数据均来自舰桥语音,语气都十分得健康阳光、积极向上,所以分的参考音频并不多。如果要悲伤的语气,就要去剧情里找,然后单独拎出来。

那么怎么样才算是不同的参考音频呢?
根据经验,参考音频会极大影响推理结果的 声线、情绪和语速。
参考音频清晰准确,推理结果也会比较清晰。
参考音频有气声,推理结果也会容易有杂音。
参考音频情绪高昂,推理结果也会更加激动。
参考音频语速缓慢,推理结果也会娓娓道来。
这里还要注意,不同语气最好还是要适配对应的文本。让模型用不正确的语气说出不适合的话,比较难出效果。
你需要悲伤的效果,就找低沉的,缓慢的参考音频。
最后,参考音频一般都是用当前角色的。
如果想要 “本姑娘就是罗刹” 那种效果,你得用三月七的模型 + 罗刹的参考音频。
我遇到的丢字问题一般发生在句首,此时可以试着在前面 多垫半句话,然后用的时候裁掉。
如果不方便垫字,也可以尝试 改成同音字,或者拿标点隔开,通常就能解决。
还有在中英混合的时候发生了丢字,需要 检查一下在英文前后是否使用的是英语标点。
不同语言要配合不同标点进行使用,尤其是断句。
多字问题则比较少见,我只遇到的几次。
一次是因为填写参考音频文本的时候少了半句话,导致每次推理都会多字。
所以参考音频一定要选好并且正确填写文本!
另外则是模型加载出了点问题,重开了一下就好了。
学会了吗?学会了吧。
我也不是什么大佬,本身也是因为喜欢爱莉,又恰好接触到 GPT-SoVITS ,又兴趣使然地分享了爱莉的模型,没想到有了大家的关注。所以暂时还不打算建群。
希望这篇文章能对你有所帮助!
期待更多分享!期待更多二创!!
最后也感谢其他大佬分享的模型!!!
这里贴几个,大家挑效果好的去用就可以了。

这位大佬还做了个接口能够让角色给你读书,想听书的可以去看看


白菜就是官方教程文档的编写者,他只是个初中生啊,让作为社畜的我情何以堪
完