NTCosyVoiceCrossLingualSampler
Make a Voice Speak a Language It Never Spoke — Cross-Lingual CosyVoice
- audio
- tts_speech
NTCosyVoiceCrossLingualSampler answers a very specific question, and you should only reach for it when that's the question: you have a reference clip of a voice, and you want that voice to read text in a language the original clip was never spoken in. It's the dubbing node of the ComfyUI_NTCosyVoice pack - take a Chinese voice clip, feed it an English script, and get the same timbre speaking English. If that's not what you need, the pack's zero-shot sampler gives you more control for the same install.
Here's the key difference from its sibling: there is no prompt_text input. The zero-shot node needs a transcript of the reference clip to anchor the clone. The cross-lingual node doesn't - it extracts the speaker embedding straight from the audio and lets the model read whatever text you hand it in whatever language that text is written in. That transcript-free design is exactly why it can cross languages so easily, and it's also the tradeoff. Without a transcript to correct the model's read of the reference, you get slightly less control over the exact pronunciation of the source voice. For dubbing, that's the right price to pay.
The pack's own example workflow uses it in exactly this mode: an English text block ("Logic is the order of thought...") run through a non-English reference clip. That's the intended shape of the thing - one voice, another language.
The inputs
- audio - the reference clip whose timbre you're borrowing. Clean, single-speaker audio matters even more here than in zero-shot, because there's no transcript to compensate for a noisy source.
- text - the line to be spoken, in the language you want the output to be in.
- speed - 0.5–1.5, default 1.0. Same story as the rest of the pack: leave it at 1 unless the pacing is off.
Output is a single tts_speech AUDIO value, the same as the other samplers - straight into PreviewAudio or a SaveAudio/VideoHelperSuite node.
Installing it
You don't install this node separately. The whole ComfyUI_NTCosyVoice pack ships all three samplers, and the install is identical for every one of them:
cd ComfyUI/custom_nodes
git clone https://github.com/muxueChen/ComfyUI_NTCosyVoice
cd ComfyUI_NTCosyVoice
pip install -r requirements.txt
python downloadmodel.py
ComfyUI Manager can do the clone for you if you search "CosyVoice." Restart afterwards. The two gotchas are the same as the pack's other nodes: requirements.txt is genuinely heavy (deepspeed, TensorRT, onnxruntime-gpu, lightning), and the CosyVoice2-0.5B model is a separate ModelScope download via downloadmodel.py that you must let finish.
Troubleshooting
Most failure modes here are shared pack issues - missing dependencies showing up as red nodes, a skipped model download, a first run that's slow from JIT compile. The node-specific ones:
- Accent drift you can't explain. Because there's no transcript, the model sometimes leans on the reference's prosody rather than the target language's natural rhythm. It's a cross-lingual artifact, not a bug - try a cleaner reference clip, or fall back to zero-shot if you have the transcript.
- Reference clip too low-res. The node resamples input to 16 kHz and asserts the source is above it. Sub-16 kHz clips will error out.
- Expect ~1.2–1.4× realtime generation on a mid-range GPU and roughly 4–6 GB VRAM. It's the same 0.5B model under the hood.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| speed | FLOAT | 1.00.5–1.5 | — |
| text | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| tts_speech | AUDIO | — |