Nodes/TTS Audio Suite/๐Ÿงพ DramaBox Dataset Rows
ComfyUI Node

๐Ÿงพ DramaBox Dataset Rows

Turn your staged clips into a real training manifest

By diodiogodยทCreated about a year agoยทUpdated about 9 hours agoยท 1,166
๐Ÿงพ DramaBox Dataset Rows
  • clip_dataset
  • manifest_path
  • manifest_info
โ—„manifest_namedramabox_train.jsonlโ–บ
โ—„transcript_linesHello there, this is a training sample. This is the second sample from the same speaker.โ–บ
โ—„speaker_linesโ–บ
โ—„language_linesโ–บ
โ—„default_speakerspeaker_1โ–บ
โ—„default_languageenโ–บ
โ—„output_subdirtts_audio_suite_training/dramabox/manifestsโ–บ
โ—„overwritetrueโ–บ

DramaBox's official trainer wants a JSONL manifest: one row per audio clip, with its transcript, speaker, and language. If you're building a training set entirely inside ComfyUI, this is the node that writes that file. It takes the staged clips from ๐ŸŽž๏ธ Training Clip Staging, pairs each one with a transcript you type in, and emits a manifest under ComfyUI/input/.

It's the least glamorous step in the TTS Audio Suite training flow and the one people most often mess up - because the whole thing hinges on you typing exactly one transcript per clip.

The inputs that matter

  • clip_dataset - the TRAINING_CLIP_DATASET output from ๐ŸŽž๏ธ Training Clip Staging. That node takes raw AUDIO sources, slices them, and hands the staged clips here. There's no other way in - the node validates that its input came from staging.
  • transcript_lines - the big one. Exactly one line per clip, in clip order. Blank lines skip the corresponding clip rather than erroring, which is handy for dropping bad takes without rebuilding the whole list.
  • speaker_lines - optional, one speaker name per line. Blank lines fall back to default_speaker. This is where you assign voice identity per clip.
  • language_lines - same idea, per-clip language codes falling back to default_language (en).

manifest_name sets the output filename (.jsonl is appended if you forget), output_subdir defaults to tts_audio_suite_training/dramabox/manifests inside ComfyUI/input/, and overwrite lets you regenerate freely.

How it works

The node counts your staged clips, checks your transcript lines match that count, then builds each JSONL row with the audio path, text, speaker, language, and measured duration - no GPU involved, this is pure bookkeeping. If your line count is off you get a clear error telling you exactly how many lines it expected, which beats the silent "training did nothing" alternative. It also verifies every row actually references an audio file.

Outputs are manifest_path (STRING, the file you just wrote) and manifest_info (STRING, a summary). Feed the path into ๐Ÿ“ฆ DramaBox Dataset Prep as dataset_source with dataset_type=manifest, and you've completed the all-ComfyUI pipeline: Clip Staging โ†’ Dataset Rows โ†’ Dataset Prep โ†’ Training Config โ†’ Model Training.

Gotchas worth knowing

Each speaker needs at least two clips. DramaBox's trainer wants a reference tail per speaker, and a speaker with one clip is a speaker with a broken voice. If a voice sounds off after training, check you gave it a couple of clean clips rather than a single perfect one.

Transcript quality is everything. The trainer accepts plain transcripts or full scene-style prompts (A woman speaks warmly, "..."), but scene descriptions only help if they accurately describe the clip. A mismatched description actively teaches the model the wrong delivery. Plain transcripts are the safer default unless you curated the scenes deliberately.

One more thing: the transcript and speaker lines are positional, and there's no preview telling you which clip is which. Keep a text editor open, label your staged clips as you go, and you'll thank yourself an hour later when you're not untangling a fifty-line mismatch.

CategoryTTS Audio Suite/๐ŸŽ“ Training

Inputs (9)

NameTypeDefaultDescription
clip_datasetTRAINING_CLIP_DATASETStaged audio from Training Clip Staging.
manifest_nameSTRINGdramabox_train.jsonlOutput manifest filename. .jsonl is appended when missing.
transcript_linesSTRINGHello there, this is a training sample. This is the second sample from the same speaker.Exactly one line per staged clip, in clip order. Blank lines skip the corresponding clip.
speaker_linesoptSTRINGOptional speaker name per clip. Blank lines use default_speaker.
language_linesoptSTRINGOptional language code per clip. Blank lines use default_language.
default_speakeroptSTRINGspeaker_1Speaker assigned when the corresponding speaker line is blank. Each DramaBox speaker needs at least two clips.
default_languageoptSTRINGenLanguage code assigned when the corresponding language line is blank.
output_subdiroptSTRINGtts_audio_suite_training/dramabox/manifestsSubdirectory inside ComfyUI input/ for the generated manifest.
overwriteoptBOOLEANtrueOverwrite an existing manifest with the same name.

Outputs (2)

NameTypeDescription
manifest_pathSTRINGโ€”
manifest_infoSTRINGโ€”