๐ฆ RVC Dataset Prep
Get your audio ready to train a voice model
- TTS_engine
- opt_audio1
- training_dataset
- dataset_info
Training a voice model is 90% dataset prep and 10% pressing go. This node is the 90%. If you want to train an RVC (Real-time Voice Conversion) model - a .pth that turns any input voice into a target voice - you can't just point a trainer at a folder of clips. The audio has to be sliced into training-sized chunks, resampled to a consistent rate, run through a feature extractor (HuBERT), and pitch-analyzed (F0). This node does all of that and hands you a clean training_dataset for the ๐ Model Training node.
It's the first node in the suite's training chain: RVC Dataset Prep โ Model Training โ Load RVC Character Model. Get the dataset right and the rest is mostly waiting.
How it works
You give it your source audio and a target sample rate, and it does the mechanical work: slicing long recordings into short chunks (with a little overlap so nothing gets cut mid-word), normalizing volume, extracting HuBERT features and F0 pitch curves, and caching the result so you don't reprocess the same data every time you tweak a training setting. That caching is the quiet win - dataset prep is slow, and reusing it across training runs saves real time.
The inputs and outputs that matter
TTS_engine- required; wire in an RVC engine node. This tells the training chain which pipeline you're on.model_name- a name for what you're building (default "MyVoice"). It's how your dataset and eventual model are labeled.dataset_source- a path, a zip, or a folder of audio. Alternatively, feed audio directly intoopt_audio1(an AUDIO input) if it's already in your graph.training_sample_rate-32k,40k, or48k. 40k is the standard default and a safe pick; 48k is higher fidelity but heavier, 32k is lighter. Match whatever you plan to train at.
The optional set is your quality/speed tuning: chunk_seconds and overlap_seconds control the slicing, max_volume and mute_ratio handle normalization and silence, cpu_workers parallelizes the (CPU-bound) processing, and reuse_existing (on by default) reuses that prep cache.
Two outputs: training_dataset (TRAINING_DATASET) โ straight into the Model Training node, and dataset_info (text) telling you how many chunks it produced and whether it reused the cache.
Installing it
Part of the pack. ComfyUI Manager โ search "TTS Audio Suite" โ install โ restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/diodiogod/TTS-Audio-Suite.git
cd TTS-Audio-Suite
python install.py
The HuBERT and RMVPE feature/pitch models this node needs are auto-managed - they download on first prep. On Linux you'll also want the system audio libs the pack asks for (portaudio19-dev, libsamplerate0-dev) so resampling works cleanly.
Common issues & troubleshooting
Garbage dataset from messy audio. RVC training is only as good as its input. Use clean, single-speaker audio with no background music or noise - the slicing and feature extraction can't fix a bad source, they just chop it up. A few minutes of clean speech beats an hour of noisy speech.
It reprocessed everything again. If prep is re-running when you only changed a training parameter, check reuse_existing is on - that's the flag that lets you reuse the cache across runs instead of paying the slicing/feature cost every time.
Wrong sample rate mismatch. Pick training_sample_rate to match your intended training config; a dataset prepped at 40k and a trainer expecting 48k is asking for trouble. Decide the rate once, up front.
Prep is slow. It's CPU-bound feature extraction. Raise cpu_workers to use more cores - that's the dial that actually moves prep time.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| TTS_engine | TTS_ENGINE | Connect the RVC engine here because dataset prep also needs HuBERT and pitch-extraction settings, not just the later training node. | |
| model_name | STRING | MyVoice | Base name for the trained RVC voice. Changing only this should not force dataset re-prep when the actual data/settings stay the same. |
| dataset_source | STRING | Optional folder, zip, or single audio file path. Relative paths resolve from ComfyUI input/ and input/datasets/. Clean single-speaker speech matters more than having one huge raw recording. Leave empty if you only use opt_audio inputs. | |
| training_sample_rate | COMBO | 40k | Target training sample rate. 40k is the normal speech default and usually the right place to start. |
| cpu_workersopt | INT | 11โ32 | CPU workers for slicing and feature extraction. 1-4 is usually enough; more is not automatically better, especially on Windows. |
| chunk_secondsopt | FLOAT | 3.01โ15 | Target clip length after slicing. RVC usually likes short clips; 3.0s is a good default, and an effective range around 2-8s is normal. |
| overlap_secondsopt | FLOAT | 0.30โ2 | Small overlap helps avoid harsh cuts between slices. Too much overlap just duplicates data and slows prep. |
| max_volumeopt | FLOAT | 0.950.1โ1 | Peak normalization ceiling for extracted clips. 0.95 is a safe default; avoid pushing everything to 1.0 unless you like clipping risk. |
| mute_ratioopt | FLOAT | 0.000โ0.5 | Extra silence augmentation ratio. Leave this at 0 for normal training; raise it only if the model is over-voicing silence or breathing badly. |
| reuse_existingopt | BOOLEAN | true | Reuse the prepared dataset cache when settings match. Usually keep this on; rebuilding features every run is just wasted time. |
| opt_audio1opt | AUDIO | Optional training audio clip. Connect one or more AUDIO sources here for quick in-graph tests, or combine them with a dataset path. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| training_dataset | TRAINING_DATASET | โ |
| dataset_info | STRING | โ |