RVC Next

训练

训练 页面用你自己的录音训练新音色。每次训练是一个实验:一个独立的文件夹,里面保存数据集设置、各阶段的中间结果、检查点和训练曲线。训练完成后,可以直接试听某个检查点,满意后一键导出到音色库。

和原版 RVC 相比,rvc-next 把“处理数据 → 提取音高 → 提取特征 → 训练 → 建索引”这些步骤合并成一个流程:全部运行 只会运行还没完成、或输入已经改变的阶段。

实验列表

打开左侧导航的 训练,可以看到所有实验的卡片。每张卡片显示:

  • 实验名称,正在运行时带 运行中 标签;
  • 采样率 · 模型版本 · 单说话人 或 多说话人;
  • 五个阶段的状态标签:切片、音高、特征、训练、索引(完成为主色,已过期 为警示色,失败 为红色);
  • 最近活动 …。

点击卡片进入实验页面。实验保存在数据文件夹的 experiments/ 下(可在 设置 › 存储 › 实验 中更改)。直接复制到这个文件夹里的实验文件夹(含 experiment.json,或原版的 0_gt_wavs 文件夹)也会自动出现在列表中。

新建实验

  1. 点 新建实验。
  2. 填写 实验名称。
  3. 选择 单说话人 或 多说话人。单说话人时可以直接填 数据集文件夹,或点 浏览… 在服务器上选择文件夹(多说话人的表格在实验页面里填写)。
  4. 点 添加,进入新实验的页面。

新实验的采样率、版本、音高引导、轮数等初始值来自 设置 › 训练默认值。

浏览服务器文件夹

浏览… 只有在服务器本机打开网页,或服务器设置了访问令牌时才可用。否则请直接把服务器上的路径粘贴进输入框。

导入原版 RVC 实验

如果你在原版 RVC 里已经训练过(实验在原版的 logs/<名称> 下),可以把它导入继续使用:

  1. 点 导入实验。
  2. 在 原版实验文件夹(logs/<名称>) 中填入路径,可选填一个新的 实验名称(默认用文件夹名)。
  3. 点 导入。

rvc-next 会把整个文件夹复制到实验目录(原文件夹不会被改动),并根据其中的内容推断采样率、版本、音高引导和已完成的阶段。文件夹里必须有 0_gt_wavs 文件夹或 config.json,否则会提示它不像一个 RVC 实验。导入的实验没有记录原始数据集文件夹;如果要重新切片,先在 数据集 步骤里填上。

实验页面

实验页面顶部显示实验名称、采样率 · 版本 · 文件夹路径,右侧有 删除 按钮(实验运行时不可用;删除的实验会被移到数据文件夹的回收站 trash/)。

下面是四个步骤:数据集、设置、运行、结果。实验运行时,步骤条下方会显示整体进度条,运行 步骤上标注当前阶段。

第 1 步:数据集

  1. 选择 单说话人。
  2. 在 数据集文件夹 中填写路径,或点 浏览… 选择。
  3. 点 保存。

只会读取该文件夹顶层的音频文件,不会进入子文件夹。

从这台电脑添加音频:把音频文件或它们的 zip 拖到拖放区(或点击它),会上传到实验自己的 dataset_upload/ 文件夹,数据集随即指向那里;从另一台电脑访问服务器时也就不需要服务器上的文件夹。多个说话人 时请上传一个 zip,其顶层文件夹按 名称_ID_重复次数 命名(同上):它们会成为说话人表。上传会添加到已有的文件中;删除已上传的音频 会清空该文件夹。zip 中的非音频文件、隐藏文件和 __MACOSX 会被跳过。

先清理数据集:可以选择一个分离预设,在切片之前先对整个数据集做一遍人声分离(例如去掉伴奏或混响),结果存放在实验的 dataset_clean/ 中,原始文件不变。默认 不清理。预设与 分离 页面相同,所需的分离模型需要先下载。

切片(点击展开)决定录音如何被切成训练片段。默认值与原版相同;这些选项来自 Applio:

设置选项(默认)说明
切分方式先按静音切开,再切成片段(默认)/ 直接按长度切成片段 / 保持原样(已切好)原版先找出静音,再把静音之间的声音切成片段。直接按长度切会把静音也留在片段里。保持原样适合你自己切好的数据集;比片段长度长 5 秒以上的文件仍会被切开,否则训练会把它丢掉
片段长度(秒)0.5 ~ 10;留空:有 GPU 时 3.7 秒,没有时 3.0 秒每个片段的长度
片段之间的重叠0 ~ 0.4 秒(0.3)相邻片段共用的长度
响度逐片段统一(默认)/ 逐文件统一 / 保持录音原样原版把每个片段调到相同的峰值;逐文件保留同一段录音内部的响度差异;保持原样不改变电平
降噪0 ~ 1(0)在切分之前对每段录音做噪声门处理,用于嘈杂的录音;用 先清理数据集 做分离可以去掉更多(音乐、混响)
去除低频隆隆声(48 Hz 高通)开 / 关(开)原版始终滤波;只有录音已经滤波过时才关闭

修改这些设置会把 切片 及之后的阶段标为已过时。

检查数据集:点这个按钮会扫描数据集并生成报告:

  • N 个片段、共 时长;
  • 各 采样率 的文件数量;多说话人时还列出每个说话人的片段数;
  • 问题 列表(没有问题时显示 未发现问题):
问题判定标准
过短短于 1 秒
过长长于 30 分钟
削波超过 0.1% 的采样点达到满幅
静音峰值低于 −50 dBFS
无法读取文件无法解码

检查的是已保存的数据集

检查数据集 读取的是已经保存的设置,改完文件夹后请先点 保存 再检查。

第 2 步:设置

设置选项说明
采样率32k / 40k / 48k训练和导出音色的采样率
模型版本v1 / v2v2 使用 768 维特征,推荐;v1 为 256 维
内容特征ContentVec(RVC,默认)/ SPIN / SPIN v2 / 中文、日文、韩文 HuBERT读取“说了什么”的模型。其余来自 Applio:SPIN 在特征中保留更少说话人自身的音色,各语言的 HuBERT 适合对应语言。除 ContentVec 和 SPIN 外只能用于 v2。音色会记录所选模型,转换时使用同一个;第一次使用时下载(约 380 MB)
音高算法RMVPE(最佳)/ pm(快速)/ FCPE / CREPE / CREPE tiny / SwiftF0提取训练数据音高的方法;关闭音高引导时不可用。新实验的默认值:有可用的 CUDA GPU 时为 RMVPE,否则为 pm。原版训练只提供 pm 和 RMVPE;其余算法与转换中的同名算法相同(见音高算法)
轮数≥ 1总训练轮数(epoch)
批大小≥ 1,留空为 自动自动时按最小一张显卡的显存(GiB)÷ 2 取整,与原版一致;没有显卡时为 1。这是每张显卡的数量:用两张显卡时每张一次训练这么多段(原版给每张显卡的是这个数乘以显卡数)
每 N 轮保存≥ 1每隔多少轮保存一次检查点
GPUauto、cpu 或 0-1 这样的显卡编号训练使用的显卡,保存在实验中;新实验取设置中的默认值 training.gpus。auto 使用所有可用的 CUDA 显卡,cpu 只用 CPU
音高引导开 / 关关闭后训练出的音色没有音高引导(适合说话而非唱歌),会跳过 音高 阶段
将数据集缓存到显存开 / 关把训练数据整个放进显存,数据集较小、显存充足时可以加快训练
每个保存点都保存音色开 / 关每次保存检查点时,同时在 weights/ 中保存一个可直接使用的小模型,方便比较不同轮数的效果
只保留最新的检查点开 / 关只保留一对 G/D 检查点(文件名为 G_2333333.pth/D_2333333.pth,与原版相同),节省磁盘
每次保存时渲染一段样例开(默认)/ 关每次保存时,用当时的音色渲染一段训练片段(最长的切片)到 previews/;结果 › 样例 中列出

高级 中:

设置选项说明
精度自动 / 全精度(fp32)/ bf16自动:所选显卡都支持时用半精度(fp16,带损失缩放)训练,与原版一致;bf16 不需要损失缩放,适合较新的 NVIDIA(RTX 30 系列及以后)、AMD 和 Intel 显卡(不支持 bf16 时退回 fp32,并在日志中说明);fp32 最慢也最精确
TF32 运算开 / 关让 RTX 30 系列及以后的 NVIDIA 显卡用 TF32 做全精度矩阵运算:更快,精确度略低
节省显存(梯度检查点)开 / 关在反向传播时重新计算生成器的上采样和残差块以及每个判别器,而不是保存它们的激活值:适合显存较小的显卡,代价是每步更慢
新的说话人向量开 / 关实验中的每个说话人从新的随机向量(大小与底模的相同)开始,而不是底模自己的向量;所有官方底模里说话人 0 和 1 的向量相同,所以多说话人音色的两个说话人起点一样。来自 Applio

fp16 的损失缩放值会和检查点一起保存,继续训练时从它接着走,而不是重新开始。训练出的音色会记录轮数、步数和日期,设置了 设置 › 训练 › 作者 时还有作者;音色详情页的 信息 中可以看到。

底模:训练从底模开始。

  • 默认项 根据采样率、版本和音高引导选择 使用对应的官方底模。
  • 你在 模型 › 底模 中导入的底模也会列在这里,但 只列出采样率、版本和音高引导都匹配的底模。没有判别器(D)的底模会标注 无 D。改变采样率、版本或音高引导后,如果已选的底模不再匹配,会自动回到默认项。

设置完成后点 保存。如果所需的文件还没下载(官方底模、HuBERT、使用 RMVPE 时的 RMVPE 模型),保存 按钮的位置会显示 需要 … 和 下载(大小),下载完成后才能保存。

改了设置,哪些阶段要重跑?

每个阶段完成时都会记录它的输入“指纹”。保存修改后,受影响的已完成阶段会被标为 已过期,并提示 此阶段运行后输入已改变。

全部运行 时还会重新计算每个已完成阶段的指纹:即使没有在页面上改设置,只要直接往数据集文件夹里加入、删除或替换了录音,切片及其后的阶段也会在这次运行中全部重做。只增加 训练轮数 时,只继续训练,不会重做前面的阶段。

修改内容从哪个阶段开始过期
数据集文件夹或说话人表格切片
清理预设清理
采样率、切片切片
音高引导、音高算法音高
模型版本特征
轮数、批大小等训练参数不会过期(轮数增加时,全部运行 会继续训练)

另外,重新运行某个阶段后,它后面已完成的阶段也会变成 已过期。

第 3 步:运行

运行 步骤列出所有阶段的卡片:

阶段做什么何时运行
清理用所选分离预设清理数据集只有选了清理预设时才适用
切片按静音切分音频、重采样,生成训练用的片段总是
音高用 pm 或 RMVPE 提取每个片段的音高只在开启音高引导时
特征用 HuBERT 提取内容特征总是
训练训练生成器和判别器,按设置保存检查点总是
索引用特征构建检索索引(added_*.index)总是

每张卡片显示状态(未运行、运行中、完成、已过期、失败、已跳过)、处理数量和完成时间,失败时显示错误信息。

  • 全部运行:只运行还没完成、已过期或失败的阶段;如果 训练 已完成但你增加了 轮数,也会继续训练到新的轮数。所有阶段都已完成且输入未变时,会提示没有需要运行的阶段。
  • 单个阶段:点卡片上的 运行此阶段;已完成的阶段显示为 重新运行,会强制重新执行。
  • 停止:运行中出现,会取消当前任务。被取消的阶段回到 未运行,已完成的阶段保留。

训练会从最新的检查点继续

训练 阶段开始时,如果实验文件夹里已有 G/D 检查点,会从最新的一对继续训练,而不是从头开始。想完全重新训练,请新建一个实验。

运行时,运行 步骤中会显示任务卡片,步骤条下方显示进度条;同一个任务也出现在顶栏的 任务 面板中,可以查看日志。训练作为 GPU 任务排队:如果实时变声正在使用 GPU,任务会显示 等待 GPU,可以点 仍然运行(可能导致实时声音卡顿)。

第 4 步:结果

损失 图表显示训练过程中的损失曲线(横轴为 step):总损失 g_total、d_total 排在前面,之后是 mel、kl、fm、gen 等分项。训练进行中曲线会实时更新。下方的 梯度范数 显示 grad_g 和 grad_d,即每一步生成器和判别器梯度的大小:训练出问题之前常常会先突然跳高。

样例(开启 每次保存时渲染一段样例 时)列出每次保存时音色渲染的同一段训练片段,按轮数标注;A/B 播放原片段,你可以听到音色逐渐接近它,也能听出更多轮数何时不再有帮助。

检查点 列表显示实验中的 G 检查点和小模型(weights/ 中的 .pth),每项带类型标签、轮数和文件大小:

  • 试听:把这一项作为临时音色(带上实验的索引)交给 转换 页面,你可以立刻用它转换一段音频听效果。临时音色不会出现在音色库里。G 检查点会先自动提取成小模型(保存在实验的 .try/ 文件夹中,同一检查点只提取一次)。
  • 导出为音色:导出这一项到音色库。

列表右上角的 导出为音色 按钮会导出最新的结果(优先最新的小模型,没有时用最新的 G 检查点)。

导出到音色库

  1. 点 导出为音色(列表顶部,或某个检查点旁边)。
  2. 在 音色名称 中填写名称,默认是实验名。
  3. 点 导出。完成后会提示 已导出为音色。

导出时:

  • 如果选的是 G 检查点,会先从中提取出小模型;
  • 实验中的索引(added_*.index)会一起附加到新音色;
  • 多说话人实验会把说话人名称写进模型。

导出的音色出现在 模型 › 音色 中,可以在 转换、实时 等页面使用。

推荐流程

  1. 准备 10 分钟以上、干净无伴奏的录音,放在一个文件夹里。
  2. 新建实验,选好数据集文件夹,检查数据集,处理掉 削波、静音 等问题文件。
  3. 在 设置 中确认采样率(一般 40k 即可)、版本 v2、音高引导开启(唱歌必须开启)。
  4. 下载提示的底模和模型,保存。
  5. 在 运行 中点 全部运行,在 结果 里观察损失曲线。
  6. 开启 每个保存点都保存音色 后,可以对不同轮数的小模型逐个 试听,挑效果最好的 导出为音色。
  7. 效果不够时,增大 轮数 再 全部运行,训练会从上次的检查点继续。

命令行

训练也可以完全在命令行中完成,结果和网页里看到的是同一批实验:

rvc-next train new 我的音色 --dataset D:/data/me --sr 40k --version v2
rvc-next train dataset scan 我的音色      # 检查数据集
rvc-next train run 我的音色 --epochs 200  # 全部运行
rvc-next train run 我的音色 --stage index --force   # 只重跑索引
rvc-next train status 我的音色
rvc-next train export 我的音色 --voice-name 我的音色
rvc-next train import D:/RVC/logs/old --name old      # 导入原版实验

更多选项见 命令参考。

本页目录