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

Review the original repositories and their licenses before redistribution or commercial use.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for emb1ter/ACE-Step-v1.5-XL-Turbo-ONNX-WebGPU

Quantized
(3)
this model