基础知识
1. 什么是 SVC
SVC 是 Singing Voice Conversion(歌声转换)的缩写。Voice Conversion 是语音转换,Voice Conversion 可以保留声音的内容但改变声音的音色。而 Singing Voice Conversion 就是 Voice Conversion 的一种,Voice Conversion 能做到的 Singing Voice Conversion 都能做到,还能转换歌声。
2. SVC 有哪些项目
常见的开源的 SVC 项目有 So-VITS-SVC,RVC,DDSP-SVC,Diffusion-SVC,Diff-SVC,ReFlow-VAE-SVC
本 fusion 整合包集成了 So-VITS4.1,DDSP6.0,ReFlow-VAE-SVC 三个项目(后续可能加入 RVC)
3. 关于这些 SVC 项目
3.1 So-VITS-SVC
So-VITS-SVC 的长老级整合包:作者 bilibili@羽毛布団
作为迄今为止模型质量上限最高的 SVC 算法,sovits 早在其早期版本便已显露头角,在早期的 AI 音乐中,sovits 凭借其强大的算法受到人们关注。在缝合更新了扩散模型后,其抑制电音的能力也一度让 AI 音频能以假乱真。
在 23 年 3 月 10 日因为不可抗拒的原因,原作者删库了,现在 github 上的仓库是爱好者重建的并且也处于 Archieve 状态,最后一次大更新停留在了今年 4 月,基本不可能复活了。
本整合包的 so-vits 已由幻灵等大佬重构,大幅优化速度
TIP
请不要将 So-VITS-SVC 简称为 SVC,正确的简称应该是 sov
WARNING
So-VITS-SVC5.0 并不是新版 sovits,sovits 在 4.1 后再也没有更新了,这个 5.0 是个碰瓷抄袭的项目,并且多次攻击其他 SVC 开发者,甚至开盒了很多开发者。请不要使用
3.2 DDSP-SVC 6.0
项目开源仓库: yxlllc/ddsp-svc
有着超快的训练速度和理论最低的训练配置需求(甚至可以 CPU 炼),需求较低的数据时长,能用的实时变声。
作为 SVC 中更新最快的算法,ddsp 从 3.0 时期的勉强能用,到 4.0 时期作为 sovits 的下位替代,再到 6.0 时期的能在一些数据集中与 sovits 抗衡(别问为什么没有 ddsp5,因为某人懒得改 5.0 的 bug 直接更新到了 6.0)
目前已集成进 fusion 整合包,原 ddsp6.0 整合包 (指我自己那个) 不再维护。
3.3 ReFlow-VAE-SVC
项目开源仓库: yxlllc/reflow-vae-svc
作为最新的 SVC 算法,ReFlow 拥有极高的训练效率和学习能力,对于数据集的长度要求较低,拥有全新的点对点推理模式,其质量有望超过 sovits。相对的,其训练拟合更快,容易炸炉(恼)
目前还在测试阶段,欢迎大家试用并反馈试用体验。
4. 选择适合的 SVC 项目
项目名称 | 描述 |
---|---|
So-VITS-SVC | 老牌知名 SVC 项目,理论上模型质量最高,对推理源的包容度更大。对训练配置和数据集时长、质量的要求较高。说话数据训练会有较大音域限制(唱不上去)。 |
DDSP | 数据集要求低,训练配置要求极低,可实时变声(感觉不如 RVC)。推理源要求高,若有杂音很可能影响结果,有一定音色泄露问题。 |
ReFlow | 数据集要求低,训练配置要求低,推理偶尔会有惊喜,个人感觉质量约等于 RVC,除了实时变声外,可作为其平替。作为测试中的项目,感觉训练还是有点不稳定。 |
4.1 项目性能比较
主观效果评级(质量中等,时长超过 1h 的唱歌数据,推理源较好的情况下):
SOV > ReFlow > DDSP6.0
主观效果评级(高质量,时长超过 1h 的说话数据,推理源较好的情况下):
DDSP6.0 > ReFlow >>>>> SOV
训练速度(由快到慢):
DDSP ≈ ReFlow > SOV
4.2 省流助手
高配置,高质量数据集,首选 sovits;
一般配置,数据集较短,首选 ReFlow;
低配置,或者语音数据集,你没得选 (˃̶͈̀௰˂̶͈́) ddsp 欢迎您。
5. 训练配置
5.1 什么是显卡?
在 AI 圈,显卡一般指的是独立显卡,比如 N 卡、A 卡、I 卡。英伟达(NVIDIA)的显卡是 N 卡,前缀是 RTX(20,30,40 和即将到来的 50 系)或 GTX(16,10 系及以下)等,非 RTX 或 GTX 前缀的 N 卡基本上用不了整合包内的算法,显卡名称有 4090,4070tibaby,2080ti,1060 等。A 卡即 AMD 的显卡,前缀有 RX 等,显卡名称有 7900TXT,6750GRE 等。I 卡即英特尔的独立显卡,前缀为 ARC(饶了 DG1 罢,它大抵是独立核显),显卡名称有 380,750 等,都买 I 卡了应该不需要我科普了。
5.2 笔记本?又不是不能用!
台式机的独立显卡一般是一块砖(谁家显砖),插在 pcie 槽上。而移动端笔记本一般只有全能本和主流游戏本才配有独立显卡(以 N 卡为主)。其性能普遍弱于同级台式显卡,若使用笔记本进行训练模型务必做好散热并保证运行状态下有人在场,防止过热导致笔记本损坏或出现其他问题。
群内笔记本因跑 AI 过热损坏数:11,警钟长鸣
轻薄本一般不推荐玩 AI,市面上标注的所有所谓“AIPC”的轻薄本在正儿八经的 GPU 面前都是垃圾,没有独显或者独显不支持训练就去用 DDSP,虽然慢点又不是不能用。 什么?你用 Mac?你给我滚出去! (MAC 玩家请出门左转云端镜像)
5.3 GPU 又是个啥
GPU 是图形处理器,显卡一定有 GPU 核心,但 GPU 不一定是显卡。不是所有 GPU 都叫显卡!像 P106,RTX6000,A100,H800 这种是专业级 GPU,不是显卡。
5.4 关于 CUDA
这是 N 卡的统一计算架构,所有在 N 卡上进行的 Ai 计算都需要它。安装了显卡驱动的话都会安装上 CUDA,CUDA 也有不同的版本,建议手动下载 11.8 版本,新版有一些占用不满的问题。遇到一些 CUDA 报错那么一般都是显卡方面的报错。
A 卡/I 卡/摩尔线程均没有 CUDA 核心,虽然你可能有很多转译兼容 cuda 生态的方法,但是这些不适合跑 AI(至少消费级是这样),想要用这些卡玩 AI,也许你需要 ZLUDA。(如果你会这些方法,那本篇肤浅的文档大概不适合你看,因此不再展开)
5.5 什么是显存?
顾名思义,显存就是显卡的内存,打开任务管理器-性能-GPU 就可以看到显存了。
需要注意的是,“专用 GPU 内存”才是显存,“共享 GPU 内存”不是显存。
以 sovits 为基准,4G 勉强达到训练最低需求,但是训练速度很慢,6-8G 算是及格,能有一个完整的训练体验。12G 以上就很不错。显存越大越好。
5.6 配置需求
本整合包内的三个算法中,sovits 对硬件配置依赖最大,reflow 其次,ddsp 最低,基本上不需要显卡。因此,以下配置需求我以要求最高的 sovits 为标准。
笔记本:独显,N 卡,显存 6G+。RTX2060laptop 及以上基本可以使用,RTX4060 以上最佳。
台式机:独显,N 卡/GPU,显存 5G+。GTX1060 5G 以下比较勉强,RTX2060 12G 往上是一个不错的水平,显存越大越好。
5.7 配置推荐
对于纠结于自己该买什么样的显卡进行训练的朋友,我在此做一些推荐,大家凭自己的能力和预算选择。(价格为 2024 年 7 月时,仅供参考)
To 小白(不怎么会折腾硬件,不想碰矿卡):
型号 | 价格 | 备注 |
---|---|---|
4090D 24GB | 1.2w | 恶臭,但是比起目前的 4090 价格还是这玩意便宜 |
4070tisuper 16GB | 6k | |
4060ti 16GB | 3k | |
3060tig6x 8G | 1.7K | |
3050 8G | 1.3k | 沟史性能 |
To 装机膏手(会折腾矿卡,懂基本的计算机硬件基础):
型号 | 价格 | 备注 |
---|---|---|
3090/3090ti 24G | 6-8k | 价格浮动较大 |
2080ti 22G | 2-3k | 炼丹の神 |
2060 12G | 1.2k |
To 搞机老登(E?5!)
P106/P104/M40/P40.....都有这水平了应该不需要我推荐了
5.8 外围配置
除了显卡这种对训练影响极大的配置,还有一些非关键的外围配置,一般情况下,这些配置对训练的影响可能不大,但若是太低,也不利于训练模型。
部件 | 信息 |
---|---|
CPU | 一般而言,CPU 主要会影响数据的速度,推荐使用 i5-12400/R5-5600 及以上的 CPU。如果你对预处理速度没什么要求的话,总体影响不大,但如果你一定要用 CPU 进行 ddsp 的训练,那至少需要 i5-13600 及以上的 CPU。 |
内存 | 内存频率或者代次几乎没有什么影响,唯一影响较大的是内存大小。一般而言,16G 算是一个及格线,32G 可以有一个不错的体验(可以将数据集载入内存以减轻硬盘压力和加快训练速度)64G 及以上甚至可以不用特意设置虚拟内存。 |
硬盘 | 首推 SSD 固态硬盘,m.2 最好,sata 也行,最好不要用 HDD 机械硬盘(加载速度极慢,且损耗寿命,除非训练时将数据集载入内存,否则不建议使用 HDD 机械硬盘。如果你需要训练模型,svc-fusion 至少需要留出 64G 硬盘空间(不包括虚拟内存)。 |
6. 常见的英文
攻读说明书是我们的义!务!
1.ERROR
Error ['erə] :错误。
这是最常见的一个单词,必须记住这个单词!这个单词会在所有报错的时候出现,有了这个报错才知道什么原因,该怎么解决。它一般前面会跟有一个定语来修饰这个报错,后面跟着报错原因。比如:OutOfMEemoryError:CUDA out of memory。
前面的 OutOfMEemory 说明问题是内存不足这类报错,后面的 CUDA out of memory 说明是显存不足。遇到问题就可以这样自己判断。
问问题带上控制台报错截图和网页截图。不然大伙只能给你算一卦。
2.module
module: [ 'mɔdju:l ]:模块。
模块就是一个脚本,缺少某个脚本,对应的程序就无法运行。你可能会遇到 No module 的报错,遇到这种情况缺什么装什么就好了。比如:ModuleNotFoundError:No module named‘jieba_fast’,这里没有 jieba_fast 这个模块,那么只要 python -m pip install jieba_fast 装上这个模块就好了,缺什么装什么。
3.weights
weights [weɪts] :模型权重。
也就是俗称的模型,GPT_weights 就是 GPT 模型,SoVITS_weights 就是 SoVITS 模型,以此类推就可以举一反三了,其他的模型只要找 weights 就行了。不过严格来说 weights 也不能算模型,weight 指的是神经网络中的参数,这些参数被存储在称为“权重”的数组中,所以 weights 叫做模型权重。
4.output
output ['aʊtpʊt] :输出。
程序输出的文件一般都会在 output 文件夹,有的时候 output 会缩写成 opt,比如 uvr5_opt,代表这个文件夹是 uvr5 输出的文件的存放位置。
5.found
found [faʊnd] :找到。
一般出现在路径不对的报错中,not found 就是没有找到的意思。如果路径中没有某个需要的文件的时候就会报错 NotFound:xxx。也有可能是没有找到某个模块,模块就是 Module,ModuleNotFoundError。总之看见 NotFound 就去检查一下有没有缺文件,不要什么问题都干等着大佬来回答,这种低级的问题都能自己解决的。你哪怕去问别人,别人哪知道你的文件放在哪。
6.pretrained
pre-trained:预先训练的。
常见的有 pretrained,这个文件夹里放的是预训练模型(底模),并不是微调后的最终模型,找模型的时候别找错了。
7. 关于整合包
整合包集成了环境和软件本体(多数时候还包括底模)。多数常用和比较火的项目都有相关的整合包,其操作较为便捷。
8. 关于控制台
控制台就是这个你点了启动 webui.bat 后出现的**黑底白字的框。所有的报错信息和正常运行信息都会在这里显示。**对照文档末的常见报错解决方案自行排除常见错误。
若遇到自己无法独立解决的问题,需要帮助时,必须带控制台的完整截图在群内请教,在请教前请务必保证其报错并非常见简单报错,否则不予回答。
9. 文件路径和文件夹路径
文件夹路径就是文件管理器上面这行,单击后 Ctrl+C 即可复制,他就像你家的门牌号。
文件路径是单独一个文件的路径,它是文件的身份证号。文件路径就是文件夹路径加上\文件名.后缀。在填路径时务必区分好文件夹路径和文件路径,填错必报错。
10. 使用前所需的东西
10.1 硬件配置和软件环境
硬件上文中已经具体讲过,此处不再赘述。若无可用显卡建议使用 ddsp 进行训练和推理。
系统方面,需要使用 windows10(推荐 22h2)及以上系统,SVC 不兼容 win10 以下,fusion 暂不支持 Mac 平台,Linux 无法使用整合包(都会用 Linux 了大抵不需要看这篇文档了罢)
注:如果你的物理内存(不是硬盘存储空间!是内存!)小于 32G,那基本上需要开启 虚拟内存。 如果你的物理内存足够,请选择 「自动管理所有驱动器的分页文件大小」
10.1.1 开启虚拟内存
你不需要知道为什么要开,你只需要知道如果你的物理内存不足,就必须开启虚拟内存,否则无法进行训练
- 打开 系统属性:首先,需要右键点击桌面上的“此电脑”图标,并选择“属性”选项。
- 进入高级系统设置:在系统属性窗口中,点击左侧菜单的“高级系统设置”链接。
- 调整性能设置:在系统属性窗口中,点击“性能”设置按钮,然后选择“高级”选项卡。
- 更改虚拟内存设置:在“高级”选项卡下,点击“更改”按钮,进入虚拟内存设置界面。
- 自定义虚拟内存大小:在虚拟内存设置窗口中,取消勾选“自动管理所有驱动器的分页文件大小”,并选择整合包所在的磁盘分区作为虚拟内存的分区。建议将最小值设定为 32 000mb,最大值设定为 64 000mb。
- 确认设置:设置完毕后,点击“设置”按钮,并返回到“性能选项”窗口,确认虚拟内存已经设置成功。完成后请重启电脑。
TIP
尽量将整合包和虚拟内存放在读速较快的固态硬盘,避免硬盘寿命缩短和训练读取时卡顿。
10.2 数据集
数据集是指一组数据样本,包含音频,文本等数据(在 SVC 这种无需标注文本的算法中,数据集一般指音频)。数据集的质量指的是音频的质量,数据集的大小通常指音频的长度,数据集切片长度一般指每条音频切片的最值区间(即一组数据集内单条音频最小长度和最大长度)
10.2.1 数据集时长
sovits 需要一小时(最佳一个半小时以上),RVC 和 ddsp 需要 10 分钟(推荐半小时以上)
10.2.2 数据集选取和质量要求
若需唱歌模型,则使用唱歌数据集。
若需要说话模型,请使用说话数据集。
混用数据集可能导致微小的音色泄露,但也可能在一定程度上提升音域。(其结果与数据集质量正相关)
高质量数据集要求响度统一,干净清晰,内容正常的干声。不缺频,以 wav 或 flac 格式录制。录音环境要求:无底噪,杂音,不可出现伴奏、压缩效果和混响。唱歌和朗读请保持口齿清楚不含糊。唱歌尽量选三首及以上有高音的歌。
TIP
手机录音和杂牌麦克风录音质量基本偏差,经 UVR5 分离的有损音频一般更差,只能说勉强能用。