⚙️ RVC Engine
The voice-conversion powerhouse (not a TTS engine)
- rvc_pitch_options
- TTS_engine
First, the thing that trips everyone up: RVC Engine does not make speech from text. It's a voice conversion engine - it takes audio and re-voices it. Plug it into 🔄 Voice Changer, never into TTS Text or TTS SRT (it'll just error there). RVC - Retrieval-based Voice Conversion - is the same tech behind most of the "AI covers" you've heard, and it's excellent: give it a trained character model and a source clip, and it rebuilds that clip in the target voice while preserving the original delivery. This node bundles the model loading and all the conversion quality controls into one config that outputs a TTS_ENGINE for the Voice Changer.
How it works
RVC works by extracting the content of the source audio (the phonemes and pitch, via a HuBERT content encoder) and re-synthesizing it with the timbre of a trained target model. A FAISS index (loaded alongside the .pth) does the "retrieval" part - matching the source's content features to the target speaker's, which is what makes conversions sound like the target rather than a smeared average. Pitch extraction runs separately and is where a lot of the quality comes from; that's configurable via the optional 🔧 RVC Pitch Extraction Options node.
The inputs and outputs that matter
The four required knobs are your main quality dials:
- pitch (−14 to +14 semitones, default 0) - pitch shift. The critical one for cross-gender conversion: male-to-female or female-to-male target usually needs about ±12. Leave at 0 for same-range voices.
- index_ratio (0–1, default 0.75) - how much the FAISS index (target-voice retrieval) influences the result. Higher tracks the target accent/timbre harder; too high can introduce artifacts. 0.75 is a sane start.
- consonant_protection (0–0.5, default 0.25) - protects consonants and breath sounds from being over-smoothed, which keeps speech intelligible. Raise it if consonants turn mushy.
- volume_envelope (0–1, default 0.25) - how much the source's loudness dynamics are mimicked vs. the target's. Low keeps it steady.
Optional: hubert_model picks the content encoder - auto is fine; the recommended explicit choice is content-vec-best, with Japanese/Korean/Chinese HuBERT variants for those languages. rvc_pitch_options takes a bundle from the pitch-options node for finer pitch control. output_sample_rate (0 = keep native, or force 40k/48k etc.) and device round it out.
Output: a single TTS_engine - wire it into 🔄 Voice Changer's TTS_engine input.
Installing it
Ships with TTS Audio Suite. Easiest is ComfyUI Manager: search TTS Audio Suite, install, restart - Manager runs the pack's install.py, which handles the RVC dependencies along with the usual conflicts (NumPy, librosa, s3tokenizer) and Python 3.13. Manual: cd ComfyUI/custom_nodes && git clone https://github.com/diodiogod/TTS-Audio-Suite.git, then python install.py from inside the folder with your ComfyUI venv active - run the script, or the RVC stack won't install. Linux: sudo apt-get install portaudio19-dev libsamplerate0-dev first. RVC base models (HuBERT, RMVPE) auto-download; character .pth models you load separately with 🎭 Load RVC Character Model, from ComfyUI/models/TTS/RVC/.
Common issues
- "It won't connect to TTS Text." By design - RVC converts, it doesn't synthesize. Use 🔄 Voice Changer. The node's own description says as much.
- Converted voice sounds off-pitch or chipmunky. Wrong
pitch. Cross-gender needs roughly ±12 semitones; get this right before touching anything else. - Robotic / artifact-heavy output.
index_ratiotoo high, or a low-quality character model. Pull index_ratio toward 0.5, and remember RVC quality is capped by how well the.pthwas trained. - Muddy consonants. Nudge
consonant_protectionup toward 0.5. - No target voice. The
.pthmodel isn't loaded on this node - it comes from 🎭 Load RVC Character Model into the Voice Changer'snarrator_target. If conversions sound generic, that link is probably missing.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| pitch | INT | 0-14–14 | Pitch shift in semitones. 0=no change, +12=octave up (male→female), -12=octave down (female→male) |
| index_ratio | FLOAT | 0.750–1 | Index file influence (0.0-1.0). Higher=more like training voice, lower=more like input voice |
| consonant_protection | FLOAT | 0.250–0.5 | Consonant protection - Protects speech clarity. Low=voice changes more, High=keeps original pronunciation clearer |
| volume_envelope | FLOAT | 0.250–1 | Volume envelope mixing - Controls volume patterns. Low=use target voice volume, High=keep original voice volume patterns |
| hubert_modelopt | COMBO | auto: Automatically select best available model | HuBERT Model for feature extraction: • Auto: Automatically select the best available model based on your language • Content Vec 768: RECOMMENDED - Best for RVC voice conversion, fastest loading • HuBERT Japanese: Optimized for Japanese voices and phonetics • HuBERT Korean: Specialized for Korean speech patterns • Chinese HuBERT: Fine-tuned for Mandarin Chinese tonal patterns • HuBERT Large 1024: EXPERIMENTAL - no compatible public pretrained RVC generator; may produce unintelligible audio Models will auto-download if not present. Use Content Vec 768 unless a checkpoint explicitly requires another encoder. |
| rvc_pitch_optionsopt | RVC_PITCH_OPTIONS | Optional advanced pitch extraction settings from RVC Pitch Options node. Overrides basic parameters. | |
| output_sample_rateopt | COMBO | 0 | Output sample rate (0=use input rate). 44100/48000 recommended for high quality |
| enable_custom_chunkingopt | BOOLEAN | false | Enable the Voice Changer's outer chunking on top of native RVC segmentation. Leave off unless you specifically need shorter-than-native chunks for extra VRAM safety. Native RVC long-audio segmentation usually starts around 64s on the common half-precision path, and lower on some fp32/low-VRAM paths. |
| deviceopt | COMBO | auto | Processing device: • auto: Automatically select best available (MPS on Apple Silicon, CUDA on NVIDIA, XPU on Intel, CPU fallback) • cuda: NVIDIA GPU (requires CUDA-capable GPU) • xpu: Intel GPU (requires Intel PyTorch XPU) • cpu: CPU-only processing (slower) • mps: Apple Metal Performance Shaders (Apple Silicon Macs only) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| TTS_engine | TTS_ENGINE | — |