StepAudioEditX - Edit ✏️
Make any voice line angry, whispery, or laughing — StepAudioEditX Edit, explained
- input_audio
- audio
The Edit node in the Step Audio EditX pack is the half most people don't see coming. The Clone node gets the attention because "copy my voice" is a party trick, but Edit is the actually-useful one: you feed it an existing audio clip and a directive - angry, whisper, 1.5x faster, add laughter - and it hands back a new version of the line that still sounds like the same speaker. It's a second-pass neural re-read, not a filter.
Most TTS in ComfyUI works one way: type text, get audio, and if you want the line delivered differently you re-generate and hope. Step Audio EditX lets you take a take you already like and re-perform it. The killer workflow from the README is Clone → Edit: generate the line, then re-emote it. That's why the pack ships both.
How it actually works
Under the hood this is StepFun AI's Step-Audio-EditX, a 3B audio language model paired with a dual-codebook tokenizer and a CosyVoice vocoder outputting 24kHz. The crucial thing to understand: nothing here is audio post-processing. The model reads your clip, understands the words (which is why the transcript matters so much), then re-synthesizes the whole thing with the new emotion/style/speed baked in. The voice identity is preserved because it's conditioned on the source audio itself.
Two consequences follow. First, you must give it the exact transcript in audio_text - it uses the words to align content with the edit. Second, n_edit_iterations (1–5) is your strength dial: each iteration runs the clip back through the model to amplify the effect. 1 is subtle, 2–3 is the sweet spot, 4–5 can push into distortion - and community reports say heavy iterations also start to flatten accents into a generic American delivery. Worth knowing before you crank it.
The inputs that matter
audio_text- exact transcript of the clip. The single biggest quality lever; get the wording and punctuation right.edit_type- the category:emotion,style,speed,paralinguistic, ordenoising. Pick one.- The value field matching your
edit_type-emotion(happy, sad, angry, excited, …),style(whisper, gentle, serious, casual, formal, …),speed(faster/slower × 1.2x/1.5x),paralinguistic([Laughter],[Breathing],[Sigh], …), ordenoising(denoise/vad). There's aparalinguistic_textbox if you want the effect inserted at a specific phrase instead of auto-appended to the end. n_edit_iterations- effect strength, as above.input_audio- the clip to edit. It's listed as optional, but the node errors if it's not connected, so treat it as required. Hard limit: 0.5–30 seconds. Longer audio won't work - split it first (the README pairs this with Whisper + a chunking step for a reason).
One honest quirk: temperature, do_sample, and max_new_tokens appear on the node, but the author's own tooltips say they're hardcoded (0.7 / true / 8192) and have no effect in Edit mode. Don't touch them; the interesting knobs are the ones above. Output is a single audio (AUDIO) - wire it into a save or preview node, or back into a second Edit pass.
Installing it
Same as the whole pack: ComfyUI Manager, search "Step Audio EditX TTS", install, restart. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/Saganaki22/ComfyUI-Step_Audio_EditX_TTS
cd ComfyUI-Step_Audio_EditX_TTS
pip install -r requirements.txt
Two things trip people up. FFmpeg must be installed at the system level (not the Python package) - that's a hard requirement. And you need both the Step-Audio-EditX and Step-Audio-Tokenizer models, cloned from HuggingFace into ComfyUI/models/Step-Audio-EditX/. The README also pins transformers==4.53.3; newer versions have a known bug that produces silent or garbled audio. This pack is VRAM-hungry too: ~14–18GB for Edit in bfloat16, and quantization (int8/int4) is available but the author notes they're waiting on official quantized weights from StepFun.
Troubleshooting
- Weak edit - bump
n_edit_iterationsto 2–3, and double-checkaudio_textmatches the clip exactly. - Garbled/silent output -
pip install transformers==4.53.3, and reinstalllibrosa+hyperpyyaml. - "No models found" -
model_pathis a dropdown populated at startup, not a text box, so you can't type a path. Put the models in the right folder and fully restart ComfyUI. - CUDA OOM - drop to
int8,float16, usesage_attn, and turn offkeep_model_in_vram.
One last honest note, from people who actually run this: style and emotion options vary wildly in how much they change the result. Some are transformative, some barely move the needle - that's the nature of the underlying model, not a broken install. Start with 2 iterations and a clear emotion, and you'll get a feel fast.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| audio_text | STRING | Exact transcript of what the input audio says. The model needs this to understand the content before editing the audio characteristics (emotion, style, speed, etc). | |
| model_path | COMBO | (No models found - download Step-Audio-EditX) | Step-Audio-EditX model location. Place models in ComfyUI/models/step_audio/ or select from discovered models. |
| device | COMBO | cuda | Hardware device: 'cuda' for GPU (10-100x faster, ~8GB VRAM) or 'cpu' (very slow, no VRAM needed). Always use CUDA if available. |
| torch_dtype | COMBO | bfloat16 | Model precision: bfloat16 (best quality, stable, 8GB VRAM), float16 (good quality, 6GB VRAM), float32 (max quality, 16GB VRAM), auto (selects best for your GPU). |
| quantization | COMBO | none | VRAM 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_mechanism | COMBO | sdpa | Attention layer: sdpa (fastest, good VRAM, default), eager (slowest, most stable), flash_attn (fastest, needs RTX 30xx+), sage_attn (best VRAM efficiency). |
| edit_type | COMBO | emotion | Edit category: emotion (happy, sad, angry), style (whisper, formal), speed (faster/slower), paralinguistic (laughter, breathing), denoising (clean audio). Only one type per edit. |
| emotion | COMBO | none | Target emotion (only if edit_type=emotion): happy, sad, angry, excited, calm, fearful, surprised, disgusted. Changes the emotional tone while keeping voice identity. |
| style | COMBO | none | Speaking style (only if edit_type=style): whisper, gentle, serious, casual, formal, friendly. Changes delivery style while keeping voice and emotion. |
| speed | COMBO | none | Speed adjustment (only if edit_type=speed): faster (1.2x), slower (0.8x), more faster (1.5x), more slower (0.6x). Changes tempo without pitch shift. |
| paralinguistic | COMBO | none | Sound effect (only if edit_type=paralinguistic): [Laughter], [Breathing], [Sigh], [Gasp], [Cough]. Inserts natural non-speech sounds. If paralinguistic_text is empty, auto-appends effect to end of audio. |
| denoising | COMBO | none | Noise removal (only if edit_type=denoising): 'denoise' (remove background noise), 'vad' (voice activity detection, remove silence). Cleans up audio quality. |
| paralinguistic_text | STRING | Text location for effect insertion (only if edit_type=paralinguistic). Example: 'I love this' - effect inserts before/after this phrase. Leave empty to auto-append effect to end of audio_text. | |
| n_edit_iterations | INT | 11–5 | Edit strength through iteration: 1 (subtle change), 2-3 (moderate, recommended), 4-5 (strong, may degrade quality). Each iteration re-applies the edit to amplify the effect. |
| temperature | FLOAT | 0.70.1–2 | Voice variation: 0.1-0.5 (consistent), 0.6-0.8 (natural, recommended), 0.9-1.5 (expressive), 1.6-2.0 (creative). Note: Edit mode hardcoded to 0.7, this parameter has no effect. |
| do_sample | BOOLEAN | true | Sampling mode: True (natural speech) or False (deterministic, greedy decoding). Keep True. Note: Edit mode hardcoded to True, this parameter has no effect. |
| max_new_tokens | INT | 8192256–16384 | Maximum audio tokens to generate: 2048 (~10s), 4096 (~20s), 8192 (~40s). Higher = more VRAM + time. Note: Edit mode hardcoded to 8192, this parameter has no effect. |
| seed | INT | 00–18446744073709550000 | Reproducibility seed: 0 (random output each time) or any number (same input = same output). Use fixed seed to reproduce exact voice outputs. |
| keep_model_in_vram | BOOLEAN | true | Model caching: True (keep loaded, fast repeated use) or False (unload after use, frees ~8GB VRAM). Disable if switching between multiple models frequently. |
| input_audioopt | AUDIO | Source audio to modify (0.5-30 seconds). The AI will apply the selected edit (emotion/style/speed/etc) while preserving voice identity and content. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |