ACE-Step 1.5 XL Turbo ONNX WebGPU
Experimental browser-oriented INT4 and INT8 ONNX exports of the official
ACE-Step/acestep-v15-xl-turbo
4.169B diffusion transformer and its checkpoint-specific condition encoder.
The q4 files are the standard profile and the q8 files are the
high-precision profile of the
ai-music-js browser library.
Large external data is split for streaming into browser Origin Private File
System storage and for ONNX Runtime Web session creation. The JavaScript
package, Worker, ONNX Runtime Web WASM runtime, tokenizer, text encoder, lyric
embedding, semantic-code detokenizer, VAE, and silence conditioning asset are
not duplicated in this repository.
This is an unofficial, experimental conversion. It is not affiliated with or endorsed by the ACE-Step authors.
Files
| File | Bytes | SHA-256 |
|---|---|---|
condition_encoder_xl_turbo_q4.onnx |
2,136,693 | 014fbbeb20670cf794aa06ffaa5277bb315e3fc67510455e05ea64e141c4bdc4 |
condition_encoder_xl_turbo_q4.onnx.data |
347,366,896 | bb920790b5f3fbe971b0ca0b3952ddbbbb35cda2be63a9d2ccdf07799b1887ef |
dit_decoder_xl_turbo_q4.onnx |
9,017,416 | d1eeb43e3179330c659973063aad0f2b4e2fccf50ecdc98867b1d8e1b2fb9eb6 |
dit_decoder_xl_turbo_q4.onnx.data.0 |
949,514,240 | 4c99cf781a99a375864a55826e86bab51e58cb2e779023b37f8d397ed38d307f |
dit_decoder_xl_turbo_q4.onnx.data.1 |
942,622,720 | b004bb039425f3078812712cf5f906c878adaa44747fb507f3d3cb039080dd68 |
dit_decoder_xl_turbo_q4.onnx.data.2 |
811,806,720 | c838939bd8f54996f2a3fc7d1dd6bc079249d1acb00f6b789fce4953ce5965b6 |
condition_encoder_xl_turbo_q8.onnx |
2,137,573 | f933f30cd87e4030b1d95b36dc92a662e13e682ae2076b3578d077808edebbaa |
condition_encoder_xl_turbo_q8.onnx.data.0 |
656,270,832 | cc6eafe5803de0545ea4ad54fe23dd7c9145eae69e35de72d060dcf1e254a93d |
dit_decoder_xl_turbo_q8.onnx |
9,026,143 | 653df670bd64795997c27d514253f36611f1f80f3212301bfe75e767f117d9f9 |
dit_decoder_xl_turbo_q8.onnx.data.0 |
948,725,760 | 056d247a0c005bf5d364c09c454a7daa121c3299140122cf9445ed48510ce7ca |
dit_decoder_xl_turbo_q8.onnx.data.1 |
945,377,280 | f11eb6bf28bd5415076f278697182012ea552334726f90a6e08e1912f12c2b4c |
dit_decoder_xl_turbo_q8.onnx.data.2 |
932,659,200 | 00550dbe002c49fd7bd9f49ab1c8596f524ddc6cb3dc3b8ebd7233d7370a6625 |
dit_decoder_xl_turbo_q8.onnx.data.3 |
932,659,200 | b2b6af4149eb18b43627ea2d6e121ee71fb82bb43ec4bad56d77439bfd127e51 |
dit_decoder_xl_turbo_q8.onnx.data.4 |
932,659,200 | 6a264fc667bba0225b47fa5af98d38545c18ebf11e330fc8ce3fe4700c61f2c9 |
dit_decoder_xl_turbo_q8.onnx.data.5 |
80,547,840 | ce908e20fca3d0f9f60a35b6835e4ea3b4cea27ede840f1cba6a6a8ec41471cc |
XL-specific download:
- INT4 standard: 3,062,464,685 bytes (3.062 GB / 2.852 GiB)
- INT8 high precision: 5,440,063,028 bytes (5.440 GB / 5.066 GiB)
The DiT data files are initializer-aligned, sub-1 GB chunks. Larger external data files exceeded Chromium's single-buffer path during ONNX Runtime Web session creation. Repacking only changed external-data locations and offsets; it did not change tensor values.
Browser usage
npm install ai-music-js
import { AceStepWebGpu } from "ai-music-js";
const ace = new AceStepWebGpu();
const result = await ace.generate({
prompt:
"Warm analog synthwave instrumental, steady electronic drums, pulsing bass, cinematic pads, memorable lead melody, polished studio mix",
audioQuality: "high",
seed: 42,
durationSeconds: 10,
});
const audio = new Audio(URL.createObjectURL(result.wav));
await audio.play();
The URL above is pinned to the verified model-file commit. Use main only
when you intentionally want future artifact revisions.
The complete browser model set is approximately 5.246 GB. Shared model and support assets are resolved by the npm library from pinned upstream Hugging Face revisions. The intended runtime is current desktop Chrome or Edge with WebGPU; compatibility mode uses WASM for unsupported operations and forces the VAE decoder to WASM for correctness.
Export configuration
- Official ACE-Step runtime commit:
6d53286b9183b720b2b86f338a06b2a614836871 - Starting ONNX conversion:
shreyask/ACE-Step-v1.5-ONNX@bdabfb5684fd70fcc76f98cbb51bb9ebc47ee342 - XL Turbo DiT: 32 layers, hidden size 2560, 4,168,897,088 parameters
- Standard quantization: asymmetric INT4
MatMulNBits, block size 64,accuracy_level=1 - High-precision quantization: asymmetric INT8
MatMulNBits, block size 64,accuracy_level=1 - Batch size: 1
- Inference: instrumental, no planning LM, no reference audio, no CFG
- Sampler: eight shift-3 Euler flow-matching evaluations
- Output: 48 kHz stereo
- Validated duration shapes: 10โ120 seconds
- ONNX Runtime native: 1.23.2
- ONNX Runtime Web: 1.27.0
The condition and DiT graphs are fresh checkpoint-specific exports. The
unofficial shreyask/ACE-Step-v1.5-ONNX repository supplied the experimental
starting point and shared browser assets, but its published Turbo DiT uses the
smaller 24-layer, hidden-size-2048 architecture rather than XL.
Numerical validation
The complete condition โ eight-step DiT โ VAE chains were compared with the
official Python implementation using the same prompt, seed 42, learned
silence latent, and deterministic browser-compatible noise generator.
| Profile | Duration | Condition cosine | Final latent cosine | Waveform cosine |
|---|---|---|---|---|
| INT8 high precision | 10 seconds | 0.999983 | 0.999882 | 0.999490 |
| INT4 standard | 10 seconds | 0.994970 | 0.960302 | 0.867693 |
| INT4 standard | 20 seconds | 0.994971 | 0.877853 | 0.718767 |
The INT8 first DiT velocity cosine was 0.999859 and its mean absolute error
was 0.014079. The resulting ten-second waveform passed the numerical parity
threshold. The 20-second INT4 run remained finite and non-collapsed, but its
divergence compounds with duration and exceeds the chosen parity gate.
Successful model loading alone is not evidence of successful music
generation. A browser WebGPU listening run of the new INT8 profile remains an
acceptance gate.
The corresponding FP32 ONNX exports matched the Python implementation closely:
- condition encoder maximum absolute error:
0.00000182 - condition encoder cosine: effectively
1.0 - first DiT velocity maximum absolute error:
0.00031088 - first DiT velocity cosine:
0.9999999997
WebGPU notes
Both profiles use com.microsoft:MatMulNBits. Static inspection and native
ONNX Runtime validation found no known strict-WebGPU blocker in either fresh
XL graph. Each INT8 external-data shard is smaller than 1 GB.
The shared upstream Qwen3 graph contains ai.onnx:IsNaN, so the browser
pipeline requests WebGPU with WASM compatibility fallback. The supplied VAE
uses WASM because its browser WebGPU FP16 convolution path previously produced
truncated audio. Heavy XL condition and DiT inference remains WebGPU-first.
Limitations
Unsupported: vocals, planning LM, reference audio, source audio, cover/repaint/lego/extract, audio-code hints, CFG, base/SFT checkpoints, DCW, Heun/SDE samplers, durations beyond 120 seconds, tiled long-form generation, batching, LoRA, mobile, Safari, and Firefox.
Peak browser memory and browser wall time vary substantially by browser, adapter, duration, and cache state and are not represented by the native validation timings.
Attribution
- Original model and implementation:
ACE-Step/acestep-v15-xl-turbo - Experimental ONNX starting point and shared assets:
shreyask/ACE-Step-v1.5-ONNX
Review the original repositories and their licenses before redistribution or commercial use.
Model tree for emb1ter/ACE-Step-v1.5-XL-Turbo-ONNX-WebGPU
Base model
ACE-Step/acestep-v15-xl-turbo