LongCat AudioDiT Multi-Speaker TTS
A full two-person conversation out of one node
- audio
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_audioandspeaker_N_ref_textinputs - 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. Keepdtypeonauto; 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.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| model_path | COMBO | LongCat-AudioDiT model. Models are stored in ComfyUI/models/audiodit/ | |
| text | STRING | [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. |
| steps | INT | 164–64 | Number of ODE Euler steps. More = better quality but slower. |
| guidance_strength | FLOAT | 4.00–10 | CFG/APG guidance strength. |
| guidance_method | COMBO | apg | Guidance method. 'apg' recommended for voice cloning. |
| device | COMBO | auto | Compute device. 'auto' picks CUDA > MPS > CPU. |
| dtype | COMBO | auto | Model dtype. 'auto' picks bf16 for CUDA. |
| attention | COMBO | auto | Attention implementation. |
| seed | INT | 00–2147483647 | Random seed. 0 = random. |
| keep_model_loaded | BOOLEAN | true | Keep model loaded between runs. Model is automatically offloaded to CPU after generation. |
| pause_after_speaker | FLOAT | 0.40–2 | Seconds of silence to add after each speaker turn. |
| num_speakers | COMBO | How many speakers (2-10). Changing this shows/hides speaker audio inputs. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |