ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

10分钟音频炼出AI声线:RVC-WebUI 语音音色转换教程

10分钟音频炼出AI声线:RVC-WebUI 语音音色转换教程

10分钟音频炼出AI声线:RVC-WebUI 语音音色转换教程

【免费下载链接】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

Retrieval-based-Voice-Conversion-WebUI(下称 RVC-WebUI)做的事很直接:把你手里 10 分钟左右的清晰人声,炼成一个能用的语音转换模型,再在浏览器里把任何一段音频"说成"这个人的声音。底模是用约 50 小时开源 VCTK 数据集预训练好的,你不需要从零训练,只做微调;训练、推理、人声分离全部收在一个 Gradio 网页里,不碰代码也能跑完整个流程。

这套框架能做什么

  • 10 分钟低底噪数据即可训出可用模型,推荐采样率 40k/48k
  • top1 检索替换输入源特征为训练集特征,从机制上杜绝音色泄漏
  • 内置 InterSpeech 2023 的 RMVPE 音高提取,比 crepe_full 更快,专治哑音
  • 实时变声端到端延迟 170ms,配合 ASIO 输入输出可压到 90ms
  • 集成 UVR5 做伴奏/人声分离;AMD/Intel 显卡在 Windows 可走 DirectML,Linux 走 CPU

能力说完了,下面把环境搭起来。

装依赖与启动:最短路径

环境要求一句话:Python 3.12 x64,Ubuntu 24.04 x86_64 或 Windows 桌面环境,NVIDIA 显卡显存 ≥4GB 体验最佳(configs/config.py 里写死了这个下限,低于它会自动退回 CPU)。

第一步:克隆仓库

git clone https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-WebUI cd Retrieval-based-Voice-Conversion-WebUI

第二步:建虚拟环境,按硬件装依赖

python3.12 -m venv .venv && source .venv/bin/activate # CPU / AMD / Intel(AMD 在 Windows 上可用 DirectML) pip install -r requirments_cpu_py312.txt

NVIDIA 用户分两种情况:RTX 50 系先装 CUDA 12.8 的 Torch 再装requirments_cu128_py312.txt;RTX 50 系以前的卡先装 CUDA 11.8 的 Torch 再装requirments_cu118_py312.txt。装完可以验证一下:

python -c "import torch; print(torch.__version__, torch.cuda.is_available())"

第三步:下载预训练模型到assets/

用 Hugging Face 的hf download把lj1995/VoiceConversionWebUI仓库里的hubert_base/、rmvpe/rmvpe.pt、pretrained/、pretrained_v2/拉到assets/下;只有要用 UVR5 分离人声才需要额外下uvr5_weights/。Windows 用户若系统没有 ffmpeg,把ffmpeg.exe、ffprobe.exe放到项目根目录即可。

第四步:一条命令启动

python webui.py

默认监听 7865 端口,浏览器自动打开;无桌面的服务器加--noautoopen参数,端口被占时程序会自动顺延到下一个可用端口。

提示:实时变声是另一个入口python realtime_gui.py(Windows 下双击go-realtime_gui.bat),它独立于 WebUI,走桌面小窗口,参数可以热更新、不用重启。

环境通了,接下来走一遍最高频的主线:备数据、训练、转换。

把 10 分钟人声喂给训练器

训练页签按 step1 到 step3 排好了操作顺序,照着点即可。

step1:填实验配置

填一个实验名(logs/下每个实验一个文件夹,配置、日志、ckpt 都放里面),选目标采样率 40k 或 48k,再决定"模型是否带音高指导"——唱歌场景必须选是,纯语音可以选否。版本默认 v2,对应assets/pretrained_v2/f0G40k.pth这一代底模。

step2a:处理数据

填入训练文件夹路径,点"处理数据"。train/preprocess.py 会自动遍历所有能解码的音频,用能量切片器(-42dB 阈值、约 3.7 秒一片、0.3 秒重叠)切成短片段并做响度归一化,同时做 48Hz 高通滤掉低频轰鸣。你只需要保证素材是单一说话人、低底噪、无背景音乐;原曲带伴奏的,先丢进"伴奏人声分离&去混响&去回声"页签用 UVR5 提一遍干声。

step2b:特征提取

音高用 CPU 提取(选 rmvpe 算法),Hubert 声学特征用 GPU 提取,多卡可以用-分隔填多个卡号并行。

step3:开始训练

关键参数就三个,默认值基本能用:

参数默认值说明
save_every_epoch5每 5 个 epoch 存一次 ckpt
total_epoch2010 分钟小数据跑完 20 轮通常就够
每张显卡的 batch_size按显存自动估算显存紧就往下调

提示:数据在 10 分钟以内的小数据,勾上"缓存所有训练集至显存"能明显提速;数据量大就别勾,收益小还容易炸显存。

训练结束后你会拿到三样东西:实验目录里的大体积训练 ckpt、assets/weights/里的小体积推理模型(.pth)、以及用 train/train_index.py 基于 faiss 建好的 .index 索引文件。推理时 .pth 和 .index 要配套选。

模型到手,跑第一句转换。

第一次转换:先摸透三个参数

"模型推理 → 单次推理"页签里选模型后拖入音频,真正影响听感的是这三个滑块:

  • 变调:整数半音数,+12 升一个八度,-12 降一个八度,男女互转基本就是 ±12
  • 检索特征占比(index_rate):默认 0.75,控制拿训练集特征替换源特征的比例,拉高音色更像目标说话人
  • 保护(protect):默认 0.33,保护清辅音和呼吸声、防止电音撕裂,拉满 0.5 等于关闭保护

音高提取算法选 rmvpe 即可,它是默认值也是目前最稳的选择。转完不满意,先看批量推理页签:填输入文件夹,整批音频会输出到opt/目录,适合回头一次性验证多个素材。

提示:同一个输入路径连续推理时程序会缓存已提取的音高,反复调参对比不用每次等重新提取。

想更懂它为什么这样工作,花两分钟看看目录划分。

目录怎么分:核心模块速览

Retrieval-based-Voice-Conversion-WebUI/ ├── webui.py # WebUI 入口,五个页签都挂在这 ├── realtime_gui.py # 实时变声独立 GUI ├── infer/ # 推理核心 │ ├── vc/pipeline.py # 转换主流程 │ ├── hubert.py # Hubert 特征提取 │ ├── rmvpe.py # RMVPE 音高提取 │ └── rtrvc.py # 实时推理接口 ├── train/ # 切片、特征提取、训练、索引构建 ├── tools/ # UVR5 分离、CUDA Graph 等工具 ├── configs/ # v1/v2 网络配置文件 └── i18n/ # 12 种语言界面

三个设计点值得知道:

  • 检索式替换:推理时先在 faiss 索引里找训练集中最相似的特征(top1)盖住输入源特征,相当于把目标音色的"声纹指纹"压到源特征上,音色泄漏就是这么被掐断的
  • 设备自适应精度:configs/config.py 按显存和 SM 版本自动决定 fp16/fp32 甚至退回 CPU,Pascal 和 16 系老卡不会被强推半精度
  • 模块化推理链路:音高(RMVPE)、声学特征(Hubert)、声码器(VITS 系)各自独立,换算法只需换 infer/ 下对应模块

理解了结构,看看别人拿它做什么。

唱歌、直播、批量转换:三个真实用法

翻唱与 AI 歌手:训练时"是否带音高指导"必须选是,推理时变调给 ±12 做男女对调,音高用 rmvpe 提取,男低音场景 RMVPE 的识别比老算法稳得多。想融合两个人的音色,用"ckpt处理"页签的 ckpt-merge 把两个 .pth 按比例混合即可,不必重训。

直播与虚拟形象:跑realtime_gui.py,输入输出设备选同一种类型(比如都用 MME),追求更低延迟就切 ASIO,端到端 90ms 量级。界面里显示的"算法延迟/推理时间"会实时更新,方便你按硬件调 block_time 和 crossfade。

批量与进阶调参:输出有电音撕裂,把 protect 往 0.5 方向调低;音色不够"像",把 index_rate 提到 0.8 以上并确认 .index 选对了。显存富余的话,batch_size 按"显存 GB 数除以 2"往上加是 webui.py 里用的估算逻辑,训练提速明显。

踩坑速查表

现象大概率原因一句话解法
启动报依赖缺失或 cuda.is_available() 为 FalseTorch 的 CUDA 版本与驱动不匹配按显卡重选 cu118/cu128 依赖重装
训练中途显存 OOMbatch_size 过大或勾了显存缓存调小 batch_size,大数据关掉"缓存至显存"
转换出来还像原说话人索引没选或 index_rate 过低确认 .pth 与 .index 配套,占比拉到 0.75 以上
辅音处电音、撕裂保护参数没生效protect 调到 0.4~0.5 之间,注意 0.5 是关闭
实时变声爆音或延迟忽大忽小输入输出设备 hostapi 类型不一致两侧选同类型(如都 MME),进阶切 ASIO

从 10 分钟素材到可听感不错的模型,RVC-WebUI 把这条链路压到了"装依赖、下模型、点按钮"的长度。建议下一步:先拿 v2 底模跑一遍默认参数验证流程,再回头调 index_rate 和 protect 这两个最敏感的旋钮——它们决定了你离目标音色还差多少。更多历史细节可以翻 docs/cn/Changelog_CN.md。

【免费下载链接】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),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进