Nodes/LongCat AudioDiT TTS/LongCat AudioDiT Multi-Speaker TTS
ComfyUI Node

LongCat AudioDiT Multi-Speaker TTS

A full two-person conversation out of one node

By Saganaki22·Created 5 months ago·Updated 5 months ago· 134
LongCat AudioDiT Multi-Speaker TTS
    • audio
    model_path
    text[speaker_1]: Hello, I'm speaker one. [speaker_2]: And I'm speaker two!
    steps16
    guidance_strength4.0
    guidance_methodapg
    deviceauto
    dtypeauto
    attentionauto
    seed0
    keep_model_loadedtrue
    pause_after_speaker0.4
    num_speakers

    What it is

    The multi-speaker node is where this pack stops being "a TTS wrapper" and becomes a script-writing tool. LongCatMultiSpeakerTTS takes two or more cloned voices and produces an entire back-and-forth conversation as one audio file, right inside ComfyUI. You want a podcast between two characters, a game dialogue scene, an argument between your OC and the villain? This is the node.

    How it works

    The neat part is how it's built. Set num_speakers (2–10) and the node grows inputs on the fly - it uses ComfyUI's v3 dynamic IO API, so a speaker_1_audio / speaker_1_ref_text pair appears for each speaker you ask for. That's a genuinely nice bit of UI design; most packs would make you dig through a list. The text field is a little script format:

    [speaker_1]: Hello, I'm speaker one.
    [speaker_2]: And I'm speaker two!
    

    Lines without a [speaker_N]: tag get dropped silently, so keep it strict. Each speaker's reference clip (3–15 seconds) plus its transcript feeds the same voice-clone path as the sibling node - reference audio encoded to latents, diffusion conditioned on them, apg guidance. Every turn is generated as its own clone pass with its own seed, and then the node stiches them together with pause_after_speaker seconds of silence between turns (default 0.4s, which reads as a natural pause).

    The inputs that matter

    Inputs that matter:

    • num_speakers - the dynamic combo that reveals the per-speaker inputs.
    • The dynamic speaker_N_audio and speaker_N_ref_text inputs - one audio clip per voice, plus the transcript of each (same rule as the clone node: transcript helps a lot).
    • text - the [speaker_N]: script.
    • pause_after_speaker - silence between turns, 0–2s.
    • steps / guidance_strength / dtype / attention - the shared generation settings from the rest of the pack. Keep dtype on auto; fp16 gets auto-upgraded to bf16 here too, because voice conditioning in fp16 produces silent NaN output.
    • keep_model_loaded - offloads the model to CPU between runs to keep VRAM free.

    Output is one audio (AUDIO) noodle with the whole conversation. Wire it to PreviewAudio, SaveAudioMP3, or drop it into a video workflow - LTX-style AV pipelines are a natural fit if you're syncing lip movement to the dialogue later.

    Installing

    Install: ComfyUI Manager → search "LongCat AudioDiT" → install → restart. Manual route is the same as the pack's other nodes:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Saganaki22/ComfyUI-LongCat-AudioDIT-TTS
    cd ComfyUI-LongCat-AudioDIT-TTS
    pip install -r requirements.txt
    

    Models auto-download into ComfyUI/models/audiodit/ on first run.

    Gotchas

    Two gotchas specific to this node. First, the dynamic inputs are a v3 API feature; on an older ComfyUI the node falls back to a fixed-slot legacy version, so if changing num_speakers doesn't reveal inputs, update ComfyUI rather than fighting it. Second, budget your total length - each speaker's turn is its own clone pass, the turns are concatenated into one file, and the model starts repeating or dropping words past roughly 60 seconds of total output. A four-speaker scene eats that budget fast, so write tight lines. And normalize your reference clips (around −6 dB peak); loud input is the #1 cause of that static/buzzing artifact this model is known for.

    CategoryLongCat-AudioDiT

    Inputs (12)

    NameTypeDefaultDescription
    model_pathCOMBOLongCat-AudioDiT model. Models are stored in ComfyUI/models/audiodit/
    textSTRING[speaker_1]: Hello, I'm speaker one. [speaker_2]: And I'm speaker two!Multi-speaker text. Use [speaker_1]:, [speaker_2]:, ... to assign lines to each speaker.
    stepsINT164–64Number of ODE Euler steps. More = better quality but slower.
    guidance_strengthFLOAT4.00–10CFG/APG guidance strength.
    guidance_methodCOMBOapgGuidance method. 'apg' recommended for voice cloning.
    deviceCOMBOautoCompute device. 'auto' picks CUDA > MPS > CPU.
    dtypeCOMBOautoModel dtype. 'auto' picks bf16 for CUDA.
    attentionCOMBOautoAttention implementation.
    seedINT00–2147483647Random seed. 0 = random.
    keep_model_loadedBOOLEANtrueKeep model loaded between runs. Model is automatically offloaded to CPU after generation.
    pause_after_speakerFLOAT0.40–2Seconds of silence to add after each speaker turn.
    num_speakersCOMBOHow many speakers (2-10). Changing this shows/hides speaker audio inputs.

    Outputs (1)

    NameTypeDescription
    audioAUDIO