Nodes/TTS Audio Suite/⚙️ Echo-TTS Engine
ComfyUI Node

⚙️ Echo-TTS Engine

Diffusion voice cloning with a speaker-drift brake

By diodiogod·Created about a year ago·Updated 22 days ago· 1,098
⚙️ Echo-TTS Engine
    • TTS_engine
    presetCustom
    deviceauto
    num_steps40
    cfg_scale_text3.0
    cfg_scale_speaker8.0
    cfg_min_t0.50
    cfg_max_t1.00
    truncation_factor1.0
    rescale_k1.0
    rescale_sigma3.0
    force_speaker_kvfalse
    speaker_kv_scale1.5
    speaker_kv_max_layers24
    speaker_kv_min_t0.90
    sequence_length640

    Echo-TTS is the diffusion-based option in the suite - a DiT model that does English voice cloning from a reference clip. Two things make it its own animal: it's built to shine on short chunks (roughly 30 seconds or less per generation), and it has an explicit control for a problem that plagues chunked TTS - the voice slowly drifting into a different person across a long passage. That control is "Force Speaker KV," and it's the whole selling point.

    Standard drill: this is a config node. It outputs a TTS_engine you feed into 🎤 TTS Text or 📺 TTS SRT.

    How it works

    Being diffusion, Echo generates over a number of denoising num_steps rather than autoregressively, and it uses classifier-free guidance with two separate scales - one steering toward the text, one toward the speaker's identity. When you stitch several chunks together for longer text, later chunks can lose the reference speaker's character; force_speaker_kv pins the speaker's key/value attention state so identity holds across the seams. There's a stack of presets in the node precisely because this model has a lot of dials, and the presets encode known-good combinations so you don't have to guess.

    The inputs and outputs that matter

    If you only touch a few things, touch these:

    • preset - start here. Custom exposes everything; the Independent-*-CFG presets are ready-made recipes (high/low CFG, with or without the "Flat" schedule). Try a preset before hand-tuning.
    • num_steps (default 40) - diffusion steps. More = potentially cleaner but slower; 40 is a sane middle.
    • cfg_scale_text (3) and cfg_scale_speaker (8) - how hard it pushes toward the words vs. toward the target voice. If cloning is weak, the speaker scale is your lever.
    • force_speaker_kv (off by default) - flip it on for multi-chunk / longer text to stop the voice from wandering. speaker_kv_scale and its companions tune how aggressively.

    The rest - truncation_factor, rescale_k, rescale_sigma, cfg_min_t/cfg_max_t, sequence_length - are exactly the kind of internals the presets exist to set for you. Leave them alone until you have a specific reason.

    Output is TTS_engine → TTS Text or TTS SRT.

    Installing it

    Ships in the pack. ComfyUI Manager"TTS Audio Suite" → install → restart. Manual:

    cd ComfyUI/custom_nodes
    git clone https://github.com/diodiogod/TTS-Audio-Suite.git
    cd TTS-Audio-Suite
    python install.py
    

    First generation auto-downloads ~7.1GB (base model + DAC codec) to ComfyUI/models/TTS/echo-tts-base/.

    Common issues & troubleshooting

    Check the license before you ship anything. This is the big one. Echo-TTS weights are CC-BY-NC-SA - non-commercial. The suite's own code is MIT, but each engine keeps its own terms, and Echo's are not commercial-friendly. If you're making something you'll sell or monetize, use a different engine (ChatterBox and the Chatterbox Multilingual model are MIT, for instance).

    It's painfully slow. Echo runs but crawls on CPU. Use CUDA for any real work - the README calls CPU "very slow for real workloads," and that's not an exaggeration for a diffusion model.

    The voice changes partway through long text. That's the drift Echo is designed to fight. Turn on force_speaker_kv and, if needed, raise speaker_kv_scale. Also just keep chunks short - Echo is happiest at ~30s or less per generation, so let the unified chunking split long scripts rather than forcing giant single passes.

    English only. Don't expect other languages to come out right - Echo is an English model. For multilingual cloning, look at Higgs v3, CosyVoice, or the Chatterbox Multilingual model.

    CategoryTTS Audio Suite/Engines

    Inputs (15)

    NameTypeDefaultDescription
    presetCOMBOCustomSampler preset (overrides steps/CFG/truncation/rescale fields). Independent-High-Speaker-CFG: steps=40, cfg_text=3, cfg_speaker=8, trunc=1.0, rescale_k=1.0 Independent-High-Speaker-CFG-Flat: steps=40, cfg_text=3, cfg_speaker=8, trunc=0.8, rescale_k=1.2 (flattened tail) Independent-High-CFG: steps=40, cfg_text=8, cfg_speaker=8, trunc=1.0, rescale_k=1.0 Independent-High-CFG-Flat: steps=40, cfg_text=8, cfg_speaker=8, trunc=0.8, rescale_k=1.2 Independent-Low-CFG: steps=40, cfg_text=3, cfg_speaker=3, trunc=1.0, rescale_k=1.0 Independent-Low-CFG-Flat: steps=40, cfg_text=3, cfg_speaker=3, trunc=0.8, rescale_k=1.2 Custom: use the values set manually below.
    deviceCOMBOautoDevice to run Echo-TTS on: - auto: Use CUDA if available, else CPU - cuda: Force NVIDIA GPU (falls back to CPU if unavailable) - cpu: CPU-only (very slow) Note: CUDA recommended; Echo-TTS is non-commercial (CC-BY-NC-SA).
    num_stepsINT401–200Number of sampling steps. Higher can improve quality but increases time and VRAM.
    cfg_scale_textFLOAT3.00–20Text guidance scale. Higher pushes closer to the prompt; too high can sound harsh.
    cfg_scale_speakerFLOAT8.00–20Speaker guidance scale. Higher pushes closer to reference voice; too high can degrade quality.
    cfg_min_tFLOAT0.500–1CFG lower bound (0–1). Guidance is active when t >= cfg_min_t.
    cfg_max_tFLOAT1.000–1CFG upper bound (0–1). Guidance is active when t <= cfg_max_t.
    truncation_factorFLOAT1.00–5Truncation factor for initial noise. Lower can reduce diversity; higher can increase variation.
    rescale_kFLOAT1.00–10Temporal score rescale k (see Echo-TTS rescaling). Only used if both rescale_k and rescale_sigma are set.
    rescale_sigmaFLOAT3.00–10Temporal score rescale sigma (see Echo-TTS rescaling). Only used if both rescale_k and rescale_sigma are set.
    force_speaker_kvBOOLEANfalseEnable speaker KV scaling to more strongly match the reference voice. Higher values may reduce quality. Auto-disabled for short text fragments (< 20 chars) to prevent noisy tails.
    speaker_kv_scaleFLOAT1.50–10KV Scale (>1 = stronger speaker influence). Used only when Force Speaker is enabled.
    speaker_kv_max_layersINT240–24Max layers to apply KV scaling (0–24). Used only when Force Speaker is enabled.
    speaker_kv_min_tFLOAT0.900–1KV Min t (0–1). Scaling is active until t drops below this value.
    sequence_lengthINT64064–2048Sample latent length. 640 is ~30s (max seen during training). Best results at ≤30s; longer text uses unified chunking (best-effort).

    Outputs (1)

    NameTypeDescription
    TTS_engineTTS_ENGINE