ACE-Step 1.5 XL Turbo β€” MLX (4-bit) for mlx-serve

Native Apple Silicon build of ACE-Step 1.5 XL Turbo (4-billion-parameter music-generation DiT, 8-step distilled, no CFG) for mlx-serve. Type a style prompt ("upbeat synthwave with driving bass"), optionally add lyrics, and get an original 48 kHz stereo track β€” entirely on-device.

Contents (one self-contained bundle, ~4.0 GB)

File What
model.safetensors 32-layer DiT decoder + condition encoder + silence latent. Large linears 4-bit affine (group 64); the timestep-embedding family stays 8-bit β€” its adaLN scale/shift modulates every layer and few-step turbo models compound modulation error; norms/convs/small projections bf16. Conv layouts pre-swapped to MLX [out, K, in].
vae.safetensors AutoencoderOobleck audio VAE (48 kHz stereo, hop 1920 β†’ 25 Hz latents). Weight-norm fused, bf16 (Snake Ξ±/Ξ² fp32) β€” audio VAEs are precision-critical, so no quantization here.
text_encoder/ Qwen3-Embedding-0.6B verbatim (bf16, standard qwen3) β€” encodes the style prompt; its embedding table encodes lyrics.
config.json {"model_type": "acestep", "quant": "4bit", ...} β€” the marker mlx-serve's audio engine dispatches on.

No external dependencies β€” text encoder and VAE ride in the bundle. mlx-serve infers each tensor's (bits, group) from packed geometry, so this mixed 4/8-bit checkpoint loads through the same code path as the 8-bit build.

Use

Server API:

mlx-serve --serve --model-dir ~/.mlx-serve/models
curl -X POST http://127.0.0.1:8080/v1/audio/music-generations \
  -H 'Content-Type: application/json' \
  -d '{"model": "ACE-Step-1.5-XL-Turbo-MLX-Serve-4bit",
       "prompt": "upbeat synthwave with driving bass, dreamy pads",
       "duration_seconds": 30, "seed": 7}' \
  -o track.wav

Fields: prompt (required), lyrics (empty β†’ instrumental), vocal_language, bpm (30–300), keyscale (e.g. "F# minor"), timesignature (2/3/4/6), duration_seconds (10–600), seed, stream (SSE progress: encode β†’ 8 diffusion steps β†’ chunked VAE decode).

Conversion & fidelity

Converted by mlx-serve's tests/convert_acestep_weights.py --bits 4 from the fp32 source checkpoint. The full pipeline (Qwen3 text encoding, condition encoders, the 32-layer DiT, the flow-match sampler with DCW correction, and the Oobleck VAE) is re-implemented natively in Zig on MLX and validated against the fp32 PyTorch reference with cosine-similarity oracles (measured on the 8-bit build; the 4-bit build shares every code path and differs only in weight precision). Same-seed A/B clips against the 8-bit build show matching loudness and spectral balance; expect slightly softer detail than 8-bit, most audible on dense vocal mixes.

License & credits

MIT (see LICENSE). Original model by ACE Studio and StepFun β€” trained on licensed, royalty-free, and synthetic data; generated music is commercially usable per the upstream project. Text encoder: Qwen3-Embedding-0.6B (Qwen team, Apache 2.0).

Downloads last month
109
Safetensors
Model size
0.8B params
Tensor type
BF16
Β·
U32
Β·
MLX
Hardware compatibility
Log In to add your hardware

Quantized

Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for ddalcu/ACE-Step-1.5-XL-Turbo-MLX-Serve-4bit

Finetuned
(5)
this model