Nodes/Speech-God/Speech-God Generate
ComfyUI Node

Speech-God Generate

Dialogue in, rendered audio out

By realTNEU·Created 3 months ago·Updated 3 months ago· 0
Speech-God Generate
  • engine
  • cast
  • audio
  • report
dialogueHello, my name is Timmy.
seed0
variation_strength20
takes1
merge_linestrue
pause_between_lines_ms350

Everything else in Speech-God is setup. Speech-God Generate is the payoff - the node that takes your script, your cast, and your engine, and actually renders speech. If you've built a Character, grouped it in a Cast, and picked an engine on the Loader, this is where those three wires converge and sound comes out.

Here's the full pipeline it runs, in order: it parses the dialogue text into tagged lines, resolves each speaker's profile into concrete delivery parameters, sends each line to the TTS engine with the right reference audio, then concatenates the lines with pauses between them and hands you a single AUDIO output. Lines render sequentially, so memory stays flat no matter how long the script is - that's why the README can claim you can batch "hundreds of lines" in one call.

The inputs that matter

  • engine and cast - both required sockets. Engine comes from the Loader, cast from Cast. Non-negotiable.
  • dialogue - the script. You can mix three formats freely:
    [SQUIRREL]
    Hey elephant!
    
    ELEPHANT: Hello, my name is Timmy.
    
    Well, that's new.          (untagged → inherits previous speaker)
    
    [TAG] blocks, NAME: inline lines, and bare lines all parse. Timestamps like [0:03] are stripped if you're pasting from a script tool.
  • seed - the reproducibility knob. Same seed, same script, same everything → same audio, with one exception (below).
  • variation_strength (0–100, default 20) - how much delivery jitter each take gets. On F5 it jitters speed and pitch slightly; on fish-speech it raises the sampling temperature. Crank it for alternate takes that sound genuinely different, keep it near 0 for consistent re-renders.
  • takes (1–8) - render N seeded variants of the whole script. Output becomes a batched AUDIO with one take per batch entry, so the Export node writes take_00001.wav, take_00002.wav, etc. This is your "pick the best of eight" workflow.
  • merge_lines (default on) and pause_between_lines_ms (default 350) - merge concatenates all lines into one continuous clip with that many ms of silence between speakers. Turn merge off and you get... actually, the pack still concatenates with pauses either way (the code path is the same), so treat these as "on + pause length." The 0–5000 ms pause range is your pacing control for multi-line scenes.

Outputs

Two of them. audio is the obvious one - a standard ComfyUI AUDIO you can preview, wire to Post Process, or feed straight to Export. report is a string log of every take/line it rendered, formatted like take 1 | line 1 | SQUIRREL: Hey elephant!. Wire it to a text preview or a save node if you want a record of what's in each file; it's also genuinely useful for debugging routing.

Installing and the real-world failure modes

The pack install is the usual: Manager search "Speech-God" or git clone https://github.com/realTNEU/ComfyUI-SpeechGod into custom_nodes, then pip install -r requirements.txt into the venv and restart. F5-TTS models (~1.4 GB) auto-download on the first generation.

The first run will feel broken - model download plus, on F5, Whisper transcription of your reference can take minutes. Fill in reference_text on the Character to skip the Whisper step entirely. If you get F5-TTS is not installed, you installed into the wrong Python. If characters sound wrong, check name/tag matching in the Cast. And the README's 8 GB profile is worth taking literally: one engine per session, precision: fp16, takes ≤ 4, and generate audio before sampling video so you can free VRAM between. The name may be divine, but the VRAM budget isn't.

One honest caveat that applies to the whole pack: F5-TTS weights are CC-BY-NC (non-commercial). For personal projects and open sharing this is the fastest way to ElevenLabs-style local dialogue; just don't plan a paid product around it.

CategorySpeech-God

Inputs (8)

NameTypeDefaultDescription
engineSPEECHGOD_ENGINE
castSPEECHGOD_CAST
dialogueSTRINGHello, my name is Timmy.
seedINT00–281474976710655
variation_strengthINT200–100
takesINT11–8
merge_linesBOOLEANtrue
pause_between_lines_msINT3500–5000

Outputs (2)

NameTypeDescription
audioAUDIO
reportSTRING