10 分钟语音数据训一个专属变声模型:RVC 从装依赖到跑通推理
【免费下载链接】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)是一个基于 VITS 的开源变声框架,主打「用少量语音数据训练音色还原度不错的变声模型」。本文面向第一次接触 AI 变声、打算在本地跑通「训练—推理」完整链路的人:先讲清它替谁解决什么问题,再带你按顺序装环境、放模型、启动并调参,最后把高频报错按类型归拢起来排查。
它替你解决哪几件事
如果你手里有一段干净的人声,想做出「用你的声音唱别人的歌」或「实时变声」的效果,RVC 把整条链路都收进了一个网页界面里:
- 少数据也能出效果:底模用接近 50 小时的高质量开源语料训成,所以你只要提供目标说话人的语音,官方推荐 10 分钟到 50 分钟即可,精简且音色有特色时 5 到 10 分钟也够用。
- 弱显卡也能快速训练:框架针对显存做了适配,普通消费级显卡可以跑,训练速度较快。
- 人声与伴奏一键分离:内置 UVR5 能力,先把混音里的人声、伴奏拆出来,再拿纯人声去训练。
- 实时变声:除训练外还提供实时推理界面,延迟可做到端到端百毫秒级别,方便接入聊天、直播等场景。
装依赖与放预模型:先跑通环境
这一步是新手最常卡住的地方。原则是「先装 Python 依赖,再补齐预训练模型」,顺序反了启动时会一路报错。
按显卡选 requirements 装依赖
要求 Python 大于 3.8。依赖入口在requirements.txt等文件里,先装 PyTorch,再按硬件装对应清单:
pip install torch torchvision torchaudioWindows 上如果是 RTX30 系(Ampere 架构),按经验需要指定 CUDA 版本:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117再按显卡类型安装:
pip install -r requirements.txt # N 卡 pip install -r requirements-dml.txt # A 卡 / I 卡(DirectML) pip install -r requirements-amd.txt # A 卡 ROCm,仅 Linux pip install -r requirements-ipex.txt # I 卡 IPEX,仅 Linux不想用 pip 的话也可以用 Poetry,注意此时 Python 建议 3.7 到 3.10,其它版本在装llvmlite==0.39.0时容易冲突。MacOS 用户直接跑sh ./run.sh装依赖即可。
把预模型放到指定目录
依赖装好后,还需要把一批预训练文件放进仓库对应目录,否则训练和推理都起不来。需要准备的内容大致是:
./assets/hubert/hubert_base.pt./assets/pretrained./assets/uvr5_weights- 想用 v2 版本模型,再额外补一个
./assets/pretrained_v2
tools目录下有现成的下载脚本(如download_models.py),能帮你把上面这些文件拉到正确位置。
另外两件事:
- 装 ffmpeg:训练预处理要调用它。Ubuntu/Debian 用
sudo apt install ffmpeg,MacOS 用brew install ffmpeg,Windows 则下载ffmpeg与ffprobe的可执行文件放到项目根目录。 - 音高提取模型:想用效果最好的 RMVPE 算法,把
rmvpe.pt放到 RVC 根目录;A 卡 / I 卡可再选rmvpe.onnx。
启动 WebUI 并跑通第一次推理
启动与一键训练的四个阶段
装好依赖和预模型后,启动命令就一条:
python infer-web.py若之前用 Poetry 装的依赖,则换成poetry run python infer-web.py。浏览器会打开默认 7865 端口的界面(端口可在启动参数里改)。
点「一键训练」时,后台其实按四步串行执行,理解这个顺序对你判断卡在哪一步很有帮助:
- 处理数据:把训练集按约 3.7 秒一段切片、归一化、重采样到 16k(切片阈值、静音长度等参数见 infer/modules/train/preprocess.py)。
- 提取音高与特征:分别抽出 F0 曲线和内容特征。 3a.训练模型:用
infer/modules/train/train.py训练,产物落在logs/实验名/下。 3b.训练索引:用 Faiss 构建added_IVF...index检索库。
推理时这几个滑块分别管什么
训练完进入「单次推理」页,几个关键参数值得记住:
- 变调:整数半音数,升八度填 12、降八度填 -12。
- 音高提取算法:可选
pm/harvest/crepe/rmvpe。歌声用pm更快,harvest低音好但很慢,crepe效果好但吃显存,rmvpe综合最好且资源占用小(DirectML 环境没有crepe)。 - 检索特征占比:控制「用训练集特征替换输入特征」的强度,默认 0.75。
- 保护系数:默认 0.33,防止清辅音、呼吸声出现电音撕裂。
- 采样率:v1 可选 40k / 48k,v2 额外支持 32k。
完整推理流程的实现在 infer/modules/vc/pipeline.py,想看特征检索与音高融合的细节可以从这里入手。
踩坑自查:按报错反查原因
把 FAQ 里的内容按「原因类型」归拢后,排错会快很多。
路径与环境类
- ffmpeg error / utf8 error:多半不是 ffmpeg 的锅,而是路径带空格、括号等特殊符号,或训练集用了中文路径导致写
filelist.txt时编码报错。把目录挪到纯英文、无空格的短路径再试。 - Expecting value: line 1 column 1:关闭系统或全局代理(包括服务端代理,比如某些云平台的学术加速),再刷新。
- Connection Error:多半是你把控制台的黑色终端窗口关掉了,保留该窗口即可。
- 找不到
llvmlite.dll(Windows):安装对应的 VC++ 运行库后重启 WebUI。
显存与内存类
- Cuda out of memory:训练时先缩小 batch size(缩到 1 还爆只能换卡);推理时则去 configs/config.py 末尾调小
x_pad、x_query、x_center、x_max。显存低于 4G 的卡(如 1060 3G)基本可以放弃,4G 还有救。 - 训练时内存 error:进程开太多,把「提取音高和处理数据使用的 CPU 进程数」拉低,或手动把训练集音频切短一点。
训练完了为什么找不到音色或索引
- 没有
added开头的索引:只要出现「Training is done」就说明模型训练成功,紧随其后的报错可以忽略;索引卡住多半是训练集太大,重新点一次「训练索引」通常就能补上(代码已改为分批 add 来省内存)。 - 推理页看不到刚训的音色:先点「刷新音色」;还没有的话回看训练是否报错,
logs/实验名/下的日志可直接拿去对照。 - 中途换了采样率继续训:会报 tensor 尺寸不匹配,别在同一实验里改采样率,需要改就换新实验名从头训。
想分享模型时该给哪个文件
logs/实验名/下的 pth 是「实验状态」,用来复现或续训,不要直接拿去推理。真正可分享的是weights下约 60MB 的 pth,配合对应的added_...index一起打包成 zip 分发即可;直接把 logs 下几百 MB 的 pth 塞进 weights 强行推理,会报 f0、tgt_sr 等 key 缺失。
边界与进阶选项
- 数据时长怎么定:推荐 10 到 50 分钟;音质好、底噪低且音色有个人特色时可以更多,精简且有特色的 5 到 10 分钟也够用;1 到 2 分钟有人成功但不具备可复现的参考价值,1 分钟以下不建议尝试。
- 训练轮数 total_epoch:训练集音质差、底噪大时 20 到 30 轮就够,拉太高也带不动底模;音质高、时长足时可上到 200 轮。
- 检索占比与音色泄漏:当底模和输入源音质高于训练集时,结果音质会被带高,但音色可能往它们靠,这叫「音色泄漏」。检索占比调到 1 理论上不泄漏、但音质更贴训练集;调到 0 则失去检索保护。训练集足够优质、轮数够多时,泄漏本身就不明显,索引文件甚至可以省。
- 选卡与续训:推理用哪张卡在
config.py的device里改cuda:后的卡号;想续训就用相同参数点训练模型,会自动接上上次 checkpoint;想中途加数据,则新建实验名、拷入上次的 G/D 文件再一键训练。
更多细节可查阅 中文 FAQ 与 更新日志。
把一条干净的人声喂进去,跑通一次推理听到自己的声音被换掉的那一刻,你就真正上道了——剩下的只是调数据、调参数的事。
【免费下载链接】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),仅供参考