ComfyUI Node

DramaBox TTS

AI voice acting that actually laughs, sighs, and pauses

By kat3ri·Created 4 months ago·Updated 4 months ago· 19
DramaBox TTS
  • voice_sample
  • audio
textA woman speaks warmly, "Hello, how are you today?" She laughs, "Hahaha, it is so good to see you!"
cfg_scale2.5
stg_scale1.5
seed42
duration_multiplier1.10

Most TTS sounds like a very polite person reading a script. DramaBox doesn't. It's ResembleAI's 3.3B expressive speech model, built on Lightricks' LTX-2.3, and it treats your prompt like stage directions: the same line can be delivered warm, furious, or choked up - with laughs, sighs, pauses, and even a voice crack if you ask for one. This node wraps the whole thing in a single DramaBox TTS node that speaks ComfyUI-native AUDIO, so you can drop AI voice acting into a workflow without ever leaving the graph.

Why would you reach for it? Anywhere your video pipeline needs dialogue with actual performance: a narrated cut, a character reacting in a short, an audiobook-style read where the narrator needs personality. LTX already made speed the family's calling card - that's the same engineering lineage, and the wrapper keeps the model hot between runs. If you've only ever used flat TTS, the first "Hahaha" that lands mid-sentence is a genuine "oh, that's the point" moment.

How it works

The node does all its heavy lifting on first generation. It clones the upstream resemble-ai/DramaBox repo into custom_nodes/ComfyUI-DramaBox/DramaBox/ (pinned to a known-good commit so upstream refactors can't break you), then downloads ~17 GB of weights into ComfyUI/models/DramaBox/: the 6.6 GB DiT transformer, a 1.9 GB audio-components file, and an 8 GB 4-bit Gemma 3 12B text encoder. First run is genuinely slow - that's model load, not generation. After that, a TTSServer singleton stays warm in memory, so subsequent generations are seconds, not minutes.

The wrapper handles a few ComfyUI landmines you'd otherwise hit: it evicts any pip-installed ltx_pipelines that would shadow the bundled one, and it patches the broken bitsandbytes stub that some custom nodes leave behind (a real thing - Gemma needs 4-bit). Output audio also gets an imperceptible neural watermark from Resemble Perth, which is how they keep the model licensable. Worth knowing, not worth worrying about.

The inputs that matter

Only a few of these need your attention:

  • text - the scene prompt. Put dialogue in double quotes, stage directions outside them. A woman speaks warmly, "Hello, how are you today?" She laughs, "Hahaha, it is so good to see you!"
  • cfg_scale (default 2.5) - lower feels more natural, higher sticks closer to the words. Start at the default.
  • voice_sample (optional) - an AUDIO input for timbre cloning. 10+ seconds of clean speech. The pack's example workflow trims the clip and runs it through Mel-Band RoFormer to strip music before feeding it in, which is a decent habit.
  • seed and duration_multiplier - the first for reproducibility, the second scales the auto-estimated speech length (1.1 adds breathing room, bump it for slower delivery).
  • stg_scale (default 1.5) - skip-token guidance; you'll rarely touch it.

Output is a single audio tensor, ready for Preview Audio, Save Audio, or any other audio node.

One prompt rule trips everyone up: phonetic sounds belong inside quotes ("Hahaha", "Ugh", "Argh", "Mmmmm"), while named actions go outside (She sighs deeply.). Put "sighs" inside the quotes and the model will literally say the word. The same goes for Ahem, Pfft, Gasp, Cough - those get spoken, not performed.

Installing it

Search ComfyUI-DramaBox in ComfyUI Manager and hit Install, or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/kat3ri/ComfyUI-DramaBox
cd ComfyUI-DramaBox
pip install -r requirements.txt

Restart ComfyUI afterward. The requirements pull in transformers, accelerate, peft, bitsandbytes, librosa, soundfile, and resemble-perth - torch and torchaudio are already provided by ComfyUI, so it doesn't reinstall them. Budget ~24 GB VRAM and ~17 GB disk.

Common issues

  • The first run looks frozen. It's cloning a repo and pulling 17 GB, then loading everything into VRAM. Let it cook; check your console for progress.
  • VRAM creeps up across consecutive generations. Community reports on the underlying model show memory accumulating run over run, and a clean-VRAM node at the end of the workflow fixes it. If you start getting OOM errors after a few gens, add one.
  • Voice consistency drifts on long narration. Voice cloning holds up well for short takes but degrades on longer segments - people doing long-form narration generate in smaller chunks and stitch them together. The expressive delivery is the trade-off you're buying.
  • A model that "just works" needs the GPU. CPU fallback exists in the code but at 3.3B with a 12B text encoder, you're not going to enjoy it. Check python_embeded Python and CUDA 12+ if imports start failing after an upgrade.

This is a heavy node, but it's the difference between a robot reading lines and a take you'd actually use. Worth the download.

Categoryaudio/DramaBox

Inputs (6)

NameTypeDefaultDescription
textSTRINGA woman speaks warmly, "Hello, how are you today?" She laughs, "Hahaha, it is so good to see you!"Scene prompt. Put dialogue in double quotes, stage directions outside them. Phonetic sounds (Hahaha, Hmm) go inside quotes; named actions (She sighs.) go outside.
cfg_scaleFLOAT2.51–10CFG guidance scale. Lower = more natural delivery; higher = more text-faithful. DramaBox default: 2.5.
stg_scaleFLOAT1.50–5Skip-token guidance scale. DramaBox default: 1.5.
voice_sampleoptAUDIOOptional voice reference for timbre cloning. 10+ seconds of clean speech recommended.
seedoptINT420–2147483647Random seed for reproducible generations.
duration_multiplieroptFLOAT1.100.5–3Multiply the auto-estimated speech duration. 1.1 adds 10 %% breathing room. Increase for slower delivery.

Outputs (1)

NameTypeDescription
audioAUDIO