配置要求

一张支持 CUDA 的 nVIDIA 显卡,拥有至少 6G 以上显存

下载地址

百度网盘

百度网盘 请输入提取码

提取码:g8n4

Google Drive

https://drive.google.com/file/d/1qEjZW3Lrf0QTjs8vkx1MyvT0naEETp5A/view?usp=sharing

增量更新 ⚠️v1.x 版本的整合包无法通过增量更新更新至 v2,请参考这里了解更新方式

百度网盘:https://pan.baidu.com/s/1N-47gaAFE1Ewd4hrOQEu8A?pwd=yryv 提取码:yryv

底模DLC

预训练模型(底模)可以大大减少小数据集的训练难度。整合包内已经自带了底模,并会在训练时自动加载。但是目前 Vec768l12 编码器有一个更强的底模。你可以自行下载并替换原来的底模。
1将下载的底模分别改名为 G_0.pth 和D_0.pth
2替换到 pre_trained_model/768l12 目录下同名文件
下载地址:

ms903/sovits4.0-768vec-layer12 at main

在开始之前

为了避免在之后的使用中出现各种意料之外的问题,请务必对照下面的 Checklist 检查本机环境。
关闭全局梯子 / 绕过局域网
使用推荐的浏览器(Chrome / Edge / Firefox)
关闭浏览器自带的网页翻译功能
关闭所有第三方杀毒软件 / 安全卫士等
将系统虚拟内存设置为至少 30G
部分浏览器(尤其是 Edge)会出现 WebUI 打开后无法正常工作的现象。如果遇到卡死/无法点击交互等现象,请尝试更换为上述推荐的其他浏览器。 ### 启动 WebUI 本整合包的所有训练/推理流程均在浏览器交互界面(WebUI)中实现。
1将整合包解压至硬盘内,请确保硬盘内至少还有 20GB 的剩余空间
2双击整合包内启动webui.bat即可启动 WebUI,初次使用需要初始化,可能会等待较长时间,启动完成后将会使用默认浏览器自动弹出 WebUI 窗口。

推理

推理 (Inference) 是指将输入源音频通过 So-VITS 模型转换为目标音色的过程。因此,执行 So-VITS 的推理过程,你必须拥有:

名称 文件后缀 存放目录 描述
So-VITS 模型 .pth .\logs\44k 推理所必须的神经网络模型
配置文件 .json .\configs 存放模型参数的配置文件,必须与模型一一对应
除此之外,还有一些文件属于可选项,能够执行推理的扩展功能。即使缺失也可以正常执行推理:
名称 文件后缀 存放目录 描述
聚类 (Kmeans) 模型 .pt .\logs\44k 执行混合聚类方案必须的模型
扩散模型 .pt .\logs\44k\diffusion 执行浅扩散推理必须的模型
扩散模型配置文件 .yaml .\configs 存放扩散模型参数的配置文件,必须与模型一一对应
特征索引模型 .pkl .\logs\44k 执行混合特征索引必须的模型

⚠️在默认模式下,上述所有文件必须放置在对应的存放目录,否则无法正常读取。如有较多模型,可以启用独立目录模式管理模型,具体请参考多模型管理

从外部迁移模型

从外部转移模型时,只要将对应的文件放置到models文件夹下,然后在 WebUI 底部启用独立目录模式即可(详情参考多模型管理)。模型的文件名可以任意更改,但请保持后缀不变。聚类模型和扩散模型使用的是同一个后缀(.pt),请在重命名时显著区分这两种模型。
⚠️从云端下载模型时,请务必注意只有”G“模型才是推理可用的模型。错误下载”D“模型将无法正常推理。 ### 加载模型 在推理过程中,模型会默认被加载到 CUDA 设备(显卡)或 CPU 上,取决于你当前可用的设备。按照以下步骤加载模型:
1选择所使用的 So-VITS 模型,此时会自动读取模型所使用的编码器
关于不同的编码器详解,请参考训练 - 编码器详解
2选择该模型对应的配置文件,此时会自动读取配置文件中的编码器参数
⚠️配置文件与模型的编码器必须对应,否则无法正常推理。旧版模型需要修改配置文件以兼容 4.1 版本,关于如何修改配置文件兼容,请参考旧模型兼容
3如需使用浅扩散、聚类模型、NSF-HifiGAN 声码器增强器,请自行选择
4点击加载模型
浅扩散、聚类模型及声码器增强器需要在选中后再加载模型。如果已经有模型加载,选中选项后需要重新加载模型。
模型加载需要大约 10-30 秒,多说话人模型可以在 So-VITS 说话人列表中选择对应的说话人。

上传音频并转换

你需要首先上传一段输入源音频才能进行转换,优秀的输入源音频的要求是:
●纯人声,无伴奏、底噪、和声、混响等
●WAV 格式,44100 hz,16 bit
关于如何从歌曲中分离伴奏、去除混响和声,请参考训练 - 数据集处理 - 人声伴奏分离
整合包中预装了 FFmpeg,因此即便不是 44100 hz, 16 bit 的 WAV 文件也可以上传。如果在推理时遇到 FFmpeg 相关的错误,请重启 WebUI 后再次尝试,或手动使用音频处理软件转换为正确的格式
一般来说,默认的参数对于转换歌曲足够使用。你也可以参考推理参数详解来了解各个推理可选项的参数说明

训练

训练是指使用目标说话人的音声数据集令 AI 学习特征并生成神经网络模型。在训练之前,你需要准备:
目标说话人的授权数据集(至少 30 分钟的纯人声 / 歌声,1-2 小时最佳)
音频处理软件(Adobe Audition, UVR5)
本整合包
⚠️训练过程的显卡负载非常高,且一般会持续数小时,在此期间建议不要使用计算机进行其他的任务。 ### 数据集处理 人声伴奏分离
如果你使用的是带伴奏的歌曲作为数据集,那么请一定要将人声从伴奏中分离出来。分离伴奏和人声推荐使用 Ultimate Vocal Remover 5 (UVR5), 并下载对应的处理模型。一些推荐的处理模型和功能如下:
●Demucs - v3 | UVR_Model_1: 分离人声及伴奏
●VR Architecture - 5_HP-Karaoke-UVR: 分离和声
●VR Architecture - UVR-DeEcho-DeReverb: 去除混响和回声
上述所有模型均可在 UVR5 软件选择模型处 —— Download More Models 下载
需要注意的是,没有任何一种方法能够做到无损分离人声。当歌曲中的伴奏越复杂,分离后的人声失真越严重。较差的人声质量会显著影响模型训练的结果。 ### 音频切片 数据集的音频需要切分成数秒至数十秒的片段。一般来说 3- 15 秒为佳。在 WebUI 里整合了一个智能音频切片工具,可以满足上述切片要求。
⚠️在切片之前,请将待切片的音频文件以纯数字、字母、下划线命名。
1打开 WebUI - 小工具/实验室特性 - 智能音频切片
2将包含所有待处理音频文件(.wav 格式)的文件夹路径输入到原始音频文件夹内
3点击加载原始音频,确认音频被正确识别
4输入切片后的输出目录,选择对过短音频的处理方式
5开始处理

预处理

数据集预处理的流程是:
响度匹配 —— 重采样 —— 生成配置文件 —— 提取特征
⚠️注意:虽然 So-VITS 项目自带响度匹配脚本,但该脚本会将音频匹配到 0db, 这可能会造成音质的受损。最佳的做法是使用专业音频处理软件,如 Adobe Audition自行对数据集进行响度匹配处理后再进入预处理流程。如果数据集已经完成了响度匹配或启用了响度嵌入,可以在预处理时跳过程序自带的响度匹配流程。
上述所有流程在 WebUI 中均可一键完成:
1将上一步切片完成的数据集文件夹放置到整合包根目录下dataset_raw文件夹内
⚠️请注意文件结构:dataset_raw/speaker_name/*.wav
2在 WebUI 训练选项卡中,点击识别数据集,确认数据集被正确识别
3根据说明自行选择训练使用的编码器和 f0 预测器

编码器详解

编码器名称 优点 缺点
vec256l9 - 不支持扩散模型
vec768l12(推荐) 最还原音色、有大型底模、支持响度嵌入 咬字能力较弱
hubertsoft 咬字能力较强 音色泄露
whisper-ppg 咬字最强 音色泄露、显存占用高
更多的编码器选项,请参考 训练参数详解 - 关于特征编码器
🦻音色泄露指的是输出的音色向底模/推理输入源的原始音色接近,模型说话人越多,音色泄露越严重。考虑到大多数人都希望尽可能还原目标说话人的音色,因此音色泄露被认为是一种不受欢迎的结果。
4如要训练扩散模型或启用响度嵌入,请自行勾选
勾选训练扩散后将会提取扩散模型所需的特征文件,会占用更多硬盘空间。有关扩散模型的详细说明,请参考训练参数详解
⚠️启用响度嵌入需要选择 Vec768L12 编码器,其它编码器没有响度嵌入的底模。
5点击数据预处理
数据预处理的输出信息中可能存在报错信息。如果出现报错,则代表数据预处理未完成。你可以参考常见报错和解决方案自行排障。
⚠️数据预处理可以多进程执行,但会显著占用显存和内存。建议 6G 以下显存不要开启多线程。12G 以下显存不要将线程数设置为 2 以上。
⚠️同一个数据集只需要预处理一次,往后继续训练不需要也不可以重新预处理! ### 训练参数设置和开始训练 请参考 WebUI 中的说明自行设置参数并开始训练。有关训练参数和聚类模型的更多说明,请参考训练参数详解
训练过程中会根据你之前设置的保存步数(默认为 800 步)保存一次模型。
请严格区分轮数 (Epoch) 和步数 (Step):1 个 Epoch 代表训练集中的所有样本都参与了一次学习,1 Step 代表进行了一步学习,由于 batch size 的存在,每步学习可以含有数条样本,因此,Epoch 和 Step 的换算如下:

Epoch=(数据集条数÷batc__hsize)Step_

Tensorboard

可以用 Tensorboard 来查看训练过程中的损失函数值 (loss) 趋势,试听音频,从而辅助判断模型训练状态。
1双击启动tensorboard.bat运行 Tensorboard
Tensorboard 是根据训练时默认每 200 步的评估生成日志的,如果训练未满 200 步,则 Tensorboard 中不会出现任何图像。

Losses 详解

你不需要理解每一个 loss 的具体含义,大致来说:
●loss/g/f0、loss/g/mel和loss/g/total应当是震荡下降的,并最终收敛在某个值
●loss/g/kl应当是低位震荡的
●loss/g/fm应当在训练的中期持续上升,并在后期放缓上升趋势甚至开始下降
观察 losses 曲线的趋势可以帮助你判断模型的训练状态。但 losses 并不能作为判断模型训练状态的唯一参考,甚至它的参考价值其实并不大,你仍需要通过自己的耳朵来判断模型是否训练好了
对于小数据集(30分钟甚至更小),在加载底模的情况下,不建议训练过久,这样是为了尽可能利用底模的优势。数千步甚至数百步就能有最好的结果。

🌃内容维护相关