Nodes/ComfyUI_RH_VoxCPM/RunningHub VoxCPM Dataset Build
ComfyUI Node

RunningHub VoxCPM Dataset Build

VoxCPM Dataset Build

By RH-RunningHub·Created 4 months ago·Updated 2 months ago· 0
RunningHub VoxCPM Dataset Build
  • entry_1
  • entry_2
  • entry_3
  • entry_4
  • entry_5
  • entry_6
  • entry_7
  • entry_8
  • manifest_path
  • num_samples
extra_manifest
sample_rate16000
dataset_namevoxcpm_dataset

RunningHub VoxCPM Dataset Build is the middle node of the training pipeline: it takes the entry outputs from one or more Dataset Entry nodes, writes each audio clip out as a resampled WAV, and collects the whole thing into a train.jsonl manifest that Train LoRA reads. If Dataset Entry is the captioning step, this is the "save the dataset" step - and it's the step that decides whether your training run sees clean, correctly-typed audio.

It's deliberately small. Up to eight entry sockets (entry_1 through entry_8), of which entry_1 is required and at least two samples are expected in practice. Two string inputs - dataset_name (the output folder prefix, default voxcpm_dataset) and extra_manifest (a path to an existing jsonl you want to append, so you can merge in hand-curated data). One numeric input that matters more than it looks: sample_rate, default 16000.

The sample rate thing

That default isn't arbitrary. VoxCPM2's AudioVAE trains at 16 kHz - the upstream note is explicit that training sample rate must equal audio_vae_config.sample_rate (16k for V2, even though the decoder outputs 48k). The Train LoRA node runs a pre-flight check that compares your manifest's baked-in WAV rate against the model's expected rate, and a mismatch means on-the-fly resampling that silently slows your data loading. In other words: leave sample_rate at 16000 unless you know exactly why you're changing it. If you're using VoxCPM1.5 or 0.5B and training complains, that's the first value to re-check.

The output is a folder under ComfyUI/output/voxcpm_train/<dataset_name>_<timestamp>/ containing train.jsonl plus the WAVs. The node reports manifest_path (the path to that jsonl - wire it into Train LoRA's train_manifest) and num_samples (a count, useful for a quick sanity check or for logging).

How it fits

The README's typical flow is Dataset Entry → Dataset Build → Train LoRA, and the included LoRA training example builds a tiny dataset from two clips just to prove the loop. For anything real you'll want more samples than two - and this is where the node's shape starts to show its limits. Eight entries is fine for a small curated set, but if your source is "a folder of 200 chunked clips," chaining eight Entry nodes is a nightmare. That's the exact job Dataset Build (Batch) exists for: same manifest output, but it eats a whole list of AUDIO clips in one pass. Pick this node for hand-curated handfuls and the Batch variant for bulk.

Setup and gotchas

Standard pack install, plus the base model before you actually train:

cd ComfyUI/custom_nodes
git clone https://github.com/RH-RunningHub/ComfyUI_RH_VoxCPM.git
cd ComfyUI_RH_VoxCPM && pip install -r requirements.txt

The entry type is pack-internal (VOXCPM_DATA_ENTRY), so if you load someone else's workflow you must have this exact pack installed or the sockets won't match anything. And one warning from the code: this node does not validate your audio's provenance. If an Entry node auto-transcribed garbage text, Build happily writes it into the manifest. Garbage in, garbage out - review the text output of your Entry nodes before you commit a dataset.

CategoryRunningHub/VoxCPM/Train

Inputs (11)

NameTypeDefaultDescription
entry_1VOXCPM_DATA_ENTRY
entry_2optVOXCPM_DATA_ENTRY
entry_3optVOXCPM_DATA_ENTRY
entry_4optVOXCPM_DATA_ENTRY
entry_5optVOXCPM_DATA_ENTRY
entry_6optVOXCPM_DATA_ENTRY
entry_7optVOXCPM_DATA_ENTRY
entry_8optVOXCPM_DATA_ENTRY
extra_manifestoptSTRING
sample_rateoptINT160008000–48000
dataset_nameoptSTRINGvoxcpm_dataset

Outputs (2)

NameTypeDescription
manifest_pathSTRING
num_samplesINT