Nodes/ComfyUI_FL-CosyVoice3/FL CosyVoice3 Cross-Lingual
ComfyUI Node

FL CosyVoice3 Cross-Lingual

Make a voice speak languages it never spoke — and it doesn't need a transcript to do it

By filliptm·Created 8 months ago·Updated 8 days ago· 146
FL CosyVoice3 Cross-Lingual
  • model
  • reference_audio
  • audio
â—„textHello, this is cross-lingual speech synthesis.â–º
â—„speed1.00â–º
â—„target_languageautoâ–º
â—„seed42â–º
â—„text_frontendtrueâ–º

The party trick node

Zero-Shot Clone makes a voice say anything you type. Cross-Lingual makes that same voice say it in another language. Same reference clip, same identity, but the output comes out in Mandarin, Japanese, German, Spanish, or whichever of the 9 supported languages you pick. It's the node for dubbing a character's voice into a different market, or for making one consistent narrator speak every language your video needs.

There's a subtle superpower hiding here: cross-lingual doesn't need to transcribe your reference audio. Zero-shot cloning has to know what the reference clip says to use it as a prompt. Cross-lingual skips that entirely - it just lifts the speaker characteristics straight off the waveform and applies them to whatever text you feed in. That's exactly why the Zero-Shot node falls back to this mode when Whisper transcription fails: it always has this escape hatch.

How it works

The node saves your reference to a temp file, calls inference_cross_lingual, and concatenates the returned audio chunks. For CosyVoice3 it wraps your text in the model's required You are a helpful assistant.<|endofprompt|> prefix automatically. (On the old v1 model it would have added language tags like <|es|> - the pack handles that difference so you never touch it.)

The target_language dropdown covers the 9: auto, zh, en, ja, ko, de, es, fr, it, ru. Auto-detects from the text, which is what you want most of the time. If you type Spanish but the model guesses wrong, pin it to es and rerun.

The inputs that matter

  • text - what the voice says, in the target language. The quality bar is the reference voice, not the text language.
  • reference_audio - the voice to carry across. Same 30-second hard cap as every node in this pack; 3–10 seconds of clean speech is the sweet spot.
  • target_language - auto by default; pin it when auto-detection gets it wrong.
  • speed - 0.5x to 2.0x.
  • seed - 42 by default, -1 for random. Change it when a take sounds off; TTS is seed-sensitive.
  • text_frontend - leave on unless you're passing CMU phonemes or <slow> tags.

Output is a single audio (ComfyUI AUDIO) - straight into PreviewAudio or SaveAudio.

Install

Manager: search "FL CosyVoice3". Manual:

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, add the Model Loader with Fun-CosyVoice3-0.5B, and connect its model output here. First run pulls the ~2GB model and (if you haven't run ZeroShot yet) Whisper's base weights.

Where people get burned

  • Accent drift is expected. A cloned voice speaking a language it "doesn't know" will have an accent. That's physics, not a bug - sometimes charming, sometimes not.
  • Fidelity is slightly looser than zero-shot with a transcript, because cross-lingual never conditions on the reference's words. If you need maximum clone accuracy in the same language as the reference, Zero-Shot Clone is the better tool.
  • The reference clip still matters enormously. A noisy 2-second reference produces a mushier cross-lingual result than a clean 10-second one.

It's the node people reach for when they want their character to swear in German or their narrator to cover a multilingual script in one take. For that it's the closest thing to magic this pack has.

Category🔊FL CosyVoice3/Synthesis

Inputs (7)

NameTypeDefaultDescription
modelCOSYVOICE_MODEL—
textSTRINGHello, this is cross-lingual speech synthesis.—
reference_audioAUDIO—
speedFLOAT1.000.5–2—
target_languageoptCOMBOauto10 options: auto, zh, en, ja, ko, de, +4
seedoptINT42-1–2147483647—
text_frontendoptBOOLEANtrue—

Outputs (1)

NameTypeDescription
audioAUDIO—