Loading...

文章背景图

RVC-WebUI:基于检索的语音音色转换(AI 变声器)部署与训练指南

2026-08-04
0
- 字
- 分钟
|

RVC-WebUI:基于检索的语音音色转换(AI 变声器)部署与训练指南

Retrieval-based-Voice-Conversion-WebUI(简称 RVC-WebUI)是一个简单易用的语音音色转换与变声器框架,开源协议 MIT。它的核心思路是「基于检索」:训练时把目标说话人的语音特征建库,推理时从输入语音里提取特征,再用 top1 检索从训练集特征中替换输入特征,从而杜绝音色泄漏——也就是转换后的声音不会带着原说话人的尾音。底模使用接近 50 小时的开源高质量 VCTK 数据集训练,无版权顾虑;官方预告 RVCv3 底模参数更大、数据更多、效果更好,推理速度基本持平,且需要的训练数据量更少。

之所以叫「检索式」(Retrieval-based),是因为它在 VITS 类语音合成器之外,额外维护了一个目标说话人的特征索引(.index 文件)。推理时先把输入语音编码成内容特征,再到索引里检索最接近的训练样本特征做替换,让输出特征分布更贴近目标说话人;这也是它附带 .index 文件、而不是只要 .pth 的原因——两者配合才能既保内容又保音色。索引文件越大、覆盖越全,转换时音色越稳定。

所谓音色转换(Voice Conversion),就是保留说话内容与音高(旋律)不变,只把「声音是谁的」换成另一个人——比如把自己的歌声换成歌手音色、把会议录音换成清晰播音腔、做实时变声器。RVC-WebUI 把这套流程做成了带网页界面的工具:准备十来分钟目标说话人的录音,在界面里预处理、训练,几分钟到几小时就能得到一个专属音色模型,之后既可以离线把一段音频转成目标音色,也能在实时界面里对着麦克风即时变声。典型用途包括 AI 歌手翻唱、有声书多角色配音、直播实时变声、视频配音换声等。由于底模基于无版权的 VCTK 训练,个人学习与非商用场景可放心使用,商用前仍建议确认目标说话人音色的授权。

一、项目官方信息

项目 信息
GitHub 仓库 RVC-Project/Retrieval-based-Voice-Conversion-WebUI
模型仓库 Hugging Face lj1995/VoiceConversionWebUI
开源协议 MIT
运行界面 Gradio WebUI,默认端口 7865
在线演示 ModelScope RVCv2demo
教程 AutoDL 训练 AI 歌手教程
演示视频 Bilibili BV1pm4y1z7Gm

二、官方图片

RVC-WebUI 项目官方配图:

RVC-WebUI 项目配图

三、核心特性

本仓库具有以下特点:

  • top1 检索替换特征:用检索替换输入源特征为训练集特征,从根源杜绝音色泄漏,转换结果更干净。传统音色转换模型常会把原说话人的音色混进结果里,RVC 通过检索机制让输出特征严格取自训练集,听起来更像目标说话人本人。
  • 低显卡也能训练:即便在相对较差的显卡上也能快速训练,不追求高端 GPU。
  • 小数据量即可出效果:推荐至少收集 10 分钟低底噪语音数据,少量数据训练也能得到较好结果,个人用户用手机录一段干净人声即可起步。
  • 模型融合改变音色:借助 ckpt 处理选项卡中的 ckpt-merge,可以把多个模型按权重融合出中间音色,比如在两个角色之间取折中。
  • 简单易用的网页界面:go-webui.bat 一键启动训练推理界面,go-realtime_gui.bat 一键启动实时变声界面,所有操作都在浏览器里完成,不用敲命令行。
  • 人声伴奏分离:可调用 pymss / MSST 模型快速分离人声与伴奏,处理歌曲时先把人声抽出来再转音色。
  • RMVPE 音高提取:采用 InterSpeech 2023 最先进的人声音高提取算法 RMVPE,杜绝哑音问题,速度快、资源占用小。
  • 多硬件兼容:A 卡 / I 卡走 CPU 依赖方案;Windows 可用 DirectML,Linux 用 CPU。

实时变声方面,官方已实现端到端 170 ms 延迟;若使用 ASIO 输入输出设备,端到端延迟可低至 90 ms,但非常依赖硬件驱动支持。这个延迟量级意味着可以直接对着麦克风说话、耳机里实时听到变成目标音色的声音,而不会有明显的「说完半秒才听到」的滞后,因此可用于直播连麦、语音聊天等场景。

四、环境要求

本分支面向 Python 3.12 x64,请先进入仓库根目录;Ubuntu 推荐使用 Ubuntu 24.04 x86_64。需要 ffmpeg、libsndfile、portaudio 等系统依赖。硬件方面,NVIDIA 显卡分 RTX 50 系(CUDA 12.8)与更早显卡(CUDA 11.8)两套依赖;没有 N 卡的用户用 CPU 依赖方案即可,Windows 上 AMD/Intel 还可走 DirectML 获得一定加速。实时变声对声卡与驱动敏感,ASIO 输入输出设备能把端到端延迟压到 90 ms。

五、部署步骤

部署分三步:先建 Python 3.12 虚拟环境,再按自己的显卡装对应依赖(CUDA 11.8 / 12.8 / CPU 三选一),最后从 Hugging Face 下载预训练底模与特征模型放到 assets 目录。WebUI 首次启动会自动创建运行目录,无需手动建文件夹。整个过程的关键是「两阶段安装」:有 N 卡的用户必须先单独装好对应 CUDA 版本的 PyTorch,再装项目依赖文件,否则 pip 会装错版本的 Torch。

Ubuntu 24.04

先装系统依赖(Python 3.12、ffmpeg、libsndfile、portaudio 等),再建 venv 并升级 pip:

sudo apt update
sudo apt install -y python3.12 python3.12-venv python3.12-dev ffmpeg unzip libsndfile1 libportaudio2

python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip setuptools wheel

Windows

安装 Python 3.12 x64 后创建虚拟环境:

py -3.12 -m venv .venv
.venv\Scripts\activate
python -m pip install --upgrade pip setuptools wheel

按硬件选择依赖

硬件 安装方式
CPU、AMD、Intel 使用 requirments_cpu_py312.txt;Windows 可使用 DirectML,Linux 使用 CPU
NVIDIA RTX 50 系 先安装 CUDA 12.8 版 Torch,再安装 requirments_cu128_py312.txt
NVIDIA RTX 50 系以前 先安装 CUDA 11.8 版 Torch,再安装 requirments_cu118_py312.txt

CPU、AMD、Intel 直接装:

python -m pip install -r requirments_cpu_py312.txt

NVIDIA RTX 50 系需两阶段安装(先装 cu128 版 Torch):

python -m pip install torch==2.7.1+cu128 torchaudio==2.7.1+cu128 \
  --index-url https://download.pytorch.org/whl/cu128 \
  --extra-index-url https://pypi.org/simple
python -m pip install -r requirments_cu128_py312.txt

RTX 50 系以前用 cu118,同样两阶段:

python -m pip install torch==2.7.1+cu118 torchaudio==2.7.1+cu118 \
  --index-url https://download.pytorch.org/whl/cu118 \
  --extra-index-url https://pypi.org/simple
python -m pip install -r requirments_cu118_py312.txt

装完后检查 Torch 与 CUDA 状态:

python -c "import torch; print('torch:', torch.__version__); print('cuda:', torch.version.cuda); print('cuda available:', torch.cuda.is_available())"

修改下载源

三个 requirments_*.txt 顶部已包含下载源。中国大陆用户可保留默认镜像(北大、南大镜像);需要官方源时,只替换 --index-url 和 --extra-index-url,保留包版本、CUDA 后缀和两阶段安装顺序。常见组合是:默认镜像用 mirrors.pku.edu.cn/pypi/simple 与 mirrors.nju.edu.cn/pytorch/whl/cu118 等,官方源对应 pypi.org/simple 与 download.pytorch.org/whl/cu118。

下载模型

模型从 Hugging Face 模型仓库 下载并保持目录结构。目录结构不能乱:代码按固定相对路径找 hubert、rmvpe、pretrained 等文件,放错位置会报「模型不存在」。先用 hf download 命令按需拉取,只推理不下训练底模也行,但训练必须要 pretrained/pretrained_v2 与 mute.zip:

python -m pip install --upgrade huggingface_hub

# 推理与特征提取必需
hf download lj1995/VoiceConversionWebUI --revision main \
  --include "hubert_base/*" --local-dir assets
hf download lj1995/VoiceConversionWebUI rmvpe.pt --revision main \
  --local-dir assets/rmvpe

# v1/v2 训练必需
hf download lj1995/VoiceConversionWebUI --revision main \
  --include "pretrained/*" "pretrained_v2/*" --local-dir assets
hf download lj1995/VoiceConversionWebUI mute.zip --revision main --local-dir .model-downloads
python -m zipfile -e .model-downloads/mute.zip logs

# 仅 pymss/MSST 人声分离需要
hf download lj1995/VoiceConversionWebUI --revision main --include "pymss_weights/*" --local-dir assets

Windows AMD/Intel DirectML 环境还需下载 rmvpe.onnx 放到 assets/rmvpe/。目录结构要求:assets/hubert_base/(HubERT 特征模型)、assets/rmvpe/rmvpe.pt、assets/pretrained/ 与 assets/pretrained_v2/(v1/v2 预训练底模)、assets/pymss_weights/、assets/weights/(用户自己的 .pth 模型)、assets/indices/(用户 .index 文件)、logs/mute/(训练静音样本)。其中 hubert_base 用于提取内容特征,rmvpe.pt 用于提取音高曲线,pretrained/pretrained_v2 是 v1/v2 两代预训练底模(决定你训练时的初始化起点),mute.zip 解压后放到 logs/mute/ 作为训练时的静音参考,pymss_weights 仅在做人声伴奏分离时需要。

FFmpeg

Ubuntu 已在系统依赖中安装;Windows 用户需把 ffmpeg.exe 与 ffprobe.exe 放到项目根目录。FFmpeg 负责读写各种音频格式、切片与重采样,缺了它 WebUI 在导入音频时会报错。

六、使用方法

WebUI 分两个主界面:go-webui.bat 对应的是训练推理界面,集数据上传、切片、特征提取、训练、模型推理、ckpt 处理(融合)于一体;go-realtime_gui.bat 对应的是实时变声界面,选好模型后对着麦克风说话即时变声。启动方式如下:

启动 WebUI:

python webui.py

无桌面的 Ubuntu 服务器加 --noautoopen,避免它尝试自动打开浏览器报错;启动后在服务器浏览器访问 http://服务器IP:7865 即可。

python webui.py --noautoopen

默认服务监听端口 7865。用户自己训练好的 .pth 模型放入 assets/weights/,对应的 .index 检索文件放入 assets/indices/,WebUI 中即可选择加载。完整训练流程大致是:先准备目标说话人的干净音频(建议 ≥10 分钟、低底噪),在 WebUI「训练推理」选项卡中填写实验名、上传音频,依次完成数据切片、特征提取(HubERT 提取内容特征、RMVPE 提取音高)、配置训练轮次与 batch size 后开始训练;训练完成导出 .pth 权重与 .index 特征索引,放到对应目录即可在「模型推理」中把任意输入音频转成目标音色。「实时变声界面」则用麦克风实时把说话声音转成目标音色,端到端延迟 170 ms,ASIO 设备可到 90 ms,适合直播、连麦等场景。

七、常见问题(FAQ)

使用中最常见的疑问集中在数据准备、硬件选择与模型加载三处,下面逐条回答;更详细的排障可查官方 Wiki 的常见问题解答页面。

  • 训练需要多少数据? 官方推荐至少收集 10 分钟低底噪语音;底噪越小、越干净,转换效果越好。
  • 没有 N 卡能用吗? 可以。CPU、AMD、Intel 用 requirments_cpu_py312.txt;Windows 上 A/I 卡还可用 DirectML 加速,Linux 走 CPU。
  • 显存不够怎么办? RVC 主打低显卡训练,降低 batch size、用 CPU 依赖即可;实时变声对麦克风与声卡驱动也有要求。
  • 怎么改变音色风格? 用 ckpt-merge 把多个模型按权重融合;也可在 WebUI 调整音高转换(键数)与检索特征比例。
  • 转换后还带着原说话人的声音? 这正是 top1 检索替换要解决的音色泄漏问题,确保用训练充分的模型与干净参考数据即可。
  • 需要分离人声伴奏怎么办? 仓库内置 pymss / MSST 模型支持,下载 pymss_weights/ 后即可在界面中调用。
  • 50 系新显卡怎么装? RTX 50 系必须先装 CUDA 12.8 版 Torch(torch==2.7.1+cu128),再装 requirments_cu128_py312.txt;50 系以前的卡用 cu118 版。
  • 国内下载慢怎么办? 依赖文件顶部已内置北大、南大镜像,保留即可;换官方源时只替换 --index-url 与 --extra-index-url,别动包版本和两阶段顺序。
  • 训练完怎么用? 把导出的 .pth 放进 assets/weights/、.index 放进 assets/indices/,重启 WebUI 后在模型下拉框就能选中;离线推理与实时变声都在对应界面完成。
  • 男女声转换音高怎么设? 在推理界面用「键数(transpose)」调整,男声转女声通常 +12 半音(一个八度),女声转男声 -12,按听感微调即可。
  • 没有 GPU 的云服务器能训练吗? 可以走 CPU 依赖方案,但训练会明显变慢;官方教程也推荐 AutoDL 等按小时计费的 GPU 云主机训练,成本很低。
  • 底模和自己的模型什么关系? 底模(pretrained/pretrained_v2)是用 50 小时 VCTK 预训练的通用音色模型,自己的训练是在它基础上微调成目标说话人,因此收敛快、数据需求少。
  • 实时变声没声音或延迟很大? 检查是否选中了正确的麦克风与输出设备,驱动是否支持 ASIO;普通声卡延迟通常在 170 ms 左右,想压到 90 ms 需要 ASIO 设备。
  • 转换后有杂音/电流声? 多半是训练数据底噪太大或音高提取不准,换用 RMVPE 算法、重新切片并保证录音环境安静即可改善。

八、参考项目与跳转链接

RVC-WebUI 站在众多开源工作之上:特征提取借鉴 ContentVec 与 VITS、HIFIGAN——ContentVec 负责把语音转成与音色无关的内容特征,VITS 与 HIFIGAN 是声码器,负责把特征重新合成为波形;界面用 Gradio 快速搭建;音频处理用 FFmpeg;人声分离参考 Ultimate Vocal Remover 与 pymss-project/pymss;音频切片用 audio-slicer;音高提取采用 RMVPE(预训练模型由 yxlllc 与 RVC-Boss 训练测试),这是它告别哑音的关键。项目从 v1 到 v2 再到预告中的 v3,一直由开源社区维护,欢迎在 GitHub 查看更新日志与对照实验记录。

相关链接:

总的来说,RVC-WebUI 是目前个人玩家做 AI 歌手、实时变声器最成熟的开源方案:底模干净可商用、数据门槛低(10 分钟起步)、网页界面零门槛、延迟做到实时可用,配合云主机训练成本也很低。官方也在持续迭代,预告中的 RVCv3 会带来更大参数与更少数据需求,值得关注。感兴趣的话可以先从在线演示体验效果,再决定是否本地部署与训练自己的专属音色模型吧。以上全文完。

评论交流

文章目录