从10分钟录音到可分享的音色:RVC变声器6步实践指南
2026/9/20 13:29:58 网站建设 项目流程

从10分钟录音到可分享的音色:RVC变声器6步实践指南

【免费下载链接】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(Retrieval-based-Voice-Conversion-WebUI)解决的实际问题:在网页界面里用少量语音训练出一个语音转换模型,再把任意输入音频转成该音色。底模由约50小时开源 VCTK 数据集训练而来,官方口径是10分钟低底噪语音即可训出可用效果。本文不按功能逐条讲解,而是按一条真实任务走完整流程:从原始录音,到能分享出去的模型文件,再到批量转换结果。

训练集准备:10分钟音频与底噪的关系

在动代码之前,先判断素材是否够格。官方 FAQ(docs/cn/faq.md)给出的建议比较具体:

  • 10~50 分钟:可以放心推荐的区间,音质高、底噪低且音色有个人特色时,多多益善。
  • 5~10 分钟:可行,前提是素材精简、音色特征明显。
  • 1~2 分钟:有人成功过,但经验不可复现,只适合特征极强(如高频气声明显的音色)且音质高的素材。
  • 1 分钟以下:没有公开成功先例,不建议尝试。

同一环节还有两个会直接让第一次训练失败的坑:

路径含特殊符号 → ffmpeg 报错。训练集文件名或目录里的空格、括号、中文路径,可能让 ffmpeg 读取失败,或在写 filelist.txt 时出现 utf8 错误。做法:素材统一放进纯英文数字路径的目录并重新命名。

音频太长 → 预处理时内存炸掉。训练时出现文件页/内存错误,先把"提取音高和处理数据使用的 CPU 进程数"拉低,再手工把过长的音频切短。

素材过关后,环境才能真正开始搭。

环境部署:按显卡类型安装依赖

环境要求 Python 3.8 以上,NVIDIA 卡(CUDA)、A 卡(Windows 走 DirectML、Linux 走 ROCm)、Intel 核显/独显(IPEX,仅 Linux)三选一。先取代码并装 N 卡依赖:

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

换硬件时只改最后一行:A/I 卡(Windows)用requirements-dml.txt,AMD ROCm(Linux)用requirements-amd.txt,IPEX(Linux)用requirements-ipex.txt。macOS 用户可以直接跑仓库自带的run.sh

还要补齐两样东西:

  1. ffmpeg:Ubuntu/Debian 执行sudo apt install ffmpeg,macOS 执行brew install ffmpeg,Windows 把 ffmpeg.exe 和 ffprobe.exe 放到项目根目录。
  2. 音高模型:想用 RMVPE(下一节说明为什么)就把 rmvpe.pt 下载到项目根目录。

RVC 推理和训练依赖的预训练模型(hubert、uvr5_weights、pretrained 等)放在 assets/ 目录,可用 tools/download_models.py 批量下载。

首次启动常撞的两个错:Windows 报llvmlite.dll加载失败,安装 VC++ 运行时库(vc_redist.x64)后重启 WebUI 即可;WebUI 弹出 "Expecting value: line 1 column 1",基本是代理问题,关掉局域网/全局代理(包括服务端的 http_proxy 设置)再试。

环境通了,就可以跑第一次训练。

跑通第一次训练:启动 infer-web.py 并一键训练

python infer-web.py # Windows 直接双击 go-web.bat

界面默认监听 7865 端口(--port可改)。启动时 configs/config.py 会把 configs/ 下的 v1/v2 配置(32k/40k/48k)自动拷贝到configs/inuse/,之后只改 inuse 里的副本;同时自动探测显卡——GTX 1060/1070/1080、P40、P10 这类老卡会强制切到 fp32,显存 4G 及以下会把切分参数preprocess_per从 3.7 降到 3.0,这些都不用手改。

训练选项卡里填实验名、选 v2 48k、指定训练集文件夹,一键训练会依次完成数据切分、特征提取、音高提取、训练、建索引。v2 48k 的默认参数见 configs/v2/48k.json:batch_size=4learning_rate=1e-4lr_decay=0.999875segment_size=17280、采样率 48000Hz、128 维 mel 谱。

最容易卡住的两个点:

CUDA out of memory。训练时把 batch_size 从 4 往下减,最低 1;4G 显存还能跑,4G 以下(如 3G 的 1060)官方建议直接放弃。

total_epoch 填多少。训练集音质一般、底噪大时,20~30 轮就够,调太高只会放大噪声;高音质、低底噪、时长多时可以放到 200。别照着配置里 20000 的上限填。

训练完成后模型已能在推理选项卡使用,但 logs 目录里的文件还不是该分享的那个。

推理参数调优:index_rate、protect 与音高算法各自的作用

RVC变声器区别于普通转换的关键在检索机制:推理时用 top1 检索把输入源特征替换为训练集特征,从源头拦住"源音频或底模的音色"渗进结果。index_rate(0~1)控制这个替换的强度:调到 1,理论上无音色泄漏,但音质向训练集靠拢——训练集音质低于源音频时,调高反而降音质;调到 0 则完全放弃检索保护。训练集优质且时长足够、训练轮数拉高后,模型本身很少引用源音色,索引甚至可以省掉。

音高提取四种算法按条件选:

算法适用场景已知限制
RMVPE默认选择,InterSpeech 2023 方法,效果最好且根治哑音(无声)问题需额外下载 rmvpe.pt 放到根目录,缺文件不可用
Harvest精度上限最高,要求音高精确还原时使用速度慢、资源占用高
Dio精度与速度的折中两侧无明显短板,也无明显优势
PM低配置设备首选,CLI 工具的默认选项精度四者中最低

另两个影响成品的参数:protect(默认 0.33)防止气声部分被"转成噪声";转出来响度和源不一致时,用rms_mix_rate(默认 1)微调。参数解释的完整版本在 docs/en/faq_en.md。

参数调顺之后,模型才谈得上交付给别人用。

提取并分享 60MB 的正式模型

logs/实验名下的 pth 是几百 MB 的实验状态文件,用途是复现和继续训练,不是给推理的。把它复制到 weights 目录强行推理,会直接报 f0、tgt_sr 等 key 不存在的错误。

正确交付流程:

  1. 用 ckpt 选项卡做小模型提取:输入路径填 logs 下的 G 开头文件,自动或手工选择是否携带音高、目标采样率,输出为weights/下 60MB 以上的 pth。
  2. 分享时把weights/exp_name.pth 与 logs/exp_name/added_xxx.index 一起打包,索引是检索机制的依赖,只发 pth 会丢失音色保护。
  3. 想混合两种音色,在同一选项卡用 ckpt-merge 合并两个权重即可。

训练集中途要加数据:新建一个实验名,把上次最新的 G 和 D 文件拷进新实验目录,再一键训练,会从上次进度继续。

模型可以交付后,下一步是把它用进真实流程。

脱离 WebUI:批量转换与实时变声

需要整文件夹批处理或实时变声时,仓库有两个现成入口。

命令行单文件转换tools/infer_cli.py,参数全部可控:

python tools/infer_cli.py --f0up_key 0 --input_path input.wav \ --index_path logs/exp_name/added_IVF677_Flat_nprobe_7.index \ --f0method harvest --model_name exp_name \ --opt_path output.wav --index_rate 0.66 --device cuda:0

常用参数:--f0up_key升降调(0 为不变),--index_rate默认 0.66,--filter_radius默认 3,--resample_sr默认 0(不重采样),--protect默认 0.33。批量推理另有 tools/infer_batch_rvc.py。

实时 RVC变声:Windows 双击go-realtime-gui.bat进入实时变声界面,官方实测端到端延迟 170ms,换用 ASIO 输入输出设备可压到 90ms,但非常依赖硬件驱动支持。

要转换完整歌曲时,可先用内置 UVR5 把人声和伴奏分离,对人声单独推理后再与原伴奏混回。

可以立即执行的下一步

  1. 选一段 10 分钟低底噪录音,把目录改成纯英文路径,在训练选项卡完成一次"切分→训练→建索引"完整流程,确认输出音色与素材一致。
  2. 同一源音频分别用index_rate0 和 1 各推理一次,对比哪次有音色泄漏、哪次音质下降,据此定出适合自己训练集的取值。
  3. 用 ckpt 选项卡提取小模型,连同 index 打包发给另一台机器,做一次往返验证。
  4. 需要处理整文件夹素材时,把第 6 节的单文件流程写成脚本,用 infer_cli.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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询