CoolFace
Modelpublic

ddalcu/ACE-Step-1.5-XL-Turbo-MLX-Serve-8bit

sourceHugging Facemitupdated 1mo agoView on Hugging Face
1likes1.2kdownloads
Model Card

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.

[image]

Powered by mlx-serve — the no-Python local AI engine for your Mac

[mlx-serve](https://github.com/ddalcu/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:

bash
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](https://ddalcu.github.io/mlx-serve/) · [Download MLX Core.app](https://github.com/ddalcu/mlx-serve/releases/latest) · [GitHub](https://github.com/ddalcu/mlx-serve) — ★ if this saves you from another Electron app, a star genuinely helps people find it.

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

FileWhat
model.safetensors32-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.safetensorsAutoencoderOobleck 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:

bash
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:

Stagecos vs fp32 reference
DiT single step0.9990
Full 8-step schedule0.9990
Condition encoder0.999996
VAE decode0.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).