Nodes/ComfyUI_FL-CosyVoice3/FL CosyVoice3 Dialog
ComfyUI Node

FL CosyVoice3 Dialog

Multi-Speaker Dialog in ComfyUI

By filliptm·Created 8 months ago·Updated 8 days ago· 146
FL CosyVoice3 Dialog
  • model
  • speaker_A_Audio
  • speaker_B_Audio
  • speaker_C_Audio
  • speaker_D_Audio
  • dialog_audio
  • speaker_a_audio
  • speaker_b_audio
  • speaker_c_audio
  • speaker_d_audio
  • message
â—„dialog_textSPEAKER A: Hello, how are you? SPEAKER B: I'm doing great, thanks for asking!â–º
â—„speed1.00â–º
â—„seed42â–º

The Dialog node is what you use when one cloned voice isn't enough. It synthesizes a multi-speaker conversation in a single pass - up to four voices (A through D), each cloned from its own reference clip, all speaking lines you write in a plain-text script. No audio editing after the fact; it assembles the whole exchange and hands you a single mixed track plus each speaker's isolated one.

This is the node you reach for when a single voice clip would feel fake: two characters talking, a podcast intro with a co-host, a phone-call scene where you need both ends. It's also a shortcut for a workflow that would otherwise be three or four Zero-Shot clones strung together and stitched by hand - Dialog does the stitching for you, and it even lines the speakers up on separate tracks so you can adjust levels later.

How it works

The script format is the core mechanic. Each line starts with a speaker label - SPEAKER A:, SPEAKER B:, and optionally C and D - followed by the line, one per line in the text box:

SPEAKER A: Hello, how are you?
SPEAKER B: I'm doing great, thanks for asking!

The node parses those labels, and for each line it generates speech in that speaker's cloned voice using zero-shot inference. To build the prompt it needs the transcript of each reference clip, so it auto-transcribes every speaker's audio with Whisper - if Whisper fails or returns nothing, it falls back to cross-lingual mode for that speaker. The full mix (dialog_audio) concatenates every line in order, while each speaker also gets their own synchronized track (silence padding where they're not talking). A message string reports duration and line count.

Every speaker's reference audio must stay under 30 seconds - it validates each one and points you to the FL Audio Crop node if you're over. A and B are required; C and D are optional, and any line referencing a speaker without audio is silently skipped.

The inputs that matter

  • model - the COSYVOICE_MODEL output of the Model Loader.
  • dialog_text - the script, in the SPEAKER A:/B: format above. This is where you'll spend most of your time.
  • speaker_A_Audio / speaker_B_Audio - the required voice references, 3–10 seconds each.
  • speed - 0.5×–2.0×, default 1.0.
  • speaker_C_Audio / speaker_D_Audio (optional) - for two extra voices.
  • seed (optional) - default 42, -1 for random.

Outputs: dialog_audio (the mixed conversation), speaker_a_audio through speaker_d_audio (isolated tracks), and message.

Installing it

Part of the FL CosyVoice3 pack - install once, get all nodes. ComfyUI Manager: search "FL CosyVoice3", or:

cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_FL-CosyVoice3.git
cd ComfyUI_FL-CosyVoice3
pip install -r requirements.txt

Restart ComfyUI. Setup is heavier than most packs - transformers, onnxruntime, openai-whisper, librosa - and the ~2GB Fun-CosyVoice3-0.5B model downloads itself into ComfyUI/models/cosyvoice/ on first load.

Common gotchas

  • The label format is strict - SPEAKER A: ... with the colon and the space. A line that doesn't match a known prefix is dropped without a fuss, so check the message output if a line went missing.
  • First run auto-transcribes everything - Whisper processes each speaker's reference, so expect a one-time delay (and an extra model download) on the first generation.
  • Speaker order matters in the mix - lines play in script order, not speaker order. Write the script in the order you want to hear it.
  • Each speaker needs clean, distinct audio - two references that sound similar defeat the point of a dialog.

Dialog is the fastest way in ComfyUI to go from "two voice samples" to "a finished back-and-forth," and for anything conversation-shaped it's the node you want.

Category🔊FL CosyVoice3/Synthesis

Inputs (8)

NameTypeDefaultDescription
modelCOSYVOICE_MODEL—
dialog_textSTRINGSPEAKER A: Hello, how are you? SPEAKER B: I'm doing great, thanks for asking!—
speaker_A_AudioAUDIO—
speaker_B_AudioAUDIO—
speedFLOAT1.000.5–2—
speaker_C_AudiooptAUDIO—
speaker_D_AudiooptAUDIO—
seedoptINT42-1–2147483647—

Outputs (6)

NameTypeDescription
dialog_audioAUDIO—
speaker_a_audioAUDIO—
speaker_b_audioAUDIO—
speaker_c_audioAUDIO—
speaker_d_audioAUDIO—
messageSTRING—