ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

RVC 版本演进技术全解:从实时变声、RMVPE 音高提取到训练与索引链路的工程实践(2023-04 至 2023-10)

RVC 版本演进技术全解:从实时变声、RMVPE 音高提取到训练与索引链路的工程实践(2023-04 至 2023-10) RVC 版本演进技术全解从实时变声、RMVPE 音高提取到训练与索引链路的工程实践2023-04 至 2023-10【免费下载链接】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-WebUIRVCRetrieval-based-Voice-Conversion-WebUI是一套基于 VITS 的少样本变声框架其发展历程集中记录在官方更新日志中。本文以 docs/en/Changelog_EN.md配合 docs/cn/Changelog_CN.md为核心主线系统复盘 2023 年 4 月至 10 月 RVC 在实时变声、RMVPE 音高提取、faiss 特征索引、训练效率与硬件适配等方向上的关键版本迭代并结合仓库源码印证每项更新背后的实现原理。读完本文你将掌握 RVC 训练/推理链路的核心参数含义、主流功能模块的代码位置以及理解官方实验—取舍—落地的工程决策逻辑。更新日志整体脉络与版本时间线仓库内 docs/en/Changelog_EN.md 与 docs/cn/Changelog_CN.md 记录了同一份演进史文件采用倒序排列最新版本 2023-10-06 在最上方并在中段用#注释行将近期更新与历史 changelog区隔。为了便于按时间线理解技术演进下表以正序方式概括各版本主题版本日期核心主题2023-04-09训练参数修正、显存利用率优化、batch/epoch 语义调整2023-04-16实时变声迷你 GUI 上线、50Hz 以下频段滤波、WebUI 多语言2023-04-28faiss 索引升级、移除 total_npy 依赖、16 系显卡解锁2023-05-13/05-14harvest 音高缓存、音量包络对齐、小模型周期保存、v2 预训练2023-05-28UVR5 去混响/去回声、呼吸清辅音保护、32k 训练废弃2023-06-18v2 的 32k/48k 预训练、超长训练集 MiniBatch-KMeans、ONNX 导出2023-08-13RMVPE 全链路集成、A 卡/I 卡 DirectML 支持、大批 bug 修复2023-10-06实时变声 GUI 参数热更新/懒加载、推理性能与低音提升下文按时间正序逐版本拆解并在各小节中补充源码级佐证保证日志条目都能对应到仓库里的真实实现。2023-04-09训练效率基线修复与显存利用优化该版本是日志中最早期的一次性能基建更新围绕训练速度与稳定性展开GPU 利用率显著提升官方日志描述 A100 从 25% 提升至约 90%、V100 从 50% 提升至约 90%、2060S 至 85% 左右、P40 至 95% 左右训练速度显著提高。这类数字属于项目官方声明可作为理解迭代动机的参考。batch_size 语义修正总 batch_size 改为每张 GPU 的 batch_size避免多卡训练时按卡数累加导致语义混乱。total_epoch 上限解锁最大 epoch 限制从 100 提升至 1000默认值从 10 提升至 20。ckpt 提取与推理修复修复 ckpt 处理时是否带音高f0识别错误导致的异常推理。分布式训练保存修复修复多 rank 分布式训练时每个 rank 各保存一次 ckpt 的问题。特征与静音修复特征提取阶段加入 nan 特征过滤修复静音输入/输出产生随机辅音或噪声的问题老模型需用新数据集重训。这些修复在源码中有清晰的延续痕迹。例如 configs/config.py 的device_config()会读取显卡名与显存对包含 16且非 V100、P40、P10、1060/1070/1080 等型号强制切换 FP32 并改写训练配置同时gpu_mem 4时还会下调preprocess_per。也就是说日志中针对不同显卡放宽/收紧精度限制的策略正是通过这段运行时显存探测逻辑落地的。2023-04-16 与 2023-04-28实时变声 GUI 诞生、语言支持与 faiss 索引升级实时变声迷你 GUI2023-04-16 起仓库新增本地实时变声迷你 GUI双击 go-realtime-gui.bat或运行 gui_v1.py即可启动。该模块使用 FreeSimpleGUI sounddevice 实现低延迟音频采集/回放其中Harvest进程在子进程中以fs16000、f0_floor50、f0_ceil1100、frame_period10调用pyworld.harvest计算实时音高并通过跨进程队列传递结果避免阻塞主流程。训练与推理的低音友好改造两个直接相关的音频处理改动50Hz 以下频段滤波训练与推理均对 50Hz 以下频段进行过滤去除无意义的次声能量。pyworld 最低音高下限 80 → 50此前 pyworld 提取 f0 的默认下限为 80Hz导致 50–80Hz 之间的男声低音哑掉。将下限调至 50Hz 后低音男声不再丢失。源码中这一默认值被固化在多个 F0 预测器中例如 HarvestF0Predictor.py 与 PMF0Predictor.py 的构造函数默认参数均为hop_length512, f0_min50, f0_max1100。可见低音保护不是日志中的一次性补丁而是贯穿训练与推理共用的 F0 提取基线的工程决策。WebUI 多语言与显卡识别修正WebUI 支持根据系统区域设置自动切换语言当时支持 en_US、ja_JP、zh_CN、zh_HK、zh_SG、zh_TW不支持的 locale 默认回退 en_US这一套多语言机制如今已演化为仓库 i18n/ 目录下十余种语言的 JSON locale 体系。同时修复了部分显卡识别失败如 V100-16G、P4 识别异常与上一节所述 configs/config.py 中按torch.cuda.get_device_name()判断精度的逻辑直接相关。faiss 索引升级与 total_npy 解绑2023-04-28 版本将 faiss 索引设置升级为速度更快、质量更高的配置并取消了 total_npy 依赖——后续分享模型不再需要额外填写 total_npy 文件。此外还解锁了 16 系显卡限制、为 4GB 显存 GPU 提供 4GB 推理配置修复了部分音频格式下 UVR5 人声伴奏分离的 bug并让实时变声迷你 GUI 支持非 40k 与非不懈怠lazy音高模型。这套索引方案的当前形态可参考 tools/infer/train-index-v2.py它使用faiss.index_factory(768, IVF%s,Flat)构建倒排索引、nprobe1、按 8192 条批量 add并用16 * sqrt(N)计算簇数——这正是速度更快诉求下的具体实现。2023-05-13 与 2023-05-14harvest 音高缓存、音量包络对齐与小模型周期保存检索与推理体验的细节打磨2023-05-13 的更新重点在减少重复劳动清理一键包内旧版本 runtime 残留的lib.infer_pack与uvr5_pack冗余代码修复训练集预处理中的伪多进程 bug为 harvest 音高识别增加中值滤波半径调节选项可削弱哑音现象导出音频支持后处理重采样训练相关n_cpu进程数的适用范围从仅 f0 提取扩展为数据预处理 f0 提取WebUI 自动检测logs文件夹下的 index 文件并提供下拉列表tab 页新增常见问题解答FAQ对相同路径的输入音频引入音高缓存。音高缓存的引入动机很实际使用 harvest 提取 f0 时整条 pipeline 会经历漫长且重复的音高提取过程若不缓存用户实验不同音色、索引与中值滤波半径参数时每次首次推理后的等待都非常痛苦。缓存命中后可显著改善参数实验这一典型 RVC 使用场景的响应速度。音量包络对齐与小模型按周期保存2023-05-14 引入的核心特性之一是音量包络对齐输入混合用输入音频的音量包络去混合或替换输出的音量包络可缓解输入静音但输出出现小幅度噪声的问题。日志同时给出明确的使用限制——输入音频背景底噪较大时不建议开启且默认不开启音量包络参数值为 1 可视为未开启并在此版本支持了按指定频率保存提取出的小模型当你想对比不同 epoch 下的推理效果、又不愿保存全部大 checkpoint 并反复手工执行 ckpt 处理时该功能非常实用。其他变更包括通过设置环境变量解决服务端开启全局代理导致的浏览器连接错误开始支持 v2 预训练模型当时仅公开 40k 版本测试另两个采样率尚未训练完全推理前限制超过 1 的过大音量微调训练集预处理参数。2023-05-28UVR5 人声分离扩展、呼吸/清辅音保护与 v2 化过渡新增 v2 的 Jupyter Notebook 训练教程、韩文 changelog并补充部分环境依赖增加呼吸、清辅音、齿音保护模式改善高音域/气息音的音色还原支持 crepe-full 音高识别模式完整分辨率版本UVR5 人声伴奏分离新增去延迟de-echo模型与 MDX-Net 去混响模型并增加 HP3 人声提取模型CN 日志细节索引文件名增加版本与实验名称便于多实验管理人声伴奏分离与推理批量导出均增加音频导出格式选项v1 32k 模型训练自此废弃。从仓库目录可看到该生态的落地痕迹UVR5 相关的预训练权重清单存放于 assets/uvr5_weights/对应的推理后端位于 infer/modules/uvr5/含 mdxnet、vr 等实现配置模板则在 infer/lib/uvr5_pack/lib_v5/modelparams/ 下以 JSON 形式提供数十种不同规格的声学参数。2023-06-18v2 预训练扩充、超长训练集自动 K-Means 与 ONNX 导出该版本再次推进 v2 化并引入应对大规模数据的能力v2 新增32k 与 48k两个采样率的预训练模型对应的模型配置文件见 configs/v2/32k.json 与 configs/v2/48k.jsonv1/v2 各采样率 JSON 统一由 configs/config.py 的version_config_list管理并同步到configs/inuse/修复非 f0 模型的推理报错超过一小时的训练集在建立索引阶段自动执行 MiniBatch-KMeans先缩小特征规模再执行索引训练/加入/查询显著加速超大特征库的处理附送一个人声转吉他的玩具项目Hugging Face Space 实验数据预处理阶段自动剔除异常的过短切片WebUI 新增ONNX 导出选项卡相关导出入口位于 infer/modules/onnx/ 与 tools/export_onnx.py。关于 K-Means 缩容仓库中的 tools/infer/train-index-v2.py 给出了明确实现当拼接后的特征数组行数超过2e5时使用MiniBatchKMeans(n_clusters10000, batch_size256*n_cpu, compute_labelsFalse, initrandom)将特征收敛为 1 万个聚类中心再做索引这正是 changelog 中索引训练、加入和查询更快的工程含义。值得关注的失败实验记录官方日志难能可贵地记录了被否定的技术路线特征检索增加时序维度——无效特征检索增加 PCA 降维——数据量大时可用 K-Means 缩小数据量数据量小时降维耗时反而超过省下的匹配耗时训练阶段在音高、gender、eq、噪声等维度做随机数据增强——无效接入小型声码器如 Vocos-RVC——效果变差。同一批 todolist 中多个条目被标记删除并由 RMVPE 取代详见下一节。这些记录属于官方的内部实验结论可作为理解 RVC 检索/训练设计取舍的背景而非普适性的方法论结论。2023-08-13RMVPE 音高提取全链路集成与 A 卡/I 卡加速这是日志中分量最重的一次更新拆分为常规 bug 修复与重点更新两部分。常规 bug 修复模型保存频率的最小总 epoch 数改为 1最小总轮数下限调整为 2修复不使用预训练模型时的训练报错伴奏人声分离完成后及时清理显存faiss 保存路径由绝对路径改为相对路径便于目录迁移支持路径含空格训练集路径与实验名称均不再报错filelist 取消强制 UTF-8 编码提升对非标准文件名/元数据的兼容性解决实时变声中开启 faiss 索引导致 CPU 占用极高的问题实时链路对索引查询的 CPU 开销非常敏感。重点更新RMVPE 与 DirectML官方日志宣布训练出当时的开源人声音高提取模型RMVPE并用于 RVC 的训练、离线/实时推理同时支持PyTorch / ONNX / DirectML三种后端相比 crepe-full其更快且资源占用更小、低音效果更好README 中称其根绝哑音问题通过pytorch-dml支持 AMD 显卡与 Intel 显卡的1实时变声、2推理、3人声伴奏分离训练暂未支持 DML会切换为 CPU 训练并借助onnx_dml支持 RMVPE 在 GPU 上的推理。RMVPE 在仓库中有多处落地证据推理权重路径assets/rmvpe/rmvpe.pt与音频级推理入口定义于 infer/lib/rmvpe.py训练数据侧分别有 CUDA 版 extract_f0_rmvpe.py 与 DirectML 版 extract_f0_rmvpe_dml.py二者都加载assets/rmvpe/rmvpe.pt并调用model_rmvpe.infer_from_audio(x, thred0.03)只是推理设备不同在实时 GUI gui_v1.py 中f0method 的可选项已扩展为pm / harvest / crepe / rmvpe / fcpe说明实时链路同样受益于 RMVPEDirectML 的运行时切换逻辑位于 configs/config.py当传入--dml参数时程序会检测onnxruntime的 CUDA/DirectML DLL 存在情况在onnxruntime-cuda与onnxruntime-dml之间做目录重命名以切换推理后端并把 torch 设备指向torch_directml.device(...)、强制 FP32。2023-10-06实时变声 GUI 体验跃迁与低音进一步强化此版本围绕实时变声做了体验与性能的双重升级CN 日志信息更细参数热更新调整参数无需中止并重启会话界面参数即时生效懒加载模型已加载过的模型无需重复加载新增响度因子音量包络参数使输出响度向输入音频靠近优化自带降噪效果与处理速度并大幅优化推理速度继续提升 RMVPE 音高提取算法效果对男低音的提升更为明显优化推理界面布局。注意日志特别强调输入输出设备应选择同种类型例如都选 MME 类型否则实时变声可能出现设备格式不匹配的问题。仓库 README.md 也披露了实时链路整体延迟目标已实现端到端约 170ms若使用 ASIO 输入输出设备可低至约 90ms但高度依赖声卡驱动支持。若要运行该界面直接双击仓库根目录的 go-realtime-gui.bat 或运行 gui_v1.py 即可。工程方法论启示被否决的路线与后续计划纵观整份 changelog最值得借鉴的是它保留了完整的取舍过程crepe、半精度 crepe、多进程 harvest 等 todo 条目最终都被 RMVPE 标记取代时序检索、PCA 降维、训练期随机增强等实验被明确标记无效并给出原因。这说明 RVC 的架构演进hubert 特征 top1 faiss 检索 VITS 解码 多种 f0 前端是经过大量对比实验筛选出的稳定组合而非功能堆叠。日志末尾的Future Plans也基本可以在后续版本与仓库中对应到实现按 epoch 保存小模型2023-05-14 已实现、推理时向指定路径额外导出 mp3导出格式选项在 2023-05-28 落地、多人训练选项卡至多 4 人、收集呼吸 wav 修正呼吸电音问题、以及以更大歌声训练集扩充底模等长期规划。总结如何把 changelog 变成上手路径如果你希望通过本仓库亲自复现这套能力推荐的阅读/使用顺序为先读 README.md 了解环境配置N 卡、A 卡/I 卡 DML、ROCm、IPEX 对应不同的依赖文件与预模型清单用官方演示 NotebookRetrieval_based_Voice_Conversion_WebUI.ipynb 与 v2 版本走通训练-推理全流程按需查阅 docs/en/faq_en.md、docs/cn/faq.md 及各语言 FAQ 排查典型问题对照本文提到的源码路径深入理解细节训练配置见 configs/v2/48k.json 等 JSONf0 前端见 infer/lib/infer_pack/modules/F0Predictor/索引构建见 tools/infer/train-index-v2.py实时 GUI 见 gui_v1.py。本文所依据的原始更新日志位于 docs/en/Changelog_EN.md中文对照见 docs/cn/Changelog_CN.md仓库其余语言版本的 Changelog 亦可在 docs/ 下找到。理解版本演进之后你会发现 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创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表