Retrieval-based-Voice-Conversion
基于 VITS + HuBERT 的开源声音转换库,通过 Top-K 检索增强技术实现高保真音色模仿
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于 VITS + HuBERT 的开源声音转换库,通过 Top-K 检索增强技术实现高保真音色模仿
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
深夜,一位独立游戏开发者正在为他的像素风RPG配音。他录制了一段男声旁白,但总觉得少了点沧桑感——他更希望呈现一位历经沧桑的老船长。与此同时,一位音乐制作人在网上找到了一段清澈的女声人声采样,想把它融合进自己的电子音乐,但又不想被原唱的音色束缚。
在传统工作流中,他们面临两个选择:要么花大价钱请配音演员,要么用Adobe等商业软件进行复杂处理。但现在,有了RVC(Retrieval-based Voice Conversion)——一个基于深度学习的声音转换开源工具包,任何人都可以用自己的声音样本,训练出能够精确模仿目标音色的AI模型,将任意音频转换为指定声音,而不只是机械地调节音高和音量。
图1:RVC 核心推理流程
输入音频 → HuBERT 内容编码 → Top-K 检索 → VITS 解码 → 输出音频
RVC 的全称是 Retrieval-based Voice Conversion,中文译为「基于检索的声音转换」。它的核心技术源自 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)——一个结合了变分推理和对抗学习的端到端语音合成框架。
RVC 由 RVC-Project 团队开发和维护,采用 MIT 开源协议。该项目经历了从 v1 到 v2 的架构升级:v1 版本基于 256 维 HuBERT 特征和 TextEncoder256 解码器,支持 32k/40k/48k 三种采样率;v2 版本则升级到 768 维 HuBERT 特征(TextEncoder768)和更大的模型容量(768 hidden channels),采样率扩展至 32k 和 48k,生成质量更精细。此外,v2 还引入了对非重采样输出的支持,可在保持原始采样率的同时进行声音转换。
从 GitHub 的 commits 历史来看,该项目持续活跃更新,最近一次提交为 2026 年 6 月 20 日,代码库从早期版本逐步演进,资产下载脚本也从手动流程发展为自动化的 assets-download.sh。
如果把声音转换比作翻译工作,RVC 的处理流程就像一位精通多国语言的译员:先听懂原文(内容编码),再用地道的目标语言表达出来(检索+合成)。
第一步:听懂——HuBERT 内容编码器
HuBERT(Hidden-Unit BERT)是 Facebook 提出的自监督语音表示学习模型。RVC 使用其变体 ContentVec,将任意说话人的音频转换为说话人无关的内容特征——本质上是一串数字向量序列,编码了语音的音素、语调、情感等语义信息。与传统方法(如 MFCC、F0 特征)相比,HuBERT 特征能更准确地捕捉语音的细粒度差异。
在 RVC 的实现中,HuBERT 模型通过 JIT 编译优化推理速度(rvc/lib/jit/get_hubert.py),避免重复初始化开销。同时,项目支持多种 F0 预测算法供用户选择:PM(倒谱法,速度快)、Harvest(精度高)、Crepe(基于神经网络的精确提取)和 RMVPE(重神经网络预测)。
第二步:检索——Top-K 相似度匹配
这是 RVC 与传统 So-VITS 的核心区别。项目将目标说话人的所有音频特征预先构建为向量索引(.index 文件)。推理时,系统在索引中检索与当前输入最相似的 Top-K 个特征片段,用这些相似片段的上下文信息辅助生成。这一设计显著提升了音色相似度和自然度,因为模型不只是「猜」一个输出,而是「参考」真实的高质量样本。
索引构建在训练阶段完成,通过 faiss-cpu 库实现高效的向量相似度搜索。
第三步:模仿——VITS 解码器合成
检索到的特征作为条件输入 VITS 解码器,生成目标音色的音频波形。VITS 的架构核心是「变分自编码器 + 对抗训练」:编码器将内容特征映射到隐变量空间,解码器从中重建音频波形,判别器则确保生成音频的真实性。rvc/lib/infer_pack/models.py 中定义了两种解码器架构:
SynthesizerTrnMs256NSFsid:v1 版本,256 维特征SynthesizerTrnMs768NSFsid:v2 版本,768 维特征同时,代码支持 ONNX 导出(rvc/lib/infer_pack/models_onnx.py、rvc/modules/onnx/export.py),这意味着训练好的模型可以在无 PyTorch 环境下运行推理,大幅降低部署门槛。
1. Python Library(核心)
这是 RVC 的本体——一个纯 Python 包,通过 pip 安装即可使用。项目以 library 和 API 形式提供,开发者可以直接集成到自己的应用中:
from rvc.modules.vc.modules import VC
from pathlib import Path
vc = VC()
vc.get_vc("model.pth")
tgt_sr, audio_opt, times, _ = vc.vc_inference(1, Path("input.wav"))
推理支持丰富的参数调节:f0_up_key 控制音高偏移(半音数),f0_method 选择 F0 提取算法,index_rate 控制检索强度(决定音色相似度),filter_radius 减少气息声,rms_mix_rate 调节音量包络,protect 保护无声辅音避免伪影。
2. CLI 命令行
适合自动化脚本和批量处理:
rvc infer -m model.pth -i input.wav -o output.wav -fu 12 -fm rmvpe
同时提供模型下载、训练、UVR5 人声分离等全套 CLI 子命令,覆盖从数据预处理到模型训练再到推理的完整流程。
3. REST API
通过 FastAPI + Uvicorn 启动 HTTP 服务(rvc-api 命令),支持以 blob 或 JSON 形式返回推理结果,便于集成到 Web 应用或作为微服务调用:
rvc-api # 启动服务,监听 8000 端口
curl -X POST http://127.0.0.1:8000/inference -F 'modelpath=model.pth' -F 'input=audio.wav'
Dockerfile 采用两阶段构建(multi-stage):第一阶段从 alpine 镜像下载 HuggingFace 仓库中的预训练模型和 UVR5 权重;第二阶段使用 python:3.10.14-bullseye 安装 Poetry 依赖,最终容器启动 poetry run poe rvc-api 提供 API 服务。
RVC 的安装非常简单(pip install git+...),但实际运行有较高的硬件门槛。根据依赖分析,torch、fairseq、faiss-cpu、librosa、soundfile、av(FFmpeg 绑定)等库的组合,使得 GPU 是推荐配置——实测至少需要 6GB 以上显存的 NVIDIA 显卡才能流畅推理,否则生成速度极慢。
CPU 模式理论上可行,但生成一段几秒的音频可能需要数分钟,实际使用几近不可用。此外,assets 下载(hubert_base.pt、rmvpe 模型等)需要从 HuggingFace 通过 Git LFS 拉取,总计约数百 MB 到 1GB 不等,网络质量也直接影响部署体验。
注意:该项目是 RVC 的核心 Library,本身不包含 Web UI。如需图形界面,应使用同一团队的 Retrieval-based-Voice-Conversion-WebUI 项目(支持浏览器操作、实时变声等更丰富功能)。
版权争议:RVC 本质上是通过「听」目标声音样本学习并「模仿」音色,这一能力引发了广泛的伦理和法律讨论。尤其是当被用于模仿特定公众人物声音或歌手音色时,可能涉及肖像权和声音权的侵犯。项目维护团队明确要求用户遵守当地法律法规,且明确反对将其用于任何形式的欺骗或未经授权的商业用途。
质量瓶颈:虽然 Top-K 检索显著提升了生成质量,但在以下场景中表现仍不稳定:超低采样率输入(8kHz 以下)、强背景音乐混叠、极端音高偏移(超过 2 个八度)。此外,实时变声(低延迟场景)仍是挑战,需要配合 WebUI 的专项优化。
资源依赖:v2 版本的模型参数量相比 v1 有明显增加,高质量推理对显存的需求也随之提升。对于没有 GPU 的用户,社区提供了 WebUI 的在线 demo 和云端运行方案,但免费选项有限。
RVC 的出现和普及,深刻改变了 AI 声音处理的生态格局。在它之前,高质量的声音转换几乎是专业音频工程师和商业软件的专属领地;RVC 之后,任何拥有少量目标声音样本的人,都可以在本地训练自己的声音模型,将任意语音转化为目标音色。
从 GitHub 趋势来看,基于 RVC 衍生的 WebUI、数字人、直播变声应用已形成庞大的开源生态。据统计,全球范围内已有数千个基于 RVC 变声的独立项目,覆盖游戏本地化、有声书制作、Vtuber 直播、音乐 remix 等场景。
RVC 的技术贡献也值得关注:它证明了「检索增强生成」在语音合成领域的有效性——不是单纯依靠更大的模型或更多的训练数据,而是通过将目标域的先验知识(索引)引入推理过程,实现更精准的音色重建。这一思路后来也被多个语音合成框架借鉴。
项目增长态势:尽管当前仓库(core library)stars 约 594 颗看似不高,但这是精干的算法核心库。真正被广泛使用和传播的是 WebUI 版本,其影响力远超数字本身。
对于大多数用户,推荐使用 Docker 部署 RVC API 服务:
git clone https://github.com/RVC-Project/Retrieval-based-Voice-Conversion
cd Retrieval-based-Voice-Conversion
./docker-run.sh
Dockerfile 会自动下载所有必要资源(hubert_base.pt、rmvpe 模型、UVR5 权重),启动后服务监听 8000 端口。如需 GPU 加速,需在宿主机安装 NVIDIA Container Toolkit 并在 docker run 时添加 --gpus all 参数。
本地 pip 部署适合有深度定制需求的高级用户,需要手动管理 Python 3.10+ 环境、PyTorch CUDA 版本匹配、以及通过 rvc init 和 rvc dlmodel 下载资产。