ACE-Step 1.5 XL Turbo β€” MLX (8-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 β€” a 30-second song generates in about 4 seconds on an M-series Mac, entirely on-device. Instrumental or vocals, 10 seconds to 10 minutes, steerable BPM/key/time signature.

The Music tab in MLX Core: style prompt, structured lyrics, one-click examples, tempo/key dropdowns, and a persistent generation history

Powered by mlx-serve β€” the no-Python local AI engine for your Mac

mlx-serve is a native Zig server that runs any LLM on Apple Silicon β€” MLX models and every GGUF on Hugging Face β€” behind OpenAI-, Anthropic-, and Ollama-compatible APIs on one port. No Python. No cloud. No Electron. The same engine that serves this music model also:

  • πŸ’¬ Chats with anything that speaks OpenAI, Anthropic, or Ollama β€” Claude Code, Cursor, Continue, Open WebUI, Raycast, ollama-python, all unchanged. Measured +35% decode speed vs LM Studio on identical MLX weights, with speculative decoding (PLD, drafter, native MTP), KV-cache quantization, and continuous batching built in.
  • 🎨 Generates and edits images (FLUX.2-klein, Krea-2-Turbo) β€” including instruction editing that keeps your subject intact ("make the hair blue").
  • 🎬 Generates video with sound (LTX-2) β€” text-to-video, animate a photo, or drive a talking character from a real voice clip.
  • πŸ—£οΈ Clones voices (Qwen3-TTS) β€” a few seconds of reference audio, and the hands-free voice assistant answers in your voice.
  • 🧊 Turns photos into textured 3D models (Hunyuan3D-2.1, full PBR).
  • 🎡 Composes music β€” this model, in the Music tab.
  • πŸ€– Runs a built-in agent with MCP tool calling and a sandboxed Linux VM for shell commands, plus one-click launchers for Claude Code and friends.

All of it ships in MLX Core, a native macOS menu-bar app (not Electron), with one-click model downloads β€” or headless via the CLI, Ollama-style:

brew tap ddalcu/mlx-serve https://github.com/ddalcu/mlx-serve
brew install --cask mlx-core   # the menu-bar app
brew install mlx-serve          # CLI server only

mlx-serve run gemma4            # download, serve, and chat β€” one command

Website Β· Download MLX Core.app Β· GitHub β€” β˜… if this saves you from another Electron app, a star genuinely helps people find it.

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

File What
model.safetensors 32-layer DiT decoder + condition encoder (lyric/timbre encoders, text projector) + silence latent. Large linears 8-bit affine (group 64), the rest 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).
text_encoder/ Qwen3-Embedding-0.6B verbatim (bf16, standard qwen3) β€” encodes the style prompt; its embedding table encodes lyrics.
config.json {"model_type": "acestep", ...} β€” the marker mlx-serve's audio engine dispatches on.

No external dependencies β€” text encoder and VAE ride in the bundle. The FSQ audio tokenizer/detokenizer (cover-mode only) is not included; text-to-music doesn't use it.

Use

MLX Core app (macOS): Audio Generation β†’ Music tab β†’ one-click download β†’ describe a style, optionally paste lyrics ([Verse]/[Chorus] structure supported), pick a duration, Generate. Every track lands in a persistent history list. Example prompts are built into the pane.

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-8bit",
       "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 from the fp32 source checkpoint β€” the entire 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:

Stage cos vs fp32 reference
DiT single step 0.9990
Full 8-step schedule 0.9990
Condition encoder 0.999996
VAE decode 0.99994

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
98
Safetensors
Model size
1B 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-8bit

Finetuned
(5)
this model