Nodes/ComfyUI_FL-CosyVoice3/FL CosyVoice3 Instruct2
ComfyUI Node

FL CosyVoice3 Instruct2

The CosyVoice Instruct2 Node

By filliptm·Created 8 months ago·Updated 8 days ago· 146
FL CosyVoice3 Instruct2
  • model
  • reference_audio
  • audio
â—„textHello, this is my cloned voice speaking.â–º
â—„instruct_textSpeak in a warm and friendly tone.â–º
â—„speed1.00â–º
â—„seed42â–º
â—„text_frontendtrueâ–º

If the plain Zero-Shot Clone node gives you a voice but no director's chair, this is the upgrade. FL CosyVoice3 Instruct2 clones a reference voice and takes a plain-English instruction about how to say the line - "Speak in a warm and friendly tone," "Sound calm and professional," "用低沉的声音说" - and the model actually tries to follow it. It's zero-shot cloning plus emotion and style control, all in one node, running locally.

That combination is the reason this node is worth knowing. A cloned voice with no instruction tends to land in one flat register; Instruct2 is what you reach for when the line needs to be excited, angry, gentle, or just less robotic. The reference audio still owns the timbre, but the instruct text drives the delivery. Same voice, different performance - which is exactly what you want for character lines, narration with personality, or a second take that doesn't sound pasted in.

How it works

It calls CosyVoice's inference_instruct2, which requires a CosyVoice2 or CosyVoice3 model - the README explains the name: the original CosyVoice1 only has an "instruct1" path, so "Instruct2" is what works with v2/v3. The node handles the annoying formatting for you: CosyVoice3 wants a system prompt prefix ("You are a helpful assistant.") plus <|endofprompt|> wrapped around your instruction, and CosyVoice2 doesn't want the system prompt at all. You just type your instruction; the node sorts out the tokens.

The reference audio is capped at 30 seconds - go over and it refuses with a message telling you to trim with the FL Audio Crop node. Text and instruct text are both required; an empty instruct string raises an error. There's a text_frontend toggle (default on) for text normalization - flip it off if you're feeding in CMU phonemes or special tags.

The inputs that matter

  • model - the COSYVOICE_MODEL output from the pack's Model Loader.
  • text - what's actually spoken, in the cloned voice.
  • instruct_text - the direction. This is the star of the show. Concrete, specific directions beat vague ones: "speak slowly and gently" beats "be nice." You can write these in more than one language too.
  • reference_audio - the voice to clone; 3–10 seconds of clean speech is the sweet spot.
  • speed - 0.5×–2.0×, default 1.0.
  • seed (optional) - default 42, -1 for random.

The one output is audio, a standard ComfyUI AUDIO object you can preview, save, or feed into whatever you're building.

Installing it

This is one node in the FL CosyVoice3 pack - install the pack and you get all of them. Via ComfyUI Manager, search "FL CosyVoice3". Or manually:

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 after. Plan for a chunky setup: the requirements list pulls in transformers, onnxruntime, openai-whisper, librosa and friends, and the recommended model (Fun-CosyVoice3-0.5B, ~2GB) downloads itself into ComfyUI/models/cosyvoice/ on first load.

Common gotchas

  • "instruct_text cannot be empty" - the model needs a direction. If you don't want one, you want the plain Zero-Shot node instead.
  • Reference audio over 30s - errors immediately. Trim first.
  • First-run wait - the ~2GB model download on top of the heavy pip install makes the first generation feel like it hung. Check the console before you panic.
  • Instructions are guidance, not puppetry - the model gets the idea, but it won't nail "be exactly 30% angrier." Iterate on the wording; it's cheap to re-run.

Instruct2 is the node I'd default to for anything with a pulse in the script. It's the difference between a cloned voice reading your line and a cloned voice performing it.

Category🔊FL CosyVoice3/Synthesis

Inputs (7)

NameTypeDefaultDescription
modelCOSYVOICE_MODEL—
textSTRINGHello, this is my cloned voice speaking.—
instruct_textSTRINGSpeak in a warm and friendly tone.—
reference_audioAUDIO—
speedFLOAT1.000.5–2—
seedoptINT42-1–2147483647—
text_frontendoptBOOLEANtrue—

Outputs (1)

NameTypeDescription
audioAUDIO—