Speech-God Character
A repeatable character voice from sliders, not just a sample
- voice_reference
- emotion_reference
- emotion_blend
- character
Speech-God's whole pitch is "ElevenLabs-style control, fully local" - and Speech-God Character is where that pitch actually lives. In a plain TTS setup you get one cloned voice and that's it. Here you define a full character profile - gender, age, tone, energy, delivery quirks - and every line that character speaks comes out consistent and distinct, episode after episode. It's the difference between "a voice" and "a character with a voice."
The key idea, worth internalizing early: every voice still starts from reference audio - both engines are zero-shot cloners. The profile is what layers personality on top. The character carries an optional voice_reference (any AUDIO - load it with ComfyUI's Load Audio node), and a bunch of parameter knobs that get converted into pitch shifts, tempo changes, gain, inline emotion markers and natural-language style fragments before synthesis. That's the "prompt conditioning + DSP" layer the README mentions: age, gender and tone each contribute semitones and tempo, the micro-sliders add style text and markers, and a post-pass does the pitch/gain shaping.
The inputs that actually matter
Start with these five and ignore the rest on day one:
- character_name - must match the tag you'll use in your script (
[SQUIRREL]↔ nameSQUIRREL, case-insensitive). Get this wrong and lines route to the wrong character. - tone - twelve choices from
neutraltohappy,angry,evil,narrator. Each maps to a pitch/tempo/gain recipe plus a style fragment and (for the fish engine) an inline marker. - age -
childthroughelderly, which stacks pitch on top of tone. Careful: extreme combos compound (the README flags child+excited as roughly +7 semitones - that's how you get chipmunks). - energy (0–100, default 50) and speech_speed (0.5–2.0) - the two knobs that change a delivery most without sounding artificial.
- voice_reference (optional AUDIO) - plug a 5–15 s WAV here for actual cloning. Leave it empty and the pack falls back to a bundled reference voice, so parameter-only characters work out of the box - just shared and neutral.
The optional extras are where this node earns its name: style_prompt (free-form delivery description), scene_context (e.g. "in a crowded market"), reference_text (the transcript of your voice reference - fill this in to skip Whisper's auto-transcription and save ~1.5 GB VRAM and a slow first run), emotion_reference (a clip whose pacing and emotion you want cloned), and an emotion_blend socket for the Emotion Blend node. Then there are the seven micro-expression sliders: laugh, whisper, nervousness, confidence, dramatic_intensity, sarcasm, cuteness, all 0–100. At 25+ a slider adds its style fragment; at 50+ it also adds a marker on fish-speech.
Output is a single character wire (SPEECHGOD_CHARACTER) - feed it into Speech-God Cast to group it with others, or straight into Save/Load Character to keep it across projects.
Installing and running
Same pack, same drill as every Speech-God node: Manager search "Speech-God", or git clone https://github.com/realTNEU/ComfyUI-SpeechGod into custom_nodes, then install requirements.txt into the ComfyUI venv and restart. The F5-TTS model (~1.4 GB) auto-downloads on first generation.
Gotchas worth knowing
- Robotic or wrong-pitch output - your age+tone combo is stacking too much pitch. Drop the micro sliders and reduce energy before you blame the model.
- "Cloned voice ignores emotion" - F5-TTS follows the reference's emotion; your tone sliders add delivery but the base voice stays the reference's mood. Fix: attach an
emotion_referenceclip, or switch to fish-speech where markers actually act. - "no voice reference available" - this error only means f5-tts isn't importable. If it is, the bundled default voice handles parameter-only characters; drop your own seed WAVs into
assets/default_voices/for distinct defaults. - License asterisk: F5-TTS weights are CC-BY-NC (non-commercial). Fine for personal work; check before this goes anywhere commercial.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| character_name | STRING | Character | — |
| gender | COMBO | neutral | 3 options: female, male, neutral |
| age | COMBO | adult | 5 options: child, teen, young_adult, adult, elderly |
| tone | COMBO | neutral | 12 options: neutral, happy, sad, excited, angry, scared, +6 |
| energy | INT | 500–100 | — |
| speech_speed | FLOAT | 1.000.5–2 | — |
| accent_strength | INT | 00–100 | — |
| voice_referenceopt | AUDIO | — | |
| emotion_referenceopt | AUDIO | — | |
| emotion_blendopt | SPEECHGOD_EMOTION | — | |
| style_promptopt | STRING | — | |
| scene_contextopt | STRING | — | |
| reference_textopt | STRING | Transcript of the voice reference (improves cloning; F5 auto-transcribes when empty) | |
| laughopt | INT | 00–100 | — |
| whisperopt | INT | 00–100 | — |
| nervousnessopt | INT | 00–100 | — |
| confidenceopt | INT | 00–100 | — |
| dramatic_intensityopt | INT | 00–100 | — |
| sarcasmopt | INT | 00–100 | — |
| cutenessopt | INT | 00–100 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| character | SPEECHGOD_CHARACTER | — |