前言
我之前配置虚拟V玩时,使用了RVC + 虚拟声卡(VB-CABLE)+ OBS这套方案
剧透一下,我正在开发不需要摄像头的自主驱动L2D程序,思路根据"NeuroSama"推测实现模型控制方案
其配置的过程很有趣,运行效果也不错,我将详细记录下作为分享的blog,感兴趣的话完全可以参考学习
这篇按实际使用顺序整理:先下载软件和模型,完成本地耳机试听,再通过虚拟声卡接入OBS或语音软件
我的运行环境
我使用的是机械革命无界系列笔记本,32GB内存,核显为AMD Radeon 880M
此前通过OCulink外接RTX 5060 8GB运行RVC,保留了对应的NVIDIA 50系整合包
| 项目 | 本地环境 |
|---|---|
| 操作系统 | Windows 11 25H2 |
| 整合包目录 | RVC20260723Nvidia50x0/RVC20260718Nvidia50x0 |
| Python | 包内runtime,版本3.12.10 |
| PyTorch | 2.7.1+cu128 |
| CUDA运行时版本 | 12.8 |
| 保存的音色模型 | bjx8.pth |
| 索引设置 | 路径为空,Index Rate为0 |
| 音高算法 | rmvpe |
使用这份NVIDIA包前,确认系统已识别对应的NVIDIA显卡;只使用核显时,应另选AMD / Intel对应包
RVC的工作机制
RVC(Retrieval-based Voice Conversion)是一套开源音色转换工具,提供音频文件转换和实时变声界面

上图是官方项目的仓库卡片
下载软件时进入这个仓库的Releases,音色模型会在后文单独下载
实时模式会读取麦克风音频,提取语音特征,再通过音色模型生成转换后的声音
说话节奏、发音和麦克风输入质量都会影响结果
本文主要配置两条链路:
- 本地试听:麦克风输入RVC,转换结果输出到耳机
- 录音与语音通信:通过虚拟声卡,把转换结果作为其他软件的麦克风输入
一、下载整合包与环境检查
官方整合包
在RVC官方Releases中找到Complete package / 完整包
本文使用的版本对应2.3.260718发布页,下载时按显卡选择:
| 硬件平台 | 整合包下载 |
|---|---|
| NVIDIA RTX 50系 | RVC20260718Nvidia50x0.7z |
| NVIDIA RTX 50系以前的显卡 | RVC20260718Nvidia.7z |
| AMD / Intel显卡 | RVC20260718AMD_Intel.7z |
也可以在官方Hugging Face文件列表中查找文件
下载较慢时,查看发布说明中的备用入口
GitHub页面底部的Source code (zip)是源码包,需要另外配置运行环境
直接使用软件应下载上表中的完整包
解压与启动
将压缩包完整解压到英文路径
本文这版GUI会检查模型路径中的中文字符,模型文件名也建议使用英文
我的实际程序根目录是:
D:\LiveStreamingImage\RVC20260723Nvidia50x0\RVC20260718Nvidia50x0\
外层目录名称和内层名称不同,启动时以包含runtime和启动脚本的内层目录为准:
RVC20260718Nvidia50x0/
├── go-realtime_gui.bat # 实时变声界面
├── go-webui.bat # 网页端音频转换与训练
├── realtime_gui.py
├── runtime/ # 内置 Python 环境
├── assets/ # 基础资源与音色模型
└── configs/
└── config.json # 保存的实时 GUI 参数
双击go-realtime_gui.bat
首次启动和加载模型需要等待,控制台窗口保持开启,运行异常时查看底部报错

图中选中的是实时变声启动脚本;下方的go-webui.bat用于网页端音频转换和训练
启动脚本使用的是包内runtime\python.exe,无需先向系统Python安装依赖
CUDA环境检查
NVIDIA用户可以在整合包根目录打开PowerShell,执行:
.\runtime\python.exe -I -c "import torch; print('torch:', torch.__version__); print('cuda:', torch.version.cuda); print('available:', torch.cuda.is_available())"
torch和cuda显示安装版本,available表示这份环境当前能否访问CUDA
AMD / Intel路线跳过这项CUDA检查
二、模型下载与文件准备
我使用的原版整合包包含HuBERT、RMVPE等基础资源,音色模型只附带kikiV1,可以先用它测试变声,其他音色需要自行下载
| 文件类型 | 常见文件 | 作用 |
|---|---|---|
| 基础资源 | HuBERT相关文件、rmvpe.pt |
提取语音特征与音高 |
| 推理模型 | *.pth |
音色转换权重 |
| 检索索引 | *.index |
检索配套特征,参与音色转换 |
| 训练检查点 | G_*.pth、D_*.pth |
保存训练状态,使用实时GUI时应寻找导出的推理模型 |
从哪里下载音色
可以从Hugging Face的RVC模型搜索页开始,搜索RVC + 音色名称或RVC + 中文
创作者的作品介绍、GitHub页面也常会提供模型下载地址

图中是在Models列表中搜索RVC的结果
点击仓库名称进入模型页面,再找Files and versions下载文件;搜索结果中也有模型合集和基础资源,需要阅读仓库说明后选择
在Hugging Face上:
- 阅读模型说明,确认适配RVC,并查看版本、训练语言与试听
- 打开Files and versions,找到推理用
.pth和配套.index - 使用文件旁的下载按钮,或进入文件详情页下载
- 如果下载的是
.zip或.7z,先解压,再选择其中的模型文件
下载时最好保留原始发布页,后续查找索引、版本说明和更新会方便一些
我的模型目录
本地assets/weights中,kikiV1.pth是原版附带的模型,bjx8.pth、azuki.pth、beijixing.pth等其他模型都是我后来自行下载的,当前配置保存的是bjx8.pth
部分模型带有同名索引,例如:
assets/
├── weights/
│ ├── bjx8.pth
│ ├── guanguanV1.pth
│ ├── keruanV1.pth
│ └── kikiV1.pth
└── indices/
├── guanguanV1.index
├── keruanV1.index
└── kikiV1.index
上面的目录展示的是添加自下载模型后的本地文件,原版只有kikiV1音色模型及其配套索引,下载其他音色时按自己的文件名选择即可
实时GUI中点击选择.pth文件和选择.index文件,分别指定路径
索引选择窗口默认打开logs,可以手动切换到assets/indices
无索引推理
我的bjx8.pth配置没有选择索引,Index Rate为0
因为我的本地realtime_gui.py加过索引可选补丁,路径为空时会自动关闭检索,因此能够只加载.pth
如果使用的GUI仍要求填写索引,需要获取模型配套的.index,或使用支持无索引的版本
索引应与模型配套,不要混用其他音色的文件
有配套索引时,可以从较低的Index Rate开始,逐步增加并比较输出效果
基础资源缺失
如果控制台提示缺少HuBERT或RMVPE,先检查是否完整解压
这版使用的路径为:
assets/
├── hubert_base/
│ ├── config.json
│ ├── preprocessor_config.json
│ └── pytorch_model.bin
└── rmvpe/
└── rmvpe.pt
缺失文件可从官方基础模型仓库补充
旧版本可能采用hubert_base.pt单文件结构,按所用版本的README和报错路径处理
三、本地实时变声与参数
接入OBS前,先测试:
物理麦克风 → RVC 实时变声 → 耳机
初次测试设置

首次使用可以按下面的设置开始:
| 参数 | 初始设置 |
|---|---|
| 模型 | 选择自己的推理.pth |
| 索引 | 配套.index;支持无索引时留空并将Index Rate设为0 |
| 设备类型 | 先试MME,输入输出保持同一类型 |
| 输入设备 | 物理麦克风 |
| 输出设备 | 耳机对应的播放设备 |
| 采样率 | 使用模型采样率 |
| 音高算法 | rmvpe |
| 音调 | 0,试听后调整 |
| 采样长度 | 0.25秒 |
| 淡入淡出长度 | 0.05秒 |
| 额外推理时长 | 2.5秒 |
| 响应阈值 | -60 |
| 工作模式 | 输出变声 |
点击开始音频转换,等待模型加载后说一段完整句子
需要比较原始输入时切换“输入监听”,完成后切回“输出变声”
参数调整
采样长度影响分块处理与延迟
先从0.25秒开始,稳定后逐步尝试0.15或0.10秒
如果出现断续或爆音,先回调采样长度,再检查设备和计算负载
端到端延迟还包含声卡缓冲及后续软件处理时间
音调以半音为单位,+12为升高一个八度,以自己的输入声线和目标模型为准,逐步调整
响应阈值控制低音量片段的截断
数值从-60提高到-40会截掉更多轻声片段
发音开头丢字时,应把阈值往更低的方向调,并检查麦克风输入电平与降噪
本地代码在-60时跳过这段阈值截断,已经设为-60后,应优先排查其他环节
调整时每次只改一项,用同一句话录音比较
四、安装VB-CABLE虚拟音频通道
本地试听正常后,通过虚拟声卡把变声输出传递给其他软件
- 前往VB-Audio官网下载Windows版VB-CABLE
- 解压后按包内说明,以管理员身份运行对应的安装程序
- 安装完成后重启电脑
系统音频列表中会出现:
- 播放设备:
CABLE Input (VB-Audio Virtual Cable) - 录制设备:
CABLE Output (VB-Audio Virtual Cable)
路由关系如下:
物理麦克风
|
v
RVC 实时变声
|
v
CABLE Input ← RVC 的输出设备
|
v
CABLE Output ← OBS / 语音软件的输入设备
在RVC中将输出设备从Senary Audio播放设备或耳机改为CABLE Input
如果列表中没有新设备,点击“重载设备列表”,必要时重启GUI
更改后,音频进入虚拟声卡,耳机不再直接接收这一路声音
需要在OBS中设置监听
五、接入OBS与语音软件
OBS音频输入
- 在OBS“来源”面板添加音频输入采集,命名为“RVC变声”
- 设备选择
CABLE Output (VB-Audio Virtual Cable) - 对麦克风说话,观察这一路的电平变化
- 检查全局“麦克风/辅助音频”和其他麦克风来源,关闭重复采集的物理麦克风
OBS实时监听
需要同时录制和试听时:
- 在OBS音频设置的高级选项中,将“监听设备”设为物理耳机
- 打开混音器的“高级音频属性”
- 将“RVC变声”的音频监听设为监听并输出
不需要自己试听时,使用“监听关闭”,录制输出仍然保留
“仅监听(输出静音)”会关闭这一路的录制输出
如果启用了“桌面音频”,检查它是否再次采集耳机的监听声
出现重复声音时,关闭重复来源,或将桌面采集与监听设备分开
监听设备不要设为CABLE Input,以免音频重新进入同一虚拟通道
通信与会议软件
在支持选择麦克风的软件中,将输入指定为CABLE Output
如果软件跟随系统默认输入,在Windows中调整默认录制设备及默认通信设备,再重启软件测试
具体入口依软件版本而定
使用期间保持RVC转换运行
结束后若要恢复原声通话,记得将目标软件的麦克风切回物理设备
六、常见问题排查
查看控制台耗时

这张日志图中,“推理耗时”约为**0.39至0.52秒**
本地代码会在音频回调中计时,因此这里包含该次回调内的音频处理过程;“SOLA偏移”是片段拼接时的对齐偏移
判断能否持续实时处理,需要把耗时与同一次运行的采样长度比较
如果运行时采样长度为0.10秒,而处理一块音频需要约0.4秒,就无法持续跟上输入,需检查计算设备并调整参数
排查对照表
| 异常现象 | 优先排查项 |
|---|---|
| 启动脚本报错 | 检查完整解压、路径和控制台末尾信息 |
| CUDA不可用 | 检查显卡是否连接并被系统识别,再检查驱动及包内环境 |
| CUDA架构不兼容 | 检查整合包是否适配显卡型号 |
| 显存不足 | 关闭其他占用显存的程序,适当缩短额外推理时长后重新测试 |
| 索引加载失败 | 检查模型与索引是否配套;支持无索引时关闭检索后单独测试 |
| 未找到虚拟声卡 | 确认驱动安装和重启完成,重载设备列表 |
| 试听有声音,下游无声 | 核对RVC输出为CABLE Input,下游输入为CABLE Output |
| 原声与变声重叠 | 检查物理麦克风是否被额外采集 |
| 重复监听或回声 | 检查桌面音频是否采集监听输出,避免监听回环 |
| 声音断续、爆音 | 回调采样长度,检查计算负载、设备采样率与驱动 |
| 轻声或开头丢字 | 检查阈值、输入电平及降噪 |
| 发音失真 | 检查变调幅度,检查模型训练语言、输入质量和索引匹配 |
七、VST插件路线
本地还保存了RVCRealtime-Win64VST/RVCRealtime-Win64-20260802插件包,包含VST2、VST3和Studio One使用说明
插件需要已有的RVC整合包与Python环境
已有Studio One工作流程时可以采用这条路线;日常语音和OBS变声直接使用GUI,配置环节更少
因为我也没有具体使用过Studio One,所以没有详细说明
留言
评论区暂未开放;可先通过 RSS 或「关于」页联系。