Nodes/ComfyUI_FL-CosyVoice3/FL CosyVoice3 Speaker Instruct2
ComfyUI Node

FL CosyVoice3 Speaker Instruct2

Speaker Instruct2

By filliptm·Created 8 months ago·Updated 9 days ago· 146
FL CosyVoice3 Speaker Instruct2
  • model
  • audio
textHello, this is my cloned voice speaking.
instruct_text请非常开心地说这句话。
speaker_preset
speed1.00
seed42
text_frontendtrue

Speaker Instruct2 is the pack's "everything at once" node: a saved voice preset for the timbre, plus an instruction for the delivery, plus your text. It's what you get when Speaker Clone and Instruct2 have a child - no reference audio needed at generation time, and no flat, expressionless reading either. Pick a saved voice, tell it how to say the line, and generate.

You reach for this when you have a character voice you've already saved with Save Speaker and you need the performance directed. A narrator who needs to sound ominous in one scene and relieved in the next, a character line that has to be shouted or whispered - the preset locks the who, the instruct text locks the how. It's the most convenient node in the pack for anyone building a repeatable voice pipeline that still wants emotional range. The default instruct text is even in Chinese (请非常开心地说这句话。), which is a hint about how multilingual this model family is - you can write instructions in several languages and it usually understands.

How it works

It loads your saved .pt preset, injects the speaker embeddings into the model frontend, and calls inference_instruct2 - the same instruction-driven path as the Instruct2 node. There's a wrinkle the source code handles for you: when synthesis goes through zero_shot_spk_id, the frontend skips the instruct text entirely and uses the preset's prompt data as-is. So the node manually re-extracts the tokens from your instruction and overwrites the preset's prompt fields after injection, then formats it for the right model version - CosyVoice3 wants a system-prompt prefix, CosyVoice2 doesn't. You never see any of that; you just type the direction.

Both inputs are guarded: speaker_preset set to [none] errors with "run Save Speaker first," and an empty instruct_text errors too - if you don't want direction, you want plain Speaker Clone. The same model-version lock from the rest of the preset nodes applies: a preset saved with CosyVoice3 won't work on CosyVoice2.

The inputs that matter

  • model - the COSYVOICE_MODEL output of the Model Loader; must match the model the preset was saved with.
  • text - the line to speak.
  • instruct_text - the direction, and it can't be empty. Specific phrasing beats vague: "say this very sadly" over "be sad."
  • speaker_preset - the dropdown of voices saved by Save Speaker.
  • speed - 0.5×–2.0×, default 1.0.
  • seed (optional) - default 42, -1 for random.
  • text_frontend (optional) - normalization, on by default; disable for phonemes or special tags.

The single output is audio.

Installing it

Ships with the FL CosyVoice3 pack. 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. The requirements list is heavy (transformers, onnxruntime, openai-whisper, librosa) and the recommended model is ~2GB, auto-downloaded to ComfyUI/models/cosyvoice/ on first load.

Common gotchas

  • "instruct_text cannot be empty" - the node needs a direction; use Speaker Clone if you don't have one.
  • [none] preset or mismatched model - save the preset with the same model you're generating with, and refresh the dropdown (it scans on node creation).
  • Instructions steer, they don't control - expect the model to get the gist rather than hit a precise target. Rewording is cheaper than re-sampling.
  • Whisper-influenced presets carry their transcripts - if the reference transcript was wrong when you saved the preset, it can color output; re-save with a correct transcript.

If your workflow is "same cast of voices, different moods," this is the endgame node of the pack - saved voices, directed performances, no audio files in sight.

Category🔊FL CosyVoice3/Synthesis

Inputs (7)

NameTypeDefaultDescription
modelCOSYVOICE_MODEL
textSTRINGHello, this is my cloned voice speaking.
instruct_textSTRING请非常开心地说这句话。
speaker_presetCOMBO1 options: [none]
speedFLOAT1.000.5–2
seedoptINT42-1–2147483647
text_frontendoptBOOLEANtrue

Outputs (1)

NameTypeDescription
audioAUDIO