news 2026/9/3 10:40:41

10 分钟语音数据训练 RVC 变声模型:从装环境到跑通实时推理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
10 分钟语音数据训练 RVC 变声模型:从装环境到跑通实时推理

10 分钟语音数据训练 RVC 变声模型:从装环境到跑通实时推理

【免费下载链接】Retrieval-based-Voice-Conversion-WebUIEasily train a good VC model with voice data <= 10 mins!项目地址: https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-WebUI

先给你看个结果

一段不到 10 分钟的干声,喂给 RVC(Retrieval-based-Voice-Conversion-WebUI,一个基于 VITS 的开源 AI 变声与音色克隆框架),就能得到一个可以直接上实时推理的音色模型。不用棚录、不用小时级数据集,装好环境、拉下预训练权重、跑一次infer-web.py,整条链路就可以走通。这篇文章带你完成"装环境 → 拉模型 → 跑通推理"的最小路径,再把背后的原理和可调参数的杠杆讲清楚。

能力清单:RVC 能替你做哪些事

能力你实际得到的东西
音色克隆10 分钟以内语料即可训出目标音色,保留韵律与情感表达
实时变声端到端约 170ms 延迟;换用 ASIO 声卡可压到 90ms 左右
批量转换命令行一次性处理整目录音频,适合离线生产
人声分离内置 UVR5 模型,从伴奏里拆出干声,作为训练料
多语言界面i18n 语言包覆盖中、英、日、韩等 12 种语言
ONNX 部署模型可导出为 onnx,脱离 PyTorch 运行时
检索式音色控制索引文件 + 检索混合度,在"相似度"和"自然度"之间找平衡

一句话:克隆、实时、批量、部署四件事它都覆盖,且全部开源免费。

上手三连:装环境、拉模型、跑第一次推理

装环境

NVIDIA 显卡(主线方案):

git clone https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-WebUI cd Retrieval-based-Voice-Conversion-WebUI pip install torch torchvision torchaudio pip install -r requirements.txt

AMD / Intel 核显(DirectML 路线):

pip install -r requirements-dml.txt

macOS:仓库自带脚本会自动建虚拟环境、装依赖并拉模型:

sh ./run.sh

拉模型

RVC 依赖一批预训练权重(hubert 特征提取器、rmvpe 基频提取器、各采样率的 v1/v2 底模、UVR5 人声分离模型)。不用手动找文件,一条命令下到正确目录:

python tools/download_models.py

逻辑见 tools/download_models.py,它会把 32k/40k/48k 三档采样率的 G/D 权重分别放进assets/pretrainedassets/pretrained_v2

跑通第一次推理

Web 界面是最短路径,启动后浏览器访问http://localhost:7865

python infer-web.py

在界面里选一个底模、选一条音频、指定 F0 提取算法(默认 harvest),点推理即可出结果。纯命令行用户可以直接用 tools/infer_cli.py,参数有输入路径、模型名、F0 方法、检索混合度等。

它是怎么做到的

RVC 的生成端是 VITS 架构:输入语音先过内容编码器,再结合基频(F0)信息,由合成网络生成波形。整个管线是:

源音频 → 特征提取(hubert)→ 检索匹配(top1)→ F0 提取(rmvpe/harvest)→ VITS 合成 → 输出

关键在第二步的top1 检索:训练时会为训练集构建声学特征索引;推理时,源音频对应的每一段特征都会去索引里检索,并用最接近的那一条(top1)替换掉原始特征,再交给 VITS 合成。因为输入模型的特征已经被"洗"成训练集里的内容,源说话人的音色痕迹在入口处就被切断了——这就是它叫"检索式"变声的原因,也是音色泄漏少的主要来源。

训练侧同样受益:模型只见过目标音色的特征分布,学习压力小,所以 10 分钟量级的数据就够用。

把效果调好的几个杠杆

想让音色更像本人 → 把数据做干净

  • 时长凑够 10 分钟,尽量同一设备、同一录音环境录;
  • 覆盖不同语速、音调、情绪,避免清一色平淡叙述;
  • 混响、底噪、背景人声是头号杀手,必要时先过一遍 UVR5 分离再切段。

想让音质和训练速度平衡 → 动训练参数

训练超参数集中在 configs/config.py,配套的采样率档位配置在 configs/ 下(v1/v2 各有 32k、40k、48k 的 json)。常见做法:显存紧张就降 batch size;想要更干净的高频就上 48k 底模;训练轮数不必一次拉满,先跑几十轮听一版再决定加不加。

想微调"像不像 vs 自然度" → 用检索混合度

推理时的index_rate控制检索特征的混入比例:调高更贴目标音色但可能发闷,调低更自然但音色漂移。索引本身可以用 tools/infer/train-index.py(v1)或 tools/infer/train-index-v2.py(v2)重新训练,把不同来源的特征融合进同一个索引,做出混合音色。

想让实时更跟手 → 换声卡接口

默认走系统音频,端到端约 170ms;Windows 上换 ASIO 设备能压到 90ms 量级。实时入口在 go-realtime-gui.bat(DirectML 用户用go-realtime-gui-dml.bat),底层是 gui_v1.py。

想让训练料更纯 → 人声分离前置

tools/ 下的应用与 infer/modules/uvr5/ 里的 UVR5 模块配合,可以先把原曲拆成人声 + 伴奏,拿干声去做切片和训练。

绕不开的坑

坑一:训练特别慢,显卡吃不满。现象是利用率忽高忽低。先自查 CUDA / cuDNN 与 PyTorch 版本是否匹配;仍不行就把 batch size 调小,或打开混合精度(配置里is_half)。仓库还带了 tools/torchgate/ 用于在不同后端间切换,可用来验证是框架层还是数据层的问题。

坑二:出来的声音发闷、有电音。多半是数据问题而非模型问题。自查顺序:听训练集里最差的一段 → 确认有无声纹残留(底噪、混响)→ 换一个底模或 F0 提取算法(harvest / rmvpe)再跑一版。

坑三:显存爆掉。现象是 OOM 后进程被杀。处理:降 batch size、用 32k 档采样率(显存占用低于 48k)、必要时上梯度累积。数据切片别切太长,3~8 秒一段比较稳。

把能力接进你自己的项目

RVC 不只是个 Web 工具,它留了三个"出口":

  • ONNX 部署:tools/export_onnx.py 把训好的模型导出为 onnx(fp32,输入 phone/pitch/ds 等张量),tools/onnx_inference_demo.py 展示脱离 PyTorch 的推理写法,模型结构见 infer/lib/infer_pack/models_onnx.py。适合嵌进 C++ 客户端或移动端。
  • 批量推理 CLI:tools/infer_cli.py 和 tools/infer_batch_rvc.py 支持整目录批处理,参数(F0 方法、检索混合度、保护阈值等)都能从命令行传,适合写进 CI 或生产脚本。
  • 多语言界面:界面文案全部走 i18n/ 下的语言包(zh_CN、en_US、ja_JP、ko_KR 等 12 种),你要给团队做多语言客户端,可以直接复用这套文案结构。

对外 HTTP 服务另有 api_240604.py 这样的接口脚本可参考。

代码地图

Retrieval-based-Voice-Conversion-WebUI/ ├── infer/ # 核心:训练 + 推理 │ ├── lib/infer_pack/ # 推理模型与组件(VITS 模块、F0 预测器、ONNX 结构) │ ├── lib/jit/ # hubert / rmvpe / synthesizer 的 JIT 封装 │ ├── modules/train/ # 训练主流程、F0 与特征提取 │ ├── modules/vc/ # 推理管线与工具函数 │ └── modules/uvr5/ # 人声分离 ├── configs/ # config.py + v1/v2 各采样率 json ├── tools/ # 下载、导出、CLI 推理、索引训练等脚本 ├── i18n/ # 12 种语言语言包 ├── assets/ # 权重落盘目录(pretrained / pretrained_v2 / hubert ...) └── docs/ # 多语言文档(含 faiss 检索、训练技巧)

按用途速查:

想找什么去哪
模型超参数configs/config.py
推理核心模型infer/lib/infer_pack/
训练入口infer/modules/train/train.py
实时变声 GUIgo-realtime-gui.bat / gui_v1.py
Web 入口infer-web.py
训练技巧文档docs/en/training_tips_en.md

说明:本文基于只读仓库撰写,未对任何文件做修改。

下一步

方向很清晰:先把 10 分钟数据训出第一版模型听个大概,再用检索混合度和索引迭代去逼近想要的音色,最后按场景选择 Web、CLI 批量或 ONNX 嵌入。现在就做一件事——按上面的命令克隆仓库、装依赖、跑python tools/download_models.py,半小时内你就能听到自己合成的第一条声音。

【免费下载链接】Retrieval-based-Voice-Conversion-WebUIEasily train a good VC model with voice data <= 10 mins!项目地址: https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-WebUI

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 10:36:49

PES2021完整安装指南:从游戏本体到巨星存档一站式解决方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/3 10:36:08

如何把手游键位完整搬上键鼠?QtScrcpy 键鼠映射配置实战笔记

如何把手游键位完整搬上键鼠&#xff1f;QtScrcpy 键鼠映射配置实战笔记 【免费下载链接】QtScrcpy Android real-time display control software 项目地址: https://gitcode.com/GitHub_Trending/qt/QtScrcpy QtScrcpy 是一款安卓实时投屏与控制工具&#xff0c;通过 U…

作者头像 李华
网站建设 2026/9/3 10:32:00

基于STM32与OpenMV的智能网球捡球小车:嵌入式视觉与无线控制实战

简介&#xff1a;这是一套面向计算机科学、电子信息工程及自动化专业本科生的智能系统综合实践资源&#xff0c;适用于课程设计、期末大作业或毕业设计选题&#xff0c;解决网球运动场景中自动识别与拾取网球的实际问题。资源包共1254个文件&#xff0c;涵盖562个C源码、245个头…

作者头像 李华
网站建设 2026/9/3 10:28:56

MAS 微软激活脚本:Windows 与 Office 免费激活完整指南

MAS 微软激活脚本&#xff1a;Windows 与 Office 免费激活完整指南 【免费下载链接】Microsoft-Activation-Scripts Open-source Windows and Office activator featuring HWID, Ohook, TSforge, and Online KMS activation methods, along with advanced troubleshooting. 项…

作者头像 李华
网站建设 2026/9/3 10:28:35

C语言按位与运算符:从掩码判断到工程避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华