AuK Generate / Edit
Six knobs, mono 24 kHz, and the `seconds` field everyone fights
- model
- conditioning
- vae
- AUDIO
That's the whole sampler. No KSampler, no scheduler pack, no CFG - the pack implements AuK's own sampling loop and gives you six fields. Output is a core AUDIO socket, mono 24 kHz, so it wires straight into Preview Audio, Save Audio (Advanced), or anything downstream that takes audio.
The model does four jobs: text-only speech, voice cloning from a reference clip, content edits on a recording, and separation/enhancement. All four use the same node; whether you're generating or editing is decided upstream by whether Instruction Encode got an audio input.
How it works
For each conditioning entry, the node re-encodes the source clip through the AuK VAE into a reference latent (sampled with the run's seed), works out the target length as seconds × 50 latent frames, and runs an Euler loop. Base uses the time grid built from steps plus the sway-warped schedule; Flash ignores all three and runs its fixed four-step grid. Guidance isn't CFG: when it's on, the conditioned and unconditioned velocities are computed together and combined as conditional + guidance × (conditional − unconditional). Flash skips conditioning guidance entirely.
The final latent goes back through the VAE in fp32 and gets trimmed to exactly seconds × 24000 samples. That last detail explains most "it cut off my last word" complaints: the length is a hard cut, not a fade. Roughly 2–3 spoken words per second is the sizing rule for TTS.
The inputs
model,conditioning,vae- from the three loaders and Instruction Encode. The VAE must be the one from AuK VAE Loader; anything else is rejected.seconds- the one to get right.0means "match the source duration" and is what you want for nearly every edit. Text-only generation needs a positive value or the node refuses to run.seed- drives the diffusion noise and the reference-latent sampling. Each batch item usesseed + index.steps- Base only, default 32, 16–50 sensible, up to 1000 if you enjoy waiting.guidance- Base only, default 2, and the author is explicit that this is not KSampler CFG. Treat 2 as a fixed starting point rather than a dial to crank.sway- Base only, default -1,0disables the warped time grid. A sampling-schedule trick, same family as the sigma-shift style knobs elsewhere.
The documented starting point is worth trusting: Base at 32 steps, guidance 2, sway -1, seed 42.
Install
cd ComfyUI/custom_nodes && git clone https://github.com/Saganaki22/ComfyUI-AuK
cd ComfyUI-AuK && python -m pip install -r requirements.txt
This node needs all three model files: a Base or Flash checkpoint in models/diffusion_models/, a Qwen encoder in models/text_encoders/, and auk_vae.safetensors in models/vae/. Verify with three example workflows in example_workflows/ - drag one JSON onto the canvas.
Where people get burned
Speed edits need seconds to change. The instruction "adjust the speech speed to 1.25x" and seconds=0 fight each other. Do the arithmetic: a 10-second source at 1.25x wants seconds=8. At 0.8x it wants 12.5.
Volume edits need seconds=0 and no post-processing. The pack decodes directly to preserve amplitude precisely because stock audio decode tends to normalize loud outputs and quietly undo a gain change. If you then run it through a normalizer, you've earned the confusion.
There is no combined source-plus-target cap. Upstream's ComfyUI wrapper enforces a 30-second shared budget; this integration follows upstream's Python tooling and sets no limit. Nice when you need it, and a quiet way to blow up VRAM when you don't. Longer audio means more memory and more time, and peak VRAM is dominated by audio length, the attention backend and ComfyUI's offloading - about 8 GB has been reported with a quantized model and encoder pair.
Attention silently downgrades. If you forced flash_attention or sageattention and the step carries an edit mask, the node falls back to SDPA. That's by design, but it means "why is the edit run slower than the TTS run" has a boring answer.
"AuK generated non-finite audio." That error is telling you the numerics went bad. Try a BF16 checkpoint with fp32 compute - the node's own advice. troubleshooting.md has the general version of this: nan/inf output is a precision problem far more often than a model problem.
Interrupts are handled. Each step checks ComfyUI's interrupt flag and there's a progress bar per conditioning item, so a runaway 5-minute clip can actually be cancelled rather than holding your GPU hostage.
Which variant to run is the same trade as every distilled checkpoint: Flash for the draft, Base for the take. Flash's four steps are a fixed schedule, so the quality difference you notice when switching to Base isn't your settings changing - it's the extra 28 steps actually doing work.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| model | AUK_MODEL | AuK model from AuK Model Loader. | |
| conditioning | CONDITIONING | Conditioning from AuK Instruction Encode. | |
| vae | VAE | AuK VAE from AuK VAE Loader. Its own decode preserves AuK's volume edits. | |
| seconds | FLOAT | 3.00–3600 | Output length in seconds. 0 matches the source audio's duration. Text-only generation needs a positive value; roughly 2-3 spoken words per second. |
| seed | INT | 00–18446744073709550000 | Drives the diffusion noise and reference-latent sampling. Each batch item uses seed + index. |
| steps | INT | 321–1000 | Euler steps for Base; 32 is the upstream default and 16-50 is sensible. Flash ignores this and always runs its fixed 4-step schedule. |
| guidance | FLOAT | 2.00–100 | AuK guidance strength for Base; 2 is the upstream default. This is not KSampler CFG. Flash ignores this. |
| sway | FLOAT | -1.00-1–0 | Sway sampling for Base; -1 is the upstream default, 0 disables it. Flash ignores this. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| AUDIO | AUDIO | — |