RunningHub RVC Voice Conversion
The node where the voice actually changes
- rvc_model
- audio
- audio
- info
This is the payoff node. The loaders just hand you a model; the RunningHub RVC Voice Conversion node is where a normal human voice stops being normal. You feed it an RVC_MODEL handle and a ComfyUI AUDIO clip, and it returns converted audio with the target voice's timbre - the thing people build singing covers with, or swap a character's voice into a video.
RVC stands for Retrieval-based Voice Conversion, and the retrieval part is worth understanding because it's the knob that decides whether you get a clean swap or a garbled one. The pipeline is: HuBERT pulls content features out of your input audio, an F0 extractor measures the pitch, and the loaded generator re-synthesizes the audio in the target voice. Then the "retrieval" step kicks in - a FAISS index of the target voice's training features gets blended into the conversion. That blend is index_rate, and it's why an RVC model with a good .index file sounds dramatically more like the person you're cloning than the same model without one.
The inputs that matter
Two you must connect, then a handful that are genuinely worth touching:
- rvc_model - the handle from either loader. audio - a ComfyUI
AUDIOinput; the tooltip recommends feeding it from a LoadAudio, trim, or stem-separation node first. Long clips convert fine but slower; trimming to what you actually need is the habit that pays off. - f0_up_key - semitone shift, −24 to +24. Positive raises pitch, negative lowers it. This is the classic "make a man sound like a woman" dial, and 0 keeps the original pitch for a same-key cover.
- index_rate - the retrieval blend, default 0.66. Higher gets you closer to the target timbre but can start eating consonants or adding noise; lower keeps more of the input voice. Start at the default and nudge.
- f0_method -
harvestis the stable default but slow;rmvpeis usually the quality pick if you've installedmodels/RVC/_assets/rmvpe/rmvpe.pt;crepeis there for tricky pitchy audio. - protect - consonant and breath protection, default 0.33. Raise it if the output swallows words; the cost is a weaker timbre swap.
The rest - filter_radius (3), resample_sr (0 = model's native rate), rms_mix_rate (1) - are fine at defaults. Leave index_path empty and the node auto-searches by model name stem; it converts fine with no index at all.
Outputs
- audio - converted ComfyUI
AUDIO. Save it with a standard audio save node, mix it back with other stems, or feed it to a video node. That's the whole point of it being native AUDIO rather than a file path. - info - the RVC runtime log: model, device, whether an index was used, and timing. It's a string, so you can even pipe it somewhere.
The honest part: dependencies
Voice conversion is one of the fiddlier things to bolt onto ComfyUI, because RVC drags a real dependency stack with it (fairseq, pyworld, torchcrepe, librosa…). The community's earlier go-to, AIFSH's ComfyUI-RVC, went stale, which is partly why people ended up running RVC in its own WebUI or a TTS-suite wrapper instead of a native node. This pack keeps the RVC source bundled and isolated precisely so you don't have to fight that battle yourself. If a conversion errors at load time with a missing dependency, that's the environment, not the node - a fresh venv and pip install -r requirements.txt from the pack fixes most of it.
Install
ComfyUI Manager: search ComfyUI_RH_RVC. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/RH-RunningHub/ComfyUI_RH_RVC
cd ComfyUI_RH_RVC
pip install -r requirements.txt
Restart, and make sure HuBERT is at models/RVC/_assets/hubert/hubert_base.pt - without it, no model loads, no conversion runs.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| rvc_model | RVC_MODEL | 由 RunningHub RVC Model Loader 输出的已加载模型。 | |
| audio | AUDIO | ComfyUI AUDIO 输入。请先用 LoadAudio、音频裁剪或音频分离节点接入音频。 | |
| speaker_id | INT | 00–999 | 目标说话人 ID。单说话人模型通常为 0,多说话人模型按训练时的 ID 选择。 |
| f0_up_key | INT | 0-24–24 | 升降调半音数。正数升调,负数降调,0 保持原调。 |
| f0_method | COMBO | harvest | F0 提取算法。harvest 稳定但较慢;pm 较快;rmvpe 通常质量更好但需要 models/RVC/_assets/rmvpe/rmvpe.pt。 |
| index_path | STRING | 可选 .index 文件路径。留空时会按模型名在 logs 和 assets/indices 下自动查找;没有 index 时仍可转换。 | |
| index_rate | FLOAT | 0.660–1 | 检索特征混合比例。值越高越贴近目标音色,但可能带来咬字或噪声问题。 |
| filter_radius | INT | 30–7 | F0 中值滤波半径。大于 0 可减少毛刺,通常 3 即可。 |
| resample_sr | INT | 00–48000 | 输出重采样率。0 表示使用模型原始采样率;设置为 16000 以上会重采样输出。 |
| rms_mix_rate | FLOAT | 1.000–1 | 响度包络混合比例。1 更保留输入响度,0 更接近目标模型响度。 |
| protect | FLOAT | 0.330–0.5 | 辅音和呼吸声保护强度。数值越大越保护原音,音色转换程度会降低。 |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | 转换后的 ComfyUI AUDIO,可继续连接到音频保存、视频合成或后处理节点。 |
| info | STRING | RVC 推理日志,包含模型、设备、index 使用情况和耗时信息。 |