Nodes/Step Audio EditX TTS/StepAudioEditX - Clone 🎀
ComfyUI Node

StepAudioEditX - Clone 🎀

Clone a voice from a 10-second clip β€” StepAudioEditX Clone, explained

By Saganaki22Β·Created 10 months agoΒ·Updated 9 months agoΒ· 63
StepAudioEditX - Clone 🎀
  • prompt_audio
  • audio
β—„prompt_textβ–Ί
β—„target_textβ–Ί
β—„model_path(No models found - download Step-Audio-EditX)β–Ί
β—„devicecudaβ–Ί
β—„torch_dtypebfloat16β–Ί
β—„quantizationnoneβ–Ί
β—„attention_mechanismsdpaβ–Ί
β—„temperature0.7β–Ί
β—„do_sampletrueβ–Ί
β—„max_new_tokens4096β–Ί
β—„longform_chunkingfalseβ–Ί
β—„seed0β–Ί
β—„keep_model_in_vramtrueβ–Ί

Give this node 3–30 seconds of someone talking plus the exact words they said, and it will say anything else you type in that voice - tone, accent, pitch, rhythm and all. That's zero-shot voice cloning, no training involved. It's the classic character-voice machine: voice a game NPC, do narration in a consistent voice across a whole project, or keep a single voice through long-form content instead of fighting with a different-sounding take every time.

If you've poked at other TTS in ComfyUI, the pitch is the same ("clone any voice!"), but Step Audio EditX is one of the stronger open models for it, and the pack is native ComfyUI - pure Python, no JS, no API keys. It's the generation half of the same pack as the Edit node, and the two are designed to chain: clone a line, then re-emote it.

How it works

The pipeline is: reference audio β†’ dual-codebook tokenizer (VQ02 + VQ06) β†’ a 3B audio language model conditioned on both your reference clip and the target text β†’ a CosyVoice vocoder that turns tokens into 24kHz audio. Zero-shot here means no fine-tuning or voice embedding step on your side - the model infers the voice identity directly from the clip it's given.

That's why prompt_text is the lever that actually matters. The model uses the transcript of your reference to align the voice characteristics; if the transcript doesn't match what's actually said, cloning quality tanks. The README is emphatic: punctuation and spacing count. The pack depends on openai-whisper, and the example workflows use Whisper to transcribe your reference automatically - which is the sane way to do this instead of typing it.

The inputs that matter

  • prompt_audio - the reference clip. 3–30 seconds is the sweet spot (0.5–30s supported); clean, low-noise audio wins. This is technically the optional input, but it's the whole point of the node.
  • prompt_text - exact transcript of the reference. Get this right.
  • target_text - what you want said in the cloned voice. Any length, but…
  • longform_chunking - flip this on for text over ~2000 words. It splits at sentence boundaries, generates each chunk, and stitches them back together seamlessly. Slower, but it removes the length ceiling.
  • temperature - 0.7 is the recommendation. Lower (0.1–0.5) is flatter and more consistent; higher gets expressive and eventually unhinged.
  • max_new_tokens - audio-token budget: 2048 β‰ˆ 10s, 4096 β‰ˆ 20s, 8192 β‰ˆ 40s. Watch it if you're tight on VRAM.
  • seed - 0 for random, a fixed number to reproduce an exact take.

Then there's the shared model-config block: device (cuda), torch_dtype (bfloat16 recommended), quantization (none / int8 / int4), attention_mechanism (sdpa default, flash_attn for RTX 30xx+), and keep_model_in_vram. Output is a single audio (AUDIO) node - save it, or feed it into the Edit node for the two-pass workflow.

Installing it

Same pack as the Edit node: ComfyUI Manager β†’ search "Step Audio EditX TTS" β†’ install β†’ restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/Saganaki22/ComfyUI-Step_Audio_EditX_TTS
cd ComfyUI-Step_Audio_EditX_TTS   # note: not the folder name in the README's older example
pip install -r requirements.txt

You need system-level FFmpeg (not just the Python package), plus both HuggingFace repos - stepfun-ai/Step-Audio-EditX and stepfun-ai/Step-Audio-Tokenizer - cloned into ComfyUI/models/Step-Audio-EditX/. And transformers is pinned to exactly 4.53.3; newer versions have a tokenization bug that yields silent or garbled output. Budget ~11–14GB VRAM in bfloat16 (a bit less with int8), and give the first run a while - loading the model is the slow part, and it re-downloads the whisper bits on first use.

Troubleshooting

  • Poor clone quality - 90% of the time it's the transcript or the reference. Match prompt_text exactly; use a clean, noise-free clip; nudge temperature to 0.7–0.8.
  • Garbled or silent speech - pip install transformers==4.53.3, then pip install librosa hyperpyyaml if it persists.
  • "No models found" in the dropdown - model_path is auto-discovered at startup, not a free-text field. Put both models in the right folder and restart ComfyUI before the node will see them.
  • CUDA OOM - int8/int4 quantization, max_new_tokens down to 4096, float16, or disable keep_model_in_vram to free ~8GB between runs.

One community gripe worth knowing: the model tends to flatten non-English accents toward an American read, and that gets worse the harder you push iterations on the Edit side. For plain cloning at default settings it's fine - but if you're cloning a regional accent and it comes out sounding Hollywood, that's the model, not you.

Categoryaudio/step_audio

Inputs (14)

NameTypeDefaultDescription
prompt_textSTRINGExact transcript of what the reference audio says. Must match the audio content perfectly for best voice cloning results. The AI uses this to align the voice characteristics.
target_textSTRINGThe new text you want to speak in the cloned voice. Can be any text - the AI will speak it with the reference voice's tone, accent, prosody, and speaking style.
model_pathCOMBO(No models found - download Step-Audio-EditX)Step-Audio-EditX model location. Place models in ComfyUI/models/step_audio/ or select from discovered models.
deviceCOMBOcudaHardware device: 'cuda' for GPU (10-100x faster, ~8GB VRAM) or 'cpu' (very slow, no VRAM needed). Always use CUDA if available.
torch_dtypeCOMBObfloat16Model precision: bfloat16 (best quality, stable, 8GB VRAM), float16 (good quality, 6GB VRAM), float32 (max quality, 16GB VRAM), auto (selects best for your GPU).
quantizationCOMBOnoneVRAM reduction: 'none' (best quality, 8GB VRAM), int8 (good quality, 4GB VRAM), int4 (acceptable quality, 3GB VRAM), int4_awq (optimized int4, requires pre-quantized model). Use if low on VRAM.
attention_mechanismCOMBOsdpaAttention layer: sdpa (fastest, good VRAM, default), eager (slowest, most stable), flash_attn (fastest, needs RTX 30xx+), sage_attn (best VRAM efficiency).
temperatureFLOAT0.70.1–2Voice variation control: 0.1-0.5 (very consistent, robotic), 0.6-0.8 (natural, recommended), 0.9-1.5 (varied, expressive), 1.6-2.0 (very random, creative). Controls randomness in speech generation.
do_sampleBOOLEANtrueSampling mode: True (natural, varied speech with temperature control) or False (deterministic, uses greedy decoding, ignores temperature). Keep True for natural-sounding voices.
max_new_tokensINT4096256–16384Maximum audio tokens to generate: 2048 (~10s), 4096 (~20s), 8192 (~40s). Higher = more VRAM + time. With longform chunking enabled, each chunk is limited to this value.
longform_chunkingBOOLEANfalseSmart text splitting for long content (>2000 words). Splits at sentence boundaries, generates chunks separately, then stitches seamlessly. Slower but handles unlimited length. Disable for short text.
seedINT00–18446744073709550000Reproducibility seed: 0 (random output each time) or any number (same input = same output). Use fixed seed to reproduce exact voice outputs with identical parameters.
keep_model_in_vramBOOLEANtrueModel caching: True (keep loaded in VRAM, fast repeated use) or False (unload after use, frees ~8GB VRAM). Disable if switching between multiple models frequently.
prompt_audiooptAUDIOReference voice audio (3-30 seconds recommended, 0.5-30s supported). The AI will analyze and clone this voice's tone, accent, pitch, rhythm, prosody, and speaking style for target_text generation.

Outputs (1)

NameTypeDescription
audioAUDIOβ€”