Scenema Audio Generate ⚡
Expressive, cloneable TTS with production presets — fully local, 48kHz stereo
- model
- clip
- vae
- ref_latent
- identity_reference
- audio
Most local TTS will read your text out loud. This one performs it. Scenema Audio Generate is an expressive, diffusion-based TTS with zero-shot voice cloning, and its party trick is the <speak> prompt compiler: you type stage directions - [He laughs], [She whispers] - and the model actually performs them. On top of that you get twelve production presets, scene acoustics, language selection, automatic chunking, and an optional voice reference for cloning. It's the most "studio" thing in the local TTS stack, and it runs entirely on your own GPU.
The inputs that matter
The big three are model, clip, vae from Scenema Model Loader. Then the creative stack:
preset- twelve presets that inject a voice, gender, scene and performance tags in one click: "Old Male Storyteller (fireside)", "Terrified Whisper", "Irish Woman, Dry Wit", "Villain (laughing menace)", even SFX ones like "Rain and Thunder". Thespeech_textis always used as entered, so presets are delivery, not content.Customstarts you from scratch.voice_description- your own voice spec, e.g. the default "Male, late 60s. Deep, gravelly. Slow and deliberate." Age, gender presentation, timbre, accent, delivery style.gender- grammatical gender for pronouns in the compiled prompt.speech_text- the text, with[bracketed cues]inline for mid-speech direction. Long text is auto-split at sentence boundaries.scene- acoustic environment (quiet room, reverberant hall, broadcast studio, café, rainy outdoors…), injected into the prompt.custom_sceneoverrides the dropdown with freeform text.action_tags- one stage direction per line, each becomes a direction the model performs.
Then: language (12 options), pace (default 1.5, a duration-budget multiplier - higher = slower; the validated default), and seed.
Cloning and the SeedVC pass
The optional ref_latent input (from Scenema VAE Encode, fed by Load Audio) gives zero-shot A2V cloning: the generation is conditioned on your reference voice's latent. It's the LTX A2V-style reference.
The second voice mechanism is the SeedVC post-pass: a fixed identity-consistency conversion applied to the output. identity_reference (an AUDIO) pins the identity for that pass, skip_vc turns it off entirely, and vc_steps / vc_cfg_rate (25 / 0.5) tune the conversion. The pass is seeded from the workflow seed, and here's a genuinely good behavior: Generate keeps the unpolished audio if conversion fails or returns anything other than a same-shape, same-length, audible waveform. You don't lose the clip on a post-process hiccup.
How it works under the hood
This is a port of ScenemaAI's ComfyUI-ScenemaAudio, rebuilt on ComfyUI's native LTX-AV machinery with no HuggingFace runtime downloads. The <speak> XML prompt compiler, the presets, sentence-boundary chunking with A2V voice chaining between chunks, and per-chunk trim/normalize before concatenation all carry over from the original. Output is 48kHz stereo.
Installing it
Part of the ComfyUI-GGUF-Loader pack under 🤖 CCTech/Scenema. ComfyUI Manager → search "ComfyUI-GGUF-Loader" → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/ChrisColeTech/ComfyUI-GGUF-Loader
cd ComfyUI-GGUF-Loader
pip install -r requirements.txt
The SeedVC pass needs the extras: place the seedvc, campplus, bigvgan, and whisper-small folders from the ChrisColeTech/scenema-audio extras repo under models/scenema-audio/extras. Skip that and either skip_vc stays on or the pass has nothing to run on.
Common issues
The classic failure is wanting the preset voice but typing speech text that fights it - presets set delivery, so a "Terrified Whisper" preset reading a grocery list still whispers a grocery list, just with conviction. For cloning, reference quality is everything: keep it clean, single-speaker, under 20 seconds (that's the VAE's hard cap). And the two voice inputs are not interchangeable: ref_latent is the A2V clone reference, identity_reference is the SeedVC identity - mix them up and the final voice won't match what you cloned. Long text: let the auto-chunking do its job; don't hand it one giant paragraph and expect a single breath.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| vae | VAE | — | |
| preset | COMBO | Custom | Apply a preset's voice, gender, scene, and performance tags. The speech_text field is always used as entered. |
| voice_description | STRING | Male, late 60s. Deep, gravelly. Slow and deliberate. The weight of the cosmos in every word. | Describe the voice: age, gender presentation, timbre, accent, delivery style. |
| gender | COMBO | Grammatical gender used for pronouns in the compiled prompt. | |
| speech_text | STRING | Look again at that dot. That's here. That's home. That's us. | The text to speak. Use [bracketed cues] inline for mid-speech performance direction: [He laughs], [She whispers]. Long text is auto-split at sentence boundaries. |
| scene | COMBO | Acoustic environment injected into the prompt. | |
| seed | INT | 00–18446744073709550000 | — |
| custom_sceneopt | STRING | Freeform scene description. When non-empty, overrides the scene dropdown. | |
| action_tagsopt | STRING | Delivery cues, one per line. Each becomes a stage direction the model performs. | |
| languageopt | COMBO | English | Target language. Write speech_text in that language. |
| paceopt | FLOAT | 1.50.5–3 | Duration budget multiplier. Higher = slower speech. 1.5 is the validated default. |
| ref_latentopt | LATENT | Optional voice reference (Scenema VAE Encode output) for zero-shot cloning. | |
| skip_vcopt | BOOLEAN | false | Skip the final SeedVC identity-consistency pass. |
| identity_referenceopt | AUDIO | Optional fixed voice identity for SeedVC. This is separate from the LTX A2V ref_latent input. | |
| vc_stepsopt | INT | 251–200 | — |
| vc_cfg_rateopt | FLOAT | 0.500–2 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |