๐ง RVC Pitch Extraction Options
Pick the algorithm that decides your convert quality
- rvc_pitch_options
In RVC voice conversion, pitch tracking is quietly one of the biggest levers on final quality - get it wrong and the converted voice warbles, cracks, or drifts flat. This node exposes the pitch-extraction algorithm and its tuning as a separate RVC_PITCH_OPTIONS bundle you plug into the โ๏ธ RVC Engine's rvc_pitch_options input. Most people never touch it, and that's fine - the default is the right default. But when a convert is fighting you and the pitch sounds off, this is the node that fixes it.
Note the division of labor: this node is only pitch extraction. The other quality parameters - index_rate, consonant protection, rms_mix_rate - live on the RVC Engine, not here.
How it works
RVC needs to know the fundamental frequency (F0) of the source audio at every moment so it can re-voice it at the right pitch in the target's range. Different algorithms trade accuracy against speed. The pitch_detection choice picks which one runs, and the rest of the node tunes it. RMVPE is the modern, learned pitch estimator that mostly won this space; the older Harvest/DIO methods and the CREPE family are still here for specific cases.
The inputs and outputs that matter
- pitch_detection (default
rmvpe) - the algorithm, and the whole reason to use this node. The practical guide from the pack itself: rmvpe is the best balance of quality and speed and the recommended default; crepe / mangio-crepe are highest quality but slower; pm is fastest and good for real-time; harvest is a solid traditional choice for speech; dio / fcpe / rmvpe+ are alternatives for specific cases. If you don't know, stay on rmvpe. - crepe_hop_length (16โ512, default 160) - only matters for the CREPE methods; smaller means finer temporal resolution (more detail, slower). Ignore it unless you selected crepe/mangio-crepe.
- filter_radius (0โ7, default 3) - median-filters the detected pitch to smooth out jitter. Higher is smoother but can flatten expressive pitch movement. 3 is a reasonable middle.
- f0_autotune (default false) - snaps pitch toward musical notes. Useful for singing conversions, generally off for speech.
- use_cache (default true) - caches extracted pitch so re-runs are fast. Leave it on.
- batch_size (1โ32, default 1) - batches pitch extraction for throughput on long audio.
Single output: rvc_pitch_options, into the RVC Engine.
Installing it
Part of TTS Audio Suite. Fastest: ComfyUI Manager โ search TTS Audio Suite โ install โ restart, which runs the pack's install.py and handles the RVC dependencies plus 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, not just a bare requirements install). Linux: portaudio19-dev libsamplerate0-dev first. The pitch models (RMVPE and friends) auto-download with the RVC stack on first use.
Common issues
- You don't actually need this node. If your converts sound fine on the RVC Engine's built-in default, skip it. It exists for tuning, not for every graph.
- Warbly or unstable pitch. Try bumping
filter_radiusup a step to smooth jitter, or switch from a fast method (pm) to rmvpe. - Choosing CREPE and getting no benefit, just slowness. CREPE is highest quality on clean vocals but noticeably slower, and its one tuning knob (
crepe_hop_length) does nothing on the other algorithms. Only reach for it when rmvpe genuinely isn't cutting it. - Autotune making speech sound synthetic.
f0_autotuneis meant for singing. Turn it off for talking. - Looking here for the wrong setting. Consonant protection and index rate aren't on this node - they're on the โ๏ธ RVC Engine. This node is pitch only.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| pitch_detection | COMBO | rmvpe | Pitch extraction algorithm: โข RMVPE: Best balance of quality & speed (recommended) โข RMVPE+: Enhanced RMVPE with better accuracy โข Mangio-Crepe: Optimized Crepe, faster than standard โข Crepe: Highest quality but slower processing โข PM: Fast Praat-based extraction, basic quality โข Harvest: Traditional method, good for speech โข DIO: Fast algorithm, lower quality โข FCPE: Very fast extraction for real-time use |
| crepe_hop_lengthopt | INT | 16016โ512 | Only used by Crepe and Mangio-Crepe methods. Lower values track pitch changes more closely but cost more time and memory. |
| filter_radiusopt | INT | 30โ7 | Only meaningful for Harvest smoothing in this backend. 0 means no extra smoothing; higher values smooth more but can flatten detail. |
| f0_autotuneopt | BOOLEAN | false | Snap the extracted pitch contour toward the nearest musical note after pitch detection. Can help singing or stylized output, but often sounds artificial on normal speech. |
| use_cacheopt | BOOLEAN | true | Reuse cached loaded RVC/HuBERT models where possible for repeated processing. Usually worth leaving on. |
| batch_sizeopt | INT | 11โ32 | Crepe-family pitch batch size hint. Higher can be faster but uses more memory. Ignored by non-Crepe methods. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| rvc_pitch_options | RVC_PITCH_OPTIONS | โ |