RVC 音色转换入门指南:10 分钟样本跑通 AI 变声,零基础可用
RVC 音色转换入门指南:10 分钟样本跑通 AI 变声,零基础可用
【免费下载链接】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
RVC 是一个开源的检索式音色转换工具:投喂 10 分钟目标人物的干净人声,就能训出一个"声音滤镜",把你的声音离线或实时换成目标音色。推理端到端延迟 170ms,配 ASIO 声卡最低 90ms,4GB 显存即可起步。
📦 项目速览
| 维度 | 信息 |
|---|---|
| 适合谁 | 想给歌曲换歌手、做直播变声器、训练个人专属音色的人 |
| 平台 | Windows / Linux(README 以 Ubuntu 24.04 为例);N 卡、A 卡、I 卡、纯 CPU 均可 |
| 硬件门槛 | N 卡 4GB 显存起步,低于 4GB 自动退回 CPU;A 卡 Windows 走 DirectML |
| 最低环境 | Python 3.12 x64、ffmpeg、对应硬件的 PyTorch |
| 最少素材 | 10 分钟单人、低底噪人声音频(官方 FAQ 推荐 10~50 分钟) |
| 典型玩法 | 训练专属音色、批量换声、人声伴奏分离、实时变声 |
| 关键数字 | 实时变声端到端 170ms,ASIO 下 90ms;WebUI 默认监听端口 7865 |
它的工作原理一句话:用 top1 检索把输入特征替换成训练集特征,从而杜绝原声音色"漏"进结果(源码在 webui.py 的推理链路)。
🧾 动手前:环境核对单
先对照下表自查,哪项不达标就按第三列处理。
| 项目 | 要求 | 不达标怎么办 |
|---|---|---|
| Python | 3.12 x64 | 装 3.12 并新建虚拟环境再执行后续命令 |
| 系统 | Windows 或 Linux(推荐 Ubuntu 24.04) | 其他发行版参照 Ubuntu 步骤类比安装系统依赖 |
| 显卡 | N 卡显存 ≥4GB;A 卡/无 N 卡走 CPU 或 DirectML | 改装 requirments_cpu_py312.txt,训练慢但可用 |
| ffmpeg | 命令行可直接调用 | Ubuntu:sudo apt install ffmpeg;Windows:把 ffmpeg.exe、ffprobe.exe 放项目根目录 |
| 网络 | 能访问 PyPI 与模型仓库 | requirements 文件顶部已内置国内镜像源,一般无需处理 |
目录分工先记熟,后面每步都会用到:
- 预训练模型:
assets/(hubert_base、rmvpe、pretrained、pretrained_v2、uvr5_weights) - 实验数据与训练产物:
logs/实验名/ - 可分享的小模型(60MB+ 的 .pth):
assets/weights/;索引 .index:assets/indices/ - 参数与配置:configs/config.py 和
configs/v1、v2下的 json
🚧 跑起来的三个动作
把整个过程想成开一家录音棚:先装修,再上架设备,最后开张接单。
动作 1:拿到代码
为什么:后面所有命令都在仓库根目录执行。怎么做:
git clone https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-WebUI cd Retrieval-based-Voice-Conversion-WebUI过关标准:根目录能看到webui.py、configs/、train/、tools/。
动作 2:装环境 + 下模型
为什么:代码只负责"跑",依赖和权重要单独就位。怎么做(以 N 卡为例):
python -m venv .venv # 激活虚拟环境后 python -m pip install torch==2.7.1+cu118 torchaudio==2.7.1+cu118 python -m pip install -r requirments_cu118_py312.txtRTX 50 系把版本号换成 cu128 版;CPU/A 卡/I 卡直接装requirments_cpu_py312.txt。再下模型(推理+训练必需的最小集):
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 hf download lj1995/VoiceConversionWebUI --revision main --include "pretrained/*" "pretrained_v2/*" --local-dir assets过关标准:assets/hubert_base/下有pytorch_model.bin,assets/rmvpe/rmvpe.pt存在;N 卡用户执行python -c "import torch; print(torch.cuda.is_available())"打印True。
动作 3:启动 WebUI
为什么:所有操作都在网页里完成。怎么做:
python webui.py无桌面服务器的 Ubuntu 加--noautoopen,再手动访问。过关标准:浏览器自动打开 7865 端口页面,页签能看到「模型推理」「伴奏人声分离&去混响&去回声」「训练」「ckpt处理」「常见问题解答」,控制台打印当前设备(如cuda:0)。
偷懒路线:如果拿的是带 runtime 的 Windows 整合包(如 RVC-beta),解压后双击go-webui.bat即可,相当于跳过动作 1、2,直接到动作 3 的效果。
🎯 最小闭环:从零训一个自己的音色
- 备素材:准备 10 分钟以上、无 BGM 的单人人声,放进一个文件夹(路径别带中文和空格)。
- 进「训练」页签,「输入实验名」填
my-test。实验数据会按这个名字建在logs/my-test/下。 - step2a「输入训练文件夹路径」填上一步的素材路径,点「处理数据」。完成后实验目录多出
0_gt_wavs、1_16k_wavs两个切片文件夹。 - step2b 音高算法选
rmvpe(默认值,速度最快),点「特征提取」。 - step3 保持默认:版本 v2、采样率 40k、总训练轮数 20,点「一键训练」。
- 等输出信息出现
Training is done. The program is closed.,且logs/my-test/下出现added_IVF*.index索引文件,训练才算完整。 - 切到「模型推理」页签,点「刷新音色列表」,下拉框应出现
my-test。 - 上传一段自己的录音,变调填 0,音高算法
rmvpe,点「转换」,播放输出音频。
判断结果正确:听感上音色明显偏向训练目标、语气和节奏仍跟随输入。若还残留原声音色,往下看能力 2 的参数。
🔬 核心能力拆解
能力 1:一键训练流水线
解决什么问题:手动分步跑切片、提特征、训练容易漏步骤,流水线一次串完:切片归一化 → 提取音高与 HuBERT 特征 → 训练模型和索引(预处理细节在 train/preprocess.py)。
何时使用:手里有新音色素材要变成模型时。
| 关键参数 | 作用 |
|---|---|
| 目标采样率 | 40k / 48k,越高越保真,显存和时长开销也越大 |
| 模型是否带音高指导 | 唱歌必须开;纯语音可关 |
| 总训练轮数 total_epoch | 默认 20;低音质素材 20~30 足够,高音质可拉到 200(官方 FAQ Q9) |
| batch_size | 默认取显存的一半(GB 数),显存不够就调小 |
最反直觉的坑:现象是训练中途报 tensor 尺寸不匹配;原因是中途改了采样率接着训,新旧特征对不上;对策是换一个新实验名从头训,而不是在原实验上打补丁(官方 FAQ Q18)。另注意训练页签明确写着"暂时只支持单人训练",素材里混进第二个人的声音,效果就会变差。
能力 2:检索式推理(管音色泄露)
解决什么问题:底模和输入音频的音色可能渗进输出,叫"音色泄露";检索模块用训练集特征替换输入特征来压制它。
何时使用:转换结果听起来"还带点原来的嗓音"时。
| 关键参数 | 作用 |
|---|---|
| 检索特征占比 index_rate | 0~1,单次推理默认 0.75、批量默认 1;越大越贴训练集音色 |
| 变调 | 整数半音,+12 升八度,-12 降八度,保持原调填 0 |
| 保护清辅音和呼吸声 | 0~0.5,默认 0.33;拉满 0.5 等于关闭保护,调低保护更强但可能削弱索引效果 |
| 音高提取算法 | pm / rmvpe / fcpe 三选一,rmvpe 速度最快、资源占用小 |
最反直觉的坑:现象是 index_rate 拉满后音质反而变差;原因是检索会把输出往训练集的音质水平上靠,训练集音质低于原音频时就亏;对策是只有训练集音质高、时长足时才拉满,否则退回 0.75 附近微调(官方 FAQ Q11 有完整解释)。
能力 3:UVR5 人声伴奏分离
解决什么问题:想训练的素材是整首歌时,先把人声和伴奏拆开;附带去混响(DeReverb)、去回声(DeEcho)模型。
何时使用:素材含 BGM 或混响,直接训练会把伴奏学进音色。
| 关键参数 | 作用 |
|---|---|
| 模型下拉 | 选人声提取或 DeEcho/DeReverb 类,模型权重需提前下到assets/uvr5_weights/ |
| 输出文件夹 | 主人声 / 非主人声分别指定,默认opt |
| 导出格式 | wav / flac / mp3 / m4a,默认 flac |
最反直觉的坑:现象是分离出来的人声"很干净",训完却发现副歌段有鬼影;原因是分离模型对叠唱、气声段并不彻底,残留音会被当成音色学走;对策是挑独唱、单声道的干净段落再进训练,而不是整段照搬。
🛠️ 问题速查:现象对照处理
| 现象 | 处理办法 |
|---|---|
启动或推理时报缺assets/下模型文件 | 重跑动作 2 里对应的hf download条目 |
| Cuda out of memory | 训练把 batch_size 调小;推理调小 configs/config.py 里的 x_pad/x_query/x_center/x_max |
| ffmpeg error / utf8 error | 多为路径问题:目录或文件名带中文、空格、括号,迁到纯英文路径重试(FAQ Q1) |
| 结果还带原声音色 | 调高「检索特征占比」,同时确认训练集音质不差于原音频 |
一键训练结束却看不到added_*.index | 索引步骤可能卡住,回到训练页签再点一次「训练特征索引」(FAQ Q2) |
| 刷新后下拉框没有新音色 | 先点「刷新音色列表」;还没有就翻logs/实验名下的日志找训练报错(FAQ Q3) |
| 浏览器 Connection Error | 控制台黑窗口被关了,重新打开启动命令(FAQ Q5) |
| 处理数据时内存 error | 调低「CPU 进程数」,并手工把过长的训练音频切短(FAQ Q14) |
更多条目见 WebUI 内置的「常见问题解答」页签,内容与 docs/cn/faq.md 同步。
🧭 进阶入口
- 混合两个音色:「ckpt处理」页签的模型融合(ckpt-merge),填两个模型路径和 A 权重即可;源码在 train/process_ckpt.py。
- 整文件夹批量换声:「模型推理」下的批量推理页签,输出默认落在
opt/,支持指定 wav/flac/mp3/m4a。 - 直播实时变声:运行
realtime_gui.py(Windows 整合包双击go-realtime_gui.bat),端到端 170ms,ASIO 声卡下 90ms。 - 查参数与更新史:docs/cn/Changelog_CN.md 记录各版本改动,训练技巧看 docs/cn/faq.md 的 Q9~Q11。
训出第一个能听出目标的音色只是起点。换三段不同风格的音频、每组参数只动一处再对比听感,比读十篇教程都快。
合规提示:AI 生成的声音受当地法律约束,克隆他人音色前务必取得本人授权,尊重版权与隐私,仅将模型用于合法合规的用途。
【免费下载链接】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),仅供参考