Nodes/ComfyTV/Speech Stage
ComfyUI Node

Speech Stage

Text-to-Speech Inside ComfyUI, Without the Pain

By jtydhr88·Created 3 months ago·Updated about 17 hours ago· 725
Speech Stage
  • reference_audio
  • audio
force_run_token0
project_id
parent_output_id0
workflow
main_prompt
voice
languageAuto
speed1.00
reference_text
custom_params{}

ComfyUI has no native text-to-speech. The built-in audio generation (ACE-Step, Stable Audio) is music - say a word and it makes a beat, not a voice. So every TTS voice in ComfyUI arrives through some custom node, and that integration has a reputation for being the dependency-conflict minefield of the ecosystem. ComfyTV's Speech Stage is its attempt to make TTS feel as ordinary as a generation prompt, under ComfyTV/Generate.

The stage is model-agnostic - it doesn't hardcode one TTS engine. The workflow dropdown lists the TTS backends you have installed (the pack ships a Kokoro TTS workflow as the default, with the stage → node bindings mapped so the dropdown just works), and the fields expose the knobs nearly every TTS shares: main_prompt (the script to read), voice (a preset voice name for Kokoro/Bark/ElevenLabs-style engines), language (multilingual models only - Auto lets the model default decide, and note the tooltip's warning that names must match the model, e.g. Kokoro wants Mandarin Chinese, not Chinese), speed (0.5–2, 1.0 = natural), and reference_text/reference_audio for cloning engines (F5-TTS/GPT-SoVITS want a transcript of the reference clip; auto-transcribing cloners can leave the text empty).

Output is a single audio (COMFYTV_AUDIO), ready for the pack's audio suite or to be mixed under your video.

The honest setup story

Here's the part the README is upfront about: the shipped Kokoro workflow needs a companion node. ComfyUI Manager is the easy route for the ComfyTV pack itself, but for the TTS backend:

cd ComfyUI/custom_nodes
git clone https://github.com/stavsap/comfyui-kokoro.git
pip install kokoro-onnx onnxruntime

The good news: Kokoro-82M is tiny and runs on CPU - no torch, no GPU, and the ~300MB model auto-downloads on first run. That matches the KB's verdict on lightweight TTS: the voice is cheap compute; the expensive part is the video it drives. If you want heavier voices or cloning, you can export your own TTS workflow (TTS-Audio-Suite, VibeVoice, F5-TTS are the names in the docs) and bind its inputs in the sidebar - the stage is designed for exactly that bring-your-own-workflow path.

Install (the stage itself)

With the pack:

cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV

Restart ComfyUI; under ComfyTV → Generate. Desktop/macOS: clone into the running instance's absolute custom_nodes (startup-log path), unwrap any ComfyTV/ComfyTV/ nesting, full backend restart.

Troubleshooting

  • Voice comes out in English when you asked for Mandarin. The language name must match Kokoro's exact names - Mandarin Chinese, not Chinese or zh.
  • Cloning ignores the reference clip. The clone engines want reference_audio and reference_text unless they auto-transcribe; wire both.
  • Nothing in the workflow dropdown. The dropdown lists installed backends - the shipped Kokoro workflow needs comfyui-kokoro installed (above), or the list is empty until you add your own workflow.
CategoryComfyTV/Generate

Inputs (11)

NameTypeDefaultDescription
force_run_tokenINT00–2147483647Internal — bumped on Run to invalidate ComfyUI's input cache.
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
workflowCOMBOText-to-speech backend.
main_promptSTRING
voiceSTRINGNamed preset voice for preset-voice models (Kokoro, Bark, ElevenLabs, …).
languageCOMBOAutoLanguage for multilingual models. 'Auto' lets the workflow/model default decide; ignored by single-language / auto-detect models. Note: names must match what the selected model expects (e.g. Kokoro uses 'Mandarin Chinese').
speedFLOAT1.000.5–2Speaking rate (1.0 = natural).
reference_textSTRINGTranscript of the reference audio; auto-transcribing cloners can leave it empty.
custom_paramsSTRING{}Internal — JSON of user-defined parameter attachments/values for this node.
reference_audiooptCOMFYTV_AUDIO

Outputs (1)

NameTypeDescription
audioCOMFYTV_AUDIO