TS CosyVoice Speaker Text To Voice
The node you'll actually use for a whole podcast season
- model
- audio
TS CosyVoice Speaker Text To Voice is the "I want this character to sound identical on every single line, forever" node. Plain Text to Voice re-encodes your reference clip every run; this one pulls a saved .pt speaker preset from disk instead. The voice stays stable between sessions, and the only thing you change per line is the text and the emotion instruction. For a series, a podcast, a long dub - anything where voice consistency across hundreds of lines matters - this is the workflow the pack's README calls out as arguably its most useful node.
It exists because of a two-step habit that's easy to build: Save Speaker once to lock in a voice, then this node forever after. The reference clip only ever touches the graph a single time.
How it works
Under the hood it's the same CosyVoice inference_instruct2 path as Text to Voice - text in, instruction guides delivery, out comes speech. The difference is where the timbre comes from. Instead of a raw audio prompt, it loads the precomputed speaker features you saved earlier via Save Speaker (those .pt files live in ComfyUI/models/cosyvoice/speaker/). Because the features are computed once and stored, you get the same voice identity run after run, and the per-line variation comes entirely from instruct_text or emotion_preset.
The inputs that matter
speaker_preset- a combo that lists the.ptfiles in your speaker folder. This is the whole point: pick the voice, don't re-supply audio.text- the line.instruct_text/emotion_preset- same system as Text to Voice: 12 bundled delivery presets, or "Your instruction" plus free-form text. This is how one voice goes from warm to angry to exhausted across a scene.speed- 0.5× to 2×.seed--1for variety, fixed otherwise.
Output
One audio output, straight into Save Audio / Preview Audio.
The workflow it belongs to
Model Loader ──→ Save Speaker (once, per voice)
└──→ Speaker Text To Voice (every line) → Save Audio
Setup cost is a couple of minutes per voice; after that each line is just text plus an emotion. That's the entire appeal: clone once, direct forever.
Installing
Same pack install as the rest of the family - ComfyUI Manager (search TS CosyVoice) or:
cd ComfyUI/custom_nodes
git clone https://github.com/AlexYez/comfyui-ts-cosyvoice.git
cd comfyui-ts-cosyvoice
pip install -r requirements.txt
Plus the always-two-extras: one ONNX Runtime (onnxruntime-gpu on NVIDIA, onnxruntime on CPU/Apple Silicon) and CUDA torch installed before the pack deps. Model download is automatic on first Model Loader run.
Troubleshooting
- The preset dropdown is empty - you haven't run Save Speaker yet, or it saved somewhere other than
models/cosyvoice/speaker/. Give Save Speaker a descriptivespeaker_nameand rerun. - The voice drifts from the original reference - check what
reference_textgot baked into the preset when you saved it. If it was empty because Whisper wasn't installed, the clone is noticeably worse; re-save with the text typed in. - Lines sound too similar to each other - vary
instruct_textorseedrather than the voice. - It doesn't appear in the Add Node menu - this pack needs ComfyUI >= 0.3.40 (V3 schema).
If you're doing more than a handful of lines in one voice, skip the raw reference path and go straight to the preset. It's the difference between babysitting a reference clip and just writing lines.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COSYVOICE_MODEL | Загруженная модель CosyVoice из ноды загрузчика. | |
| text | STRING | Hello, this is my cloned voice speaking. | Текст, который нужно озвучить выбранным сохраненным голосом. |
| instruct_text | STRING | Please say this in a warm and soft voice. | Текстовая инструкция для эмоции и манеры речи; используется только при выборе 'Ваша инструкция'. |
| speaker_preset | COMBO | Выберите ранее сохраненный пресет голоса из папки models/cosyvoice/speaker. | |
| speed | FLOAT | 1.000.5–2 | Множитель скорости итоговой речи. |
| seedopt | INT | 42-1–2147483647 | Зерно случайности; значение -1 использует случайный seed. |
| text_normalizeopt | BOOLEAN | true | Включает нормализацию текста; отключайте для фонем CMU и специальных тегов. |
| emotion_presetopt | COMBO | Ваша инструкция | Готовый пресет эмоции и манеры подачи; при выборе 'Ваша инструкция' используется поле instruct_text. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |