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(Retrieval-based Voice Conversion WebUI)是一个基于 VITS 的开源变声框架:用一个人 10~50 分钟的说话录音就能训练出专属的 AI 语音克隆模型,之后任何音频都可以换成这个人的声音。本文覆盖这个 RVC 变声工具从安装、训练到推理、排错的完整流程。
RVC 语音转换能做什么,不能做什么
先说结论:RVC 解决的是"把一个人的声音替换成另一个人"的问题——先用少量目标人声录音训练出音色模型,推理时再把输入音频的音色替换为目标音色,其中用 top1 检索直接替换输入源特征来抑制"音色泄漏"(输出里混入原音色的现象)。框架还内置了 UVR5 人声伴奏分离、RMVPE 音高提取和模型融合功能,全部在一个网页界面里完成。
判断自己是否适合,对照下面两列即可:
| 适合你的情况 | 不适合你的情况 |
|---|---|
| 翻唱变声、视频或游戏角色换声 | 显卡显存低于 4G(4G 仍可尝试,更低基本不可行) |
| 个性化语音助手、实时变声场景 | 素材不足 5 分钟且期望稳定效果(1 分钟以下官方不建议) |
| 只有一张普通显卡,想用 10 分钟素材训出可用模型 | 想做能唱歌的模型,却未开启"带音高指导"选项 |
RVC 安装教程:按显卡选依赖文件并补齐预训练模型
安装环节的关键只有一点:根据显卡选对 requirements 文件,并补齐assets下的预训练模型。两者缺一,后面都会卡住。
第一步:获取代码并安装依赖。需要 Python 3.8 及以上环境:
git clone https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-WebUI cd Retrieval-based-Voice-Conversion-WebUI pip install -r requirements.txt第二步:按显卡环境选择依赖文件(N 卡直接用上一步命令,其余按下表替换):
| 显卡环境 | 依赖文件 | 说明 |
|---|---|---|
| NVIDIA | requirements.txt | CUDA 加速,最常见的选择 |
| AMD(Windows) | requirements-dml.txt | 走 DirectML 加速 |
| AMD(Linux) | requirements-amd.txt | 需先装好 ROCm 驱动 |
| Intel(Linux) | requirements-ipex.txt | 走 IPEX 加速 |
如果改用 Poetry 安装,Python 建议 3.7~3.10,其他版本安装llvmlite==0.39.0时可能冲突。
第三步:安装 FFmpeg。音频读写依赖ffmpeg与ffprobe:Ubuntu/Debian 用sudo apt install ffmpeg,macOS 用brew install ffmpeg;Windows 用户将ffmpeg.exe和ffprobe.exe放到项目根目录即可。
第四步:补齐预训练模型。至少需要assets/hubert、assets/pretrained、assets/uvr5_weights三个目录下的文件;要使用 v2 版本模型,还需assets/pretrained_v2。运行 tools/download_models.py 可批量下载上述文件。
第五步:启动 WebUI。执行python infer-web.py,默认监听 7865 端口,端口被占用时可加--port 7861更换。Windows 整合包里的go-web.bat则默认以 7897 端口启动。
⚠️重要:运行期间不要关闭终端窗口,它是后端服务本体;关闭后浏览器会提示 Connection Error。
RVC 模型训练流程:从素材准备到索引生成
训练入口是 WebUI 的「训练」选项卡,整体分为三个环节:备料、一键训练、验证产物。
准备一份干净的人声音频库
素材质量直接决定效果上限,比加大训练轮数重要得多:
- 时长:推荐 10~50 分钟;音质高、底噪低、音色统一时,5~10 分钟也可行;1 分钟以下不建议。
- 内容:同一人的统一音色,去掉底噪、爆音和静音段。
- 路径:所有文件放入同一个训练文件夹,路径避免空格、括号和中文,这两类符号是后续 ffmpeg 报错和 utf8 错误的主要来源。
一键训练生成检查点与索引文件
在「训练」选项卡填好实验名、目标采样率和「模型是否带音高指导」后,点「一键训练」即可串行执行:数据预处理(切片、归一化)→ 音高与特征提取(F0 曲线 + HuBERT 特征)→ 模型训练 → 索引训练。
- 采样率:v2 版本可选 32k / 40k / 48k,v1 仅 40k / 48k;40k 是通用选择,48k 音质上限最高,32k 计算开销最小。
- 训练产物:检查点按保存频率持续写入
logs/实验名/,生成器为G_xxx.pth、判别器为D_xxx.pth。 - 训练轮数 total_epoch:默认 20;素材底噪大时 20~30 轮足够,调高也带不动低音质素材;素材优质且时长充足时,200 轮没有问题。
- 中断与续训:关闭终端重启后,用相同参数再次点训练,会从上次检查点继续,不会从零开始。
验证训练产物并定位实验目录
训练成功与否看两处:
- 输出信息出现 "Training is done" 即代表模型训练完成,其后紧邻的个别报错可忽略。
logs/实验名/下出现added_IVF..._Flat_nprobe_....index索引文件,它是推理时把声音"锁"在目标音色上的特征检索库。
也可以在训练设置中开启"每次保存时间点将小模型保存至 weights 文件夹",省去事后手动提取。
⚠️重要:训练中途不能更换目标采样率继续训练,否则会报 tensor 尺寸不匹配错误;必须更换实验名从头训练(可拷贝上次的音高与特征文件夹加速)。
控制输出效果的三个 RVC 变声参数:变调、索引率、F0 算法
推理入口是「模型推理」选项卡:先点「刷新音色列表和索引路径」选中刚训好的模型,填入待处理音频路径(参考输入框中的示例格式),选择 F0 算法后点「转换」。真正影响结果的就是下表三个参数:
| 参数 | 作用 | 调整建议 |
|---|---|---|
| 变调 | 按整数半音整体升降调 | 填 12 升八度,填 -12 降八度;男声翻女声通常从这里入手,取正值 |
| 索引率(检索特征占比) | 控制输出向训练集音色靠拢的程度 | 单次推理默认 0.75;音色不够像时在 0.5~0.9 之间逐步试;调得越高越贴近训练集音色,但训练集音质低于输入源时可能拉低音质 |
| F0 音高提取算法 | 从输入音频提取音高曲线 | rmvpe效果最好且资源占用可控;pm最快,适合歌声提速;harvest低音表现好但速度慢;crepe效果好但更吃显存 |
另外两个常调参数:protect(保护清辅音和呼吸声)默认 0.33,拉满 0.5 即关闭保护;批量推理时索引率默认为 1,可按需调低。训练集本身优质且时长充足时,模型对索引率的依赖会明显下降。
高频报错对照表:从现象到解决方案
遇到报错先按下表定位,绝大多数情况不需要重新训练:
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| ffmpeg error / utf8 error | 音频路径含空格、括号等特殊符号(ffmpeg 报错)或含中文(写 filelist 时 utf8 报错) | 将音频改名为纯英文并移动到纯英文路径 |
| WebUI 弹出 "Expecting value: line 1 column 1 (char 0)" | 系统局域网/全局代理拦截了请求 | 关闭代理后刷新;服务端设置的http_proxy/https_proxy也要 unset |
| 缺少 llvmlite.dll | Windows 缺少 Visual C++ 运行库 | 安装对应版 vc_redist 运行库后重启 |
| CUDA out of memory | 显存不足 | 训练侧调小 batch size(调到 1 仍不够则需换卡);推理侧在 configs/config.py 中酌情调小x_pad、x_query、x_center、x_max;4G 以下显存基本只能放弃训练 |
| tensor 尺寸不匹配(expanded size / size of tensor a 必须 match) | ①wavs16k目录中有明显偏小的异常音频文件;② 中途变更采样率继续训练 | ① 删除异常文件后重新训练模型和索引;② 更换实验名从头训练 |
训练完成但没有added_开头的索引 | 训练集较大时索引添加步骤卡住 | 先确认出现 "Training is done",然后手动再点一次「训练特征索引」 |
| 推理列表里找不到刚训好的模型 | 训练过程报错中断,或产物位置不对 | 点「刷新音色」,仍无则查看控制台输出与logs/实验名/下的日志文件 |
提示:若报文件/内存错误,多为 CPU 进程开太多,把「提取音高和处理数据使用的 CPU 进程数」调低,并手动把训练音频切短一些。
语音克隆模型如何正确分享,以及更多资料入口
分享模型前必须分清两类文件:logs/实验名/下的 pth 是实验检查点(体积达几百 MB,用于复现和继续训练),直接拷到weights强行推理会报 f0、tgt_sr 等 key 缺失错误;可分享的是weights目录下 60+MB 的 pth。
标准流程:在「ckpt 处理」选项卡最下方的"模型提取"功能中,输入logs下 G 开头的检查点路径(采样率、是否带音高、版本可自动识别),提取出轻量小模型存入weights;再把该 pth 与对应的added_....index索引文件一起打包发给对方,解压到对应目录即可使用。
遇到问题时,优先查阅仓库自带的官方资料:
- 常见问题解答:docs/cn/faq.md(WebUI 内「常见问题解答」选项卡即展示此文件)
- 更新日志:docs/cn/Changelog_CN.md
- 索引生成与模型转换脚本:tools/infer/
- 各采样率模型配置:configs/v1/ 与 configs/v2/
- 英文训练细节说明:docs/en/training_tips_en.md
- 界面与启动逻辑入口:infer-web.py
回头看整条路径:按显卡装好依赖 → 补齐预训练模型 → 备料、一键训练、验证产物 → 用三个参数控制推理输出 → 按表排错 → 提取小模型分享。效果差距主要来自素材是否干净、音色是否统一,而不是参数玄学。先用最短的 10 分钟素材完整跑通一遍,再逐步增加数据量,问题大多能在 docs/cn/faq.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),仅供参考