DramaBox TTS
AI voice acting that actually laughs, sighs, and pauses
- voice_sample
- audio
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
AUDIOinput 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.1adds 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_embededPython 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.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | A 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_scale | FLOAT | 2.51–10 | CFG guidance scale. Lower = more natural delivery; higher = more text-faithful. DramaBox default: 2.5. |
| stg_scale | FLOAT | 1.50–5 | Skip-token guidance scale. DramaBox default: 1.5. |
| voice_sampleopt | AUDIO | Optional voice reference for timbre cloning. 10+ seconds of clean speech recommended. | |
| seedopt | INT | 420–2147483647 | Random seed for reproducible generations. |
| duration_multiplieropt | FLOAT | 1.100.5–3 | Multiply the auto-estimated speech duration. 1.1 adds 10 %% breathing room. Increase for slower delivery. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |