Realtime Voice Changer for RVC 实时变声客户端实战教程:从启动到参数调优(v1.5.3.3)
2026/9/20 21:43:53 网站建设 项目流程
  • 人工智能
  • 语音
  • 模型推理服务
  • 深度学习

【免费下载链接】voice-changer

リアルタイムボイスチェンジャー Realtime Voice Changer

项目地址:https://gitcode.com/gh_mirrors/vo/voice-changer
点击查看免费下载

本篇技术指南围绕开源仓库 voice-changer(Realtime Voice Changer)的 RVC 客户端使用教程展开,完整讲解从下载解压、启动 Launcher、选择 RVC 引擎,到加载模型、配置 Speaker / Converter / Device / Quality Control 等全部参数项的实战流程,并结合仓库源码(server/voice_changer/RVC/下的设置类、推理管线与模型槽生成器)说明每个参数背后的底层实现原理。读完本文,你将能够在本地或远程环境一键跑通 RVC 实时变声,并掌握buf / res延迟、index ratio、静音阈值、F0 检测器与模型融合等关键调优手段。

一、适用范围与背景概念

本应用是支持多种变声模型的实时语音转换客户端软件,本文档将讲解范围限定在 RVC(Retrieval-based-Voice-Conversion)模型的实时变声。为了表述清晰,本文沿用教程中的两个约定称呼:

  • original-RVC:指原版 Retrieval-based-Voice-Conversion-WebUI 项目(RVC-Project 社区维护),其训练产物约定存放在/logs/weights(模型权重)与/logs/your-experiment-name/total_fea.npy(特征文件)。
  • ddPn08-RVC:指由 ddPn08 创建的 RVC-WebUI 实现,其训练产物约定存放在/models/checkpoints(模型权重)与/models/checkpoints/your-model-name_index/your-model-name.0.big.npy(特征文件)。

无论是哪个来源训练出的 RVC 模型,都可以通过本客户端的 Model Setting 区域加载并进行实时转换。仓库中的RVCModelSlotGenerator(server/voice_changer/RVC/RVCModelSlotGenerator.py)会在加载模型时自动识别其来源:通过检查.pth检查点中的config长度、version字段与f0标志,区分 original-RVC 的 v1 / v2、ddPn08-RVC(webui)以及 voras_beta 等模型类型,并据此确定嵌入通道数(256 或 768)、HuBERT 输出层与是否使用 final projection。

二、前置准备与注意事项

  • 模型训练必须单独进行,本客户端只负责推理(实时变声),不包含训练功能。
    • 想自己训练模型,请参考 original-RVC 与 ddPn08-RVC 的训练工具。
    • 浏览器端录音应用(部署于 GitHub Pages)适合在浏览器里快速准备训练用语音素材。
    • 官方还发布了训练技巧(TIPS for training),训练前建议先阅读。

三、启动步骤

Windows 版

解压下载的 zip 文件后,运行start_http.bat即可。

Mac 版

解压下载文件后,执行startHttp.command。如果系统提示“无法验证开发者”,请按住 Control 键再次点击执行(或右键点击执行)。

远程连接时的注意事项

通过远程方式连接时,请使用将http替换为https.bat(Windows)或.command(Mac)启动文件,以保证通信加密。

控制台(Console)

运行.bat(Windows)或.command(Mac)文件后,会显示如下控制台界面,首次启动会从互联网下载运行所需的各种数据。根据网络环境不同,多数情况下需要等待 1~2 分钟。

启动器(Launcher)与选择 RVC

所需数据下载完成后,会出现如下 Launcher 界面。请在此界面中选择RVC进入 RVC 客户端。

Launcher 的这一“选择引擎”机制对应仓库前端组件client/demo/src/components/demo/010_Demo.tsx与各引擎的 GUI 定义文件;RVC 引擎的界面布局定义在 client/demo/public/assets/gui_settings/RVC.json 中,其中明确配置了 F0 检测器候选列表(dio / harvest / crepe)与 InputChunk 候选数值列表(8 到 2048 的 128 采样倍数)。

四、快速开始:选择设备并启动变声

启动后即可使用已下载的数据立即进行变声。在下图的 (1) 处选择麦克风与扬声器,然后按下 (2) 处的启动按钮。等待数秒数据加载后,变声即开始。

对于不熟悉操作的用户,建议在 (1) 处选择client device(客户端设备模式)来指定麦克风和扬声器(server device 模式的差异将在后文说明)。

五、GUI 布局与可折叠分区

通过 GUI 可配置的项目按下图所示分为若干分区。点击各分区标题即可展开 / 收起该分区。整体对应前端目录client/demo/src/components/demo/components2/下的101-3_SpeakerArea.tsx(音区设置)、101-2_IndexArea.tsx(索引/特征)、102-1_QualityArea.tsx(音质)、102-3_DeviceArea.tsx(设备)等组件,每个分区都是独立的配置单元。

六、标题栏与全局操作

标题栏上的图标均为链接:

图标作用
Octocat(GitHub 图标)跳转 GitHub 仓库
question(问号图标)打开使用手册
spanner(扳手图标)工具
coffee(咖啡图标)捐赠支持

此外标题栏还提供三个全局按钮:

  • clear setting:初始化全部配置,将参数恢复到默认状态。
  • reload:重新加载窗口。
  • re-select vc:返回 Launcher 启动器界面,可重新选择其他变声引擎。

七、Server Control(服务器控制)

start / stop

start启动服务器,stop停止服务器。实时变声的启停均由这里控制。

monitor(实时状态监视)

显示实时转换的状态,关键指标有三个:

  • vol:变声后的音量。
  • buf:单次截取音频片段的长度(毫秒)。缩短 Input Chunk 可以降低该数值。
  • res:对“Input Chunk + Extra Data Length”之和的数据进行转换所花费的时间。同时缩短 Input Chunk 与 Extra Data Length 可以降低该数值。

从发声到完成转换的延迟为buf + res。调节参数时应尽量保证 buf 时间大于 res 时间,以避免断音或卡顿。

需要注意:如果使用的是server device 模式,该监视画面不会在客户端显示,而是显示在服务器控制台一侧。

Switch Model(切换模型)

可以在已上传的模型中切换。模型名称下方的[]中显示该模型的信息,共 4 项:

  1. 模型是否考虑 f0(基频 / 音高):
    • f0:考虑音高(带 f0 模型);
    • nof0:不考虑音高(无 f0 模型)。
  2. 训练该模型时使用的采样率。
  3. 模型使用的特征通道数(256 或 768)。
  4. 训练模型时使用的客户端:
    • org:使用 original-RVC 训练的模型;
    • webui:使用 ddPn08-RVC 训练的模型。

从源码看,上述信息正是RVCModelSlotGenerator在加载时自动判别的结果:original-RVC v1 模型特征通道为 256、使用 HuBERT 第 9 层输出;v2 模型特征通道为 768、使用第 12 层输出且不使用 final projection;ddPn08-RVC 模型则读取检查点中的embedder_output_layerembedder_namespeaker_info等字段(见 server/voice_changer/RVC/RVCModelSlotGenerator.py)。

Operation(模型与服务器操作)

  • export onnx:导出 ONNX 模型。将 PyTorch 模型转换为 ONNX 模型有时可以提升推理速度。对应后端实现为RVC.export2onnx(),导出后文件写入/tmp目录(见 server/voice_changer/RVC/RVC.py)。
  • download:下载模型,主要用于获取模型融合(Lab)后的结果。

八、Model Setting(模型设置)

Model Slot

选择将模型放入哪个槽位(帧)。放入后,可在 Server Control 的 Switch Model 中切换使用。设置模型时可以选择“从文件加载”或“从网络下载”,两种方式的可用设置项不同:

  • file:选择本地文件加载模型。
  • from net:从互联网下载模型。

Model(.onnx 或 .pth)

仅在“从文件加载”时显示,为必填项。指定训练好的模型文件,支持 ONNX 格式(.onnx)与 PyTorch 格式(.pth):

  • 使用 original-RVC 训练的模型位于/logs/weights
  • 使用 ddPn08-RVC 训练的模型位于/models/checkpoints

加载时后端会按文件后缀判定是否为 ONNX(slotInfo.isONNX = slotInfo.modelFile.endswith(".onnx")),ONNX 模型通过读取模型元数据(metadata)中的embChannelsembOutputLayerf0samplingRate等字段完成识别(见 server/voice_changer/RVC/RVCModelSlotGenerator.py)。

index(.index)

仅在“从文件加载”时显示。这是将 HuBERT 提取的特征拉近训练数据的附加功能,需要与特征文件(.npy)成对使用:

  • 使用 original-RVC 训练时位于/logs/your-experiment-name/total_fea.npy
  • 使用 ddPn08-RVC 训练时位于/models/checkpoints/your-model-name_index/your-model-name.0.big.npy

从源码看,索引文件在管线创建时被加载为 Faiss 索引,并展开为big_npy全量特征矩阵供检索使用(见 server/voice_changer/RVC/pipeline/Pipeline.py)。

Select Model

选择“从网络下载”时显示的可下载模型列表。使用前请务必确认模型的许可条款(terms of use)链接。

Default Tune

输入变声默认音高偏移量。推理过程中也可以实时调整。设置参考值:

  • 男声转女声:+12
  • 女声转男声:-12

对应后端设置项tran,默认值为 12(见 server/voice_changer/RVC/RVCSettings.py),加载模型后由self.settings.tran = self.slotInfo.defaultTune写入(见 server/voice_changer/RVC/RVC.py)。

upload / select

  • upload:完成上述文件类设置后,点击使模型进入可用状态。
  • select:选择“从网络下载”并完成上方设置后,点击激活模型。

九、Speaker Setting(音区设置)

Tuning(音高微调)

调整自己声音的音高。设置参考值同样为:男声转女声 +12;女声转男声 -12。该值对应设置项tran,可在推理过程中随时修改。

index ratio(索引比率)

指定向“训练时使用的特征”偏移的比例。仅当 Model Setting 中同时设置了特征文件与索引文件时才有效:

  • 0:完全使用 HuBERT 的输出。
  • 1:完全还原为训练时的原始特征。

需要注意:index ratio 大于 0 时,每次转换都会执行特征检索,可能导致耗时变长。从源码看,只有当index is not None and big_npy is not None and index_rate != 0时才会执行 Faiss 检索,并以feats = retrieved * index_rate + (1 - index_rate) * feats的方式混合检索结果与原始特征(见 server/voice_changer/RVC/pipeline/Pipeline.py)。设置项indexRatio默认值为 0(见 server/voice_changer/RVC/RVCSettings.py)。

Silent Threshold(静音阈值)

音频转换的音量阈值。若输入 RMS 小于该值,则不进行变声转换,直接返回静音;此时转换流程被跳过,因此负载更低。从源码看,该判断位于推理入口:if vol < self.settings.silentThreshold: return np.zeros(convertSize) * np.sqrt(vol)(见 server/voice_changer/RVC/RVC.py)。对应设置项silentThreshold默认值为 0.00001(见 server/voice_changer/RVC/RVCSettings.py)。

补充说明:与silentThreshold同屏的还有一个源码级参数protect(默认 0.5),它控制音高估计失败时在“检索前特征”与“检索后特征”之间的混合比例,仅当protect < 0.5且启用索引检索时生效(见 server/voice_changer/RVC/pipeline/Pipeline.py)。

十、Converter Setting(转换器设置)

InputChunk Num(128 sample / chunk)

决定一次转换截取并处理多长的音频。数值越高转换效率越高,但 buf 值越大,转换开始前的最大等待时间越长(近似时间显示在buff:中)。GUI 中可选的候选值为 128 采样的整数倍:8、16、24、32、40、48、64、80、96、112、128、192、256、320、384、448、512、576、640、704、768、832、896、960、1024、2048(见 client/demo/public/assets/gui_settings/RVC.json)。

从源码看,单次转换的数据长度为inputSize + crossfadeSize + solaSearchFrame + extraConvertSize,且会向上取整对齐到 128 的整数倍(因为模型输出的 hop 尺寸会产生截断),见 server/voice_changer/RVC/RVC.py。其中crossfadeSizesolaSearchFrame用于前后片段的交叉淡化与波形相似对齐,以保证拼接平滑。

Extra Data Length

决定转换输入中包含多少“过去”的音频。过去的语音越长,转换精度越高,但 res 越长、计算耗时越大(由于 Transformer 是瓶颈,计算时间可能随该长度按平方增长)。对应后端设置项extraConvertSize,默认值为 1024 × 4 = 4096 个采样点(见 server/voice_changer/RVC/RVCSettings.py)。该值的详细讨论可查阅本项目 issue 追踪中的相关说明。

GPU

如果机器有 2 块或以上的 GPU,可在此选择推理所用的 GPU。对应设置项gpu(默认 -9999,表示自动选择),切换 GPU 时后端会重建整个推理管线(见 server/voice_changer/RVC/RVC.py)。

十一、Device Setting(设备设置)

在此选择client device 模式server device 模式。只能在变声停止时进行切换。两种模式的详细说明请参见 tutorials/tutorial_device_mode_ja.md(该教程有对应的日文与韩文版本)。

  • Audio Input:选择输入设备(麦克风)。
  • Audio Output:选择输出终端(扬声器)。

output record(输出录音)

仅在 client device 模式下显示。从按下 start 到按下 stop 之间的音频会被录制下来。注意:按下该按钮并不会启动实时变声;实时变声的启停由 Server Control 控制。此功能在仓库前端中由录音器相关组件实现,对应独立子项目recorder/目录下的录音应用。

十二、Lab(实验室:模型融合)

可在此进行模型融合(model merging)。为每个源模型设置成分比例(component amounts),系统会按照各模型成分比例合成一个新的模型。

从源码看,融合逻辑位于 server/voice_changer/RVC/modelMerger/MergeModel.py:加载各槽位的模型权重(torch.load),剔除enc_q编码器相关键后按strength归一化比例加权求和,并校验各模型权重键集合完全一致(不一致会直接报错Failed to merge models.),最终输出融合后的新模型权重文件。

十三、Quality Control(音质控制)

Noise Suppression(降噪)

浏览器内置降噪功能的开 / 关。开启后会在客户端侧先对输入麦克风信号进行噪声抑制,再送入服务器。

Gain Control(增益控制)

  • input:增大或减小输入到模型的音频音量,1 为默认值。
  • output:增大或减小模型输出音频的音量,1 为默认值。

F0Detector(基频检测算法)

选择提取音高的算法,GUI 中提供以下三种:

  • dio:轻量级,速度快,适合低延迟场景。
  • harvest:高精度,适合对音高准确性要求高的场景。
  • crepe:使用 GPU 的中等精度方案。

从源码看,以上候选列表定义在 client/demo/public/assets/gui_settings/RVC.json 中;而后端的检测器工厂 server/voice_changer/RVC/pitchExtractor/PitchExtractorManager.py 实际支持的算法更丰富,除dio / harvest / crepe外还包括crepe_tinycrepe_fullrmvpermvpe_onnxfcpe,未知类型会回退到dio。切换 F0 检测器时,后端会动态替换管线中的检测器实例而不必重建整个管线(见 server/voice_changer/RVC/RVC.py)。另需注意:后端RVCSettingsf0Detector的默认值是rmvpe_onnx(见 server/voice_changer/RVC/RVCSettings.py),与 GUI 下拉列表的默认项可能不同,实际生效值以后端设置为准。

Analyzer(实验性功能)

在服务器侧录制输入与输出:

  • 输入:麦克风声音原样发送到服务器并录制。可用于检查从麦克风到服务器的通信链路是否正常。
  • 输出:模型输出的数据在服务器侧录制。在确认输入正常后,可用于观察模型的实际表现。

十四、底层原理:一次实时变声的完整调用链

结合源码可以把一次实时变声拆解为如下流水线(对应 server/voice_changer/RVC/pipeline/Pipeline.py 的exec流程):

  1. 输入缓冲与预处理:客户端按 InputChunk 大小发送音频,后端将新数据与历史缓冲区拼接,并对齐到 128 采样整数倍,同时计算本段音量(RMS)用于静音判断(见 server/voice_changer/RVC/RVC.py)。
  2. 重采样到 16 kHz:RVC 模型内部世界以 16 kHz 处理,音频从模型采样率(如 48 kHz)重采样至 16 kHz(torchaudio.functional.resample)。
  3. 音高提取:若模型为 f0 类型,使用所选检测器(dio / harvest / crepe / rmvpe 等)提取基频pitch / pitchf,并按f0_up_key(即 Tuning / Default Tune)进行音高偏移。
  4. 特征提取:由嵌入器(HuBERT 系列,embedder)从音频中提取语义特征,输出层与通道数由模型槽信息决定(v1:第 9 层 256 通道;v2:第 12 层 768 通道)。
  5. 索引检索:当配置了 index 且indexRatio > 0时,用 Faiss 检索最相似训练特征并混合(同时根据protect调整混合比例)。
  6. 推理:将特征与音高输入 RVC 推理器(inferencer,支持 PyTorch 与 ONNX 后端),输出目标采样率(模型采样率)的音频。
  7. 后处理:裁掉用于 quality padding 的填充段,乘以音量系数(vol的平方根)恢复响度,返回给客户端播放。

上述整条链路中,buf对应步骤 1 的缓冲等待,res对应步骤 2~7 的计算耗时,因此总延迟 ≈buf + res;想压低延迟,就要同时控制 InputChunk(影响 buf)与 Extra Data Length(影响 res),并优先保证buf > res以避免音频断裂。

十五、总结与延伸阅读

至此,你已经掌握了 voice-changer RVC 客户端从启动、加载模型到各分区参数调优的完整流程:先通过 Launcher 进入 RVC 引擎,在 Model Setting 中上传模型(.pth / .onnx)与索引(.index),在 Speaker Setting 中调整音高与索引比率,在 Converter Setting 中平衡延迟与精度,再配合 Device Setting 选择设备模式,即可获得稳定的实时变声体验。需要更深入地排查问题时,可以使用 Quality Control 的 Analyzer 在服务器侧录制输入输出,定位是通信链路问题还是模型行为问题。

本文是 RVC 教程系列(v1.5.3.3)的一篇,更新的版本内容可参考 tutorial_rvc_en_latest.md;设备模式(client device / server device)的详细对比见 tutorials/tutorial_device_mode_ja.md。GUI 界面定义与可选项配置见 client/demo/public/assets/gui_settings/RVC.json,后端全部参数默认值见 server/voice_changer/RVC/RVCSettings.py,推理实现见 server/voice_changer/RVC/RVC.py 与 server/voice_changer/RVC/pipeline/Pipeline.py。

  • 人工智能
  • 语音
  • 模型推理服务
  • 深度学习

【免费下载链接】voice-changer

リアルタイムボイスチェンジャー Realtime Voice Changer

项目地址:https://gitcode.com/gh_mirrors/vo/voice-changer
点击查看免费下载

相关推荐

上一篇:StackEdit安全最佳实践:全方位保护用户数据与隐私的终极指南
下一篇:解决Oracle Container Registry认证难题:Skopeo无缝集成实战指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询