So-VITS-SVC 整合包快速开始:下载、配置要求与 WebUI 启动
AI摘要
MiaoYin

本篇是「AI 歌曲翻唱(So-VITS-SVC)」系列教程的一篇,整合包基于 So-VITS-SVC 4.1,适合想用自己声音训练 AI 翻唱模型的同学。说明:本站不提供整合包与现成翻唱模型的下载,但提供 AI 音色模型的定制训练服务。教程内容按原项目文档整理,已去除无关信息。

版本号说明

目前该文档使用两个版本号系统,分别是 So-VITS 官方的版本号,以及本整合包的版本号。请注意不要混淆。

So-VITS 官方版本号目前为 4.1,其下另有两个分支:4.1-Stable 以及 4.1-Latest.

⏩4.1-Stable是官方的稳定版本,4.1-Latest中包含一些尚在开发的新特性。由于后者可能存在一些 BUG,因此本整合包将仅同步更新 4.1-Stable的内容。

本整合包使用语义化版本,与 So-VITS 官方版本号独立发展。如无特殊说明,整合包的最新版本将始终与官方同步更新。您可以在更新日志中查看本整合包最新的版本说明。

微调后的 NSF-HiFiGAN 社区声码器

Fish Audio Preprocessor

微调声码器

SAMI 接口

推理参数详解 – 关于文本转语音

训练参数详解 – 关于浅扩散

模型发布和安装

多模型管理

训练参数详解 – 关于特征编码器

配置要求

  • 一张支持 CUDA 的 nVIDIA 显卡,拥有至少 6G 以上显存
  • Windows 10/11 系统

下载地址

完整整合包

百度网盘:

百度网盘 请输入提取码 百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间 https://pan.baidu.com/s/12u_LDyb5KSOfvjJ9LVwCIQ?pwd=g8n4

提取码:g8n4

Google Drive: https://drive.google.com/file/d/19e7HJYk32WHVIXm-CuhvbwF8IHjZ48QU/view?usp=sharing

增量更新

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

⚠️ ⚠️ v2.3.14 以前版本请直接下载完整整合包

百度网盘:

百度网盘 请输入提取码 百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间 https://pan.baidu.com/s/1N-47gaAFE1Ewd4hrOQEu8A?pwd=yryv

提取码:yryv

在开始之前

为了避免在之后的使用中出现各种意料之外的问题,请务必对照下面的 Checklist 检查本机环境。

  • 关闭全局梯子 / 绕过局域网
  • 使用推荐的浏览器(✅Chrome / Edge / Firefox)
  • 关闭浏览器自带的网页翻译功能
  • 关闭所有第三方杀毒软件 / 安全卫士等
  • 将系统虚拟内存设置为至少 30G

⚠️ 部分浏览器(尤其是 Edge)会出现 WebUI 打开后无法正常工作的现象。如果遇到卡死/无法点击交互等现象,请尝试更换为上述推荐的其他浏览器。

启动 WebUI

本整合包的所有训练/推理流程均在浏览器交互界面(WebUI)中实现。

  1. 将整合包解压至硬盘内,请确保硬盘内至少还有 20GB 的剩余空间
  2. 双击整合包内启动webui.bat即可启动 WebUI,初次使用需要初始化,可能会等待较长时间,启动完成后将会使用默认浏览器自动弹出 WebUI 窗口。

推理

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

名称 文件后缀 存放目录 描述
So-VITS 模型 .pth .logs44k 推理所必须的神经网络模型
配置文件 .json .configs 存放模型参数的配置文件,必须与模型一一对应

除此之外,还有一些文件属于可选项,能够执行推理的扩展功能。即使缺失也可以正常执行推理:

名称 文件后缀 存放目录 描述
聚类 (Kmeans) 模型 .pt .logs44k 执行混合聚类方案必须的模型
扩散模型 .pt .logs44kdiffusion 执行浅扩散推理必须的模型
扩散模型配置文件 .yaml .configs 存放扩散模型参数的配置文件,必须与模型一一对应
特征索引模型 .pkl .logs44k 执行混合特征索引必须的模型

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

从外部迁移模型

⏩从外部转移模型时,只要将对应的文件放置到models文件夹下,然后在 WebUI 底部启用独立目录模式即可(详情参考多模型管理)。模型的文件名可以任意更改,但请保持后缀不变。聚类模型和扩散模型使用的是同一个后缀(.pt),请在重命名时显著区分这两种模型。

⚠️ ⚠️ 从云端下载模型时,请务必注意只有”G_”模型才是推理可用的模型。错误下载”D_”模型将无法正常推理。

加载模型

在推理过程中,模型会默认被加载到 CUDA 设备(显卡)或 CPU 上,取决于你当前可用的设备。按照以下步骤加载模型:

  1. 选择所使用的 So-VITS 模型,此时会自动读取模型所使用的编码器

⏩关于不同的编码器详解,请参考训练 – 编码器详解

  1. 选择该模型对应的配置文件,此时会自动读取配置文件中的编码器参数

⚠️ ⚠️ 配置文件与模型的编码器必须对应,否则无法正常推理 。旧版模型需要修改配置文件以兼容 4.1 版本,关于如何修改配置文件兼容,请参考 旧模型兼容 。

  1. 如需使用浅扩散、聚类模型、NSF-HifiGAN 声码器增强器,请自行选择
  2. 点击加载模型

⚠️ 浅扩散、聚类模型及声码器增强器需要在选中后再加载模型。如果已经有模型加载,选中选项后需要重新加载模型。

模型加载需要大约 10-30 秒,多说话人模型可以在 So-VITS 说话人列表中选择对应的说话人。

上传音频并转换

你需要首先上传一段输入源音频才能进行转换,优秀的输入源音频的要求是:

  • 纯人声,无伴奏、底噪、和声、混响等
  • WAV 格式,44100 hz,16 bit

⚠️ ⚠️ 上传的音频最好不要超过 6 分钟,否则有概率导致转换不成功。

⏩关于如何从歌曲中分离伴奏、去除混响和声,请参考训练 – 数据集处理 – 人声伴奏分离
⏩整合包中预装了 FFmpeg,因此即便不是 44100 hz, 16 bit 的 WAV 文件也可以上传。如果在推理时遇到 FFmpeg 相关的错误,请重启 WebUI 后再次尝试,或手动使用音频处理软件转换为正确的格式

一般来说,默认的参数对于转换歌曲足够使用。你也可以参考推理参数详解来了解各个推理可选项的参数说明。

训练

训练是指使用目标说话人的音声数据集令 AI 学习特征并生成神经网络模型。在训练之前,你需要准备:

  • 目标说话人的授权数据集(至少 30 分钟的纯人声 / 歌声,1-2 小时最佳)
  • 音频处理软件(Adobe Audition, UVR5)
  • 本整合包

⚠️ ⚠️ 训练过程的显卡负载非常高,且一般会持续数小时,在此期间建议不要使用计算机进行其他的任务。

数据集处理

人声伴奏分离

如果你使用的是带伴奏的歌曲作为数据集,那么请一定要将人声从伴奏中分离出来。分离伴奏和人声推荐使用 Ultimate Vocal Remover 5 (UVR5), 并下载对应的处理模型。一些推荐的处理模型和功能如下:

  • MDX-Net | MDX23C-InstVocal HQ: 分离人声及伴奏
  • VR Architecture | 5_HP-Karaoke-UVR: 分离和声
  • VR Architecture | UVR-DeEcho-DeReverb: 去除混响和回声

⏩上述所有模型均可在 UVR5 软件选择模型处 —— Download More Models 下载(可能需要科学上网)

⚠️ 需要注意的是,没有任何一种方法能够做到无损分离人声。当歌曲中的伴奏越复杂,分离后的人声失真越严重。较差的人声质量会显著影响模型训练的结果。

除了传统的 UVR5 工作流,你还可以试试来自字节跳动火山引擎的 SAMI 技术分离人声。在人声伴奏分离方面 SAMI 可能有比 UVR5 更好的效果;且可以通过 WebUI 请求远程服务器,无需本地硬件推理。

音频切片

数据集的音频需要切分成数秒至数十秒的片段。一般来说 3- 15 秒为佳。在 WebUI 里整合了一个智能音频切片工具,可以满足上述切片要求。

⚠️ ⚠️ 在切片之前,请将待切片的音频文件以纯数字、字母、下划线命名。

  1. 打开 WebUI – 小工具/实验室特性 – 智能音频切片
  2. 将包含所有待处理音频文件(.wav 格式)的文件夹路径输入到原始音频文件夹内
  3. 点击加载原始音频,确认音频被正确识别
  4. 输入切片后的输出目录,选择对过短音频的处理方式
  5. 开始处理

预处理

数据集预处理的流程是:

⚠️ 响度匹配 —— 重采样 —— 生成配置文件 —— 提取特征

⚠️ ⚠️ 注意:虽然 So-VITS 项目自带响度匹配脚本,但该脚本会将音频匹配到 0db, 这可能会造成音质的受损。最佳的做法是使用专业音频处理软件,如 Adobe Audition 自行对数据集进行响度匹配处理后再进入预处理流程。如果数据集已经完成了响度匹配或启用了响度嵌入,可以在预处理时跳过程序自带的响度匹配流程。

上述所有流程在 WebUI 中均可一键完成:

  1. 将上一步切片完成的数据集文件夹放置到整合包根目录下dataset_raw文件夹内

⚠️ ⚠️ 请注意文件结构: dataset_raw/speaker_name/*.wav

  1. 在 WebUI 训练选项卡中,点击识别数据集,确认数据集被正确识别
  2. 根据说明自行选择训练使用的编码器和 f0 预测器

编码器详解

编码器名称 优点 缺点
vec256l9 – 不支持扩散模型
vec768l12(推荐) 最还原音色、有大型底模、支持响度嵌入 咬字能力较弱
hubertsoft 咬字能力较强 音色泄露
whisper-ppg 咬字最强 音色泄露、显存占用高

更多的编码器选项,请参考 训练参数详解 – 关于特征编码器

🦻音色泄露指的是输出的音色向底模/推理输入源的原始音色接近,模型说话人越多,音色泄露越严重。考虑到大多数人都希望尽可能还原目标说话人的音色,因此音色泄露被认为是一种不受欢迎的结果。

  1. 如要训练扩散模型或启用响度嵌入,请自行勾选

⚠️ 勾选训练扩散后将会提取扩散模型所需的特征文件,会占用更多硬盘空间。有关扩散模型的详细说明,请参考 训练参数详解 。

⚠️ ⚠️ 启用响度嵌入需要选择 Vec768L12 编码器,其它编码器没有响度嵌入的底模。

  1. 点击数据预处理

数据预处理的输出信息中可能存在报错信息。如果出现报错,则代表数据预处理未完成。你可以参考常见报错和解决方案自行排障。

⚠️ ⚠️ 数据预处理可以多进程执行,但会显著占用显存和内存。建议 6G 以下显存不要开启多线程。12G 以下显存不要将线程数设置为 2 以上。

⚠️ ⚠️ 同一个数据集只需要预处理一次,往后继续训练不需要也不可以重新预处理!

最佳实践

如果你是初次接触,面对眼花缭乱的可选项,不知道该如何设置预处理参数,这里为你提供了一些不同使用场景下的最佳实践:

用于翻唱(非实时转换):

编码器 f0 预测器 响度嵌入 跳过响度匹配 TINY 浅扩散
vec768l12 rmvpe √ √ × √

用于朗读 / 说话(非实时转换):

编码器 f0 预测器 响度嵌入 跳过响度匹配 TINY 浅扩散
hubertsoft /
whisper-ppg(8G以上显存)
rmvpe √ √ × √

训练参数设置和开始训练

请参考 WebUI 中的说明自行设置参数并开始训练。有关训练参数和聚类模型的更多说明,请参考训练参数详解。

训练过程中会根据你之前设置的保存步数(默认为 800 步)保存一次模型。

请严格区分轮数 (Epoch) 和步数 (Step):1 个 Epoch 代表训练集中的所有样本都参与了一次学习,1 Step 代表进行了一步学习,由于 batch size 的存在,每步学习可以含有数条样本,因此,Epoch 和 Step 的换算如下:

Epoch=(数据集条数÷batch_size)Step​

训练默认 10000 轮后结束,但正常训练通常只需要数百轮即可有较好的效果。当你觉得训练差不多完成了,可以在训练终端按 Ctrl + C 中断训练。中断后只要没有重新预处理训练集,就可以在 WebUI 中继续上一次保存的训练进度。

模型怎样才算训练好了?

这是一个非常无聊且没有意义的问题。就好比上来就问老师我家孩子怎么才能学习好,除了你自己,没有人能回答这个问题。

模型的训练关联于你的数据集质量、时长,所选的编码器、f0 算法,甚至一些超自然的玄学因素;即便你有一个成品模型,最终的转换效果也要取决于你的输入源以及推理参数。这不是一个线性的的过程,之间的变量实在是太多,所以你非得问“为什么我的模型出来不像啊”、“模型怎样才算训练好了”这样的问题,我只能说 WHO F**KING KNOWS?

但也不是一点办法没有,只能烧香拜佛了。我不否认烧香拜佛当然是一个有效的手段,但你也可以借助一些科学的工具,例如 Tensorboard 等,下一段就将教你怎么通过看 Tensorboard 来辅助了解训练状态,当然,最强的辅助工具其实长在你自己身上,一个声学模型怎样才算训练好了?塞上耳机,让你的耳朵告诉你吧。

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分钟甚至更小),在加载底模的情况下,不建议训练过久,这样是为了尽可能利用底模的优势。数千步甚至数百步就能有最好的结果。

⚠️ ⚠️ Tensorboard 中的试听音频是根据你的验证集生成的,无法代表模型最终的表现。

说明:本站不提供文中所述整合包及现成翻唱模型的下载;如果你想要训练属于自己的音色模型(变声 / 翻唱均可),本站提供模型定制训练服务,可先查阅本站训练相关教程,或在会员群内咨询下单。

AI 翻唱系列教程导航

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容