--- library_name: mlx license: apache-2.0 license_link: https://huggingface.co/Qwen/Qwen3-Embedding-0.6B/blob/main/LICENSE base_model: Qwen/Qwen3-Embedding-0.6B pipeline_tag: text-to-audio tags: - mlx - audio - music - ace-step - qwen3 --- # mlx-community/ACE-Step-1.5-text-encoder-bf16 ACE-Step 1.5 text encoder (Qwen3-Embedding-0.6B) — MLX, bf16. Converted from [ACE-Step/Ace-Step1.5](https://huggingface.co/ACE-Step/Ace-Step1.5) @ `19671f4` by the converter of [xocialize/mlx-ace-step-swift](https://github.com/xocialize/mlx-ace-step-swift) (`Tools/convert/convert.py`, mlx 0.32.4), a full port of [ace-step/ACE-Step-1.5](https://github.com/ace-step/ACE-Step-1.5) @ `ca1e85f` to Swift-MLX. ## What is in the bundle The `Qwen3-Embedding-0.6B` checkpoint ACE-Step 1.5 ships as its text encoder (the caption prompt's last hidden states and the lyric embedding table), in mlx-lm's `model.*` layout with the tokenizer files — the released checkpoint is a bare `Qwen3Model` that `mlx_lm.convert` cannot read, which is why it is published under the ACE-Step name rather than as a community conversion of the Qwen repo (a differently laid-out conversion would not load into the package). 310 tensors, bit-equal to the checkpoint. ## Licence Apache-2.0 (Qwen). Redistributed unmodified beyond the layout conversion; the ACE-Step 1.5 pipeline that consumes it is MIT. The full notice travels with the bundle as `NOTICE`; `LICENSE` is the MIT text. Nothing in the weights is modified beyond the layout conversion (key prefix / conv layout / weight-norm folding) — the converter `Tools/convert/convert.py` in [xocialize/mlx-ace-step-swift](https://github.com/xocialize/mlx-ace-step-swift) is gated bit-equal against upstream's own `dit_convert.py` / `vae_convert.py` (its `MEASUREMENTS.md` §V1). ## Use Every tier of the Swift package loads four bundles — the turbo DiT, one planner, the text encoder and the VAE — and this bundle is one of them. The planner choices: `ACE-Step-1.5-planner-1.7B-8bit` for `.int8` (the default), `-4bit` for `.int4`, `-bf16` for `.bf16` / `.fp32`, and `ACE-Step-1.5-planner-0.6B-bf16` for the lite planner on any tier. The package, [xocialize/mlx-ace-step-swift](https://github.com/xocialize/mlx-ace-step-swift), runs ACE-Step 1.5 on Apple Silicon through [MLX Swift](https://github.com/ml-explore/mlx-swift) and plugs into [MLXEngine](https://github.com/xocialize/mlx-engine-swift) on the `music` capability (caption + lyrics → a 48 kHz stereo song; reference-audio timbre; cover / repaint / extend of a source clip; LRC timestamps). The package's `ACEStepConfiguration` names these repos and the engine materialises them; the parity gates against the upstream oracle (fp32, TF32 off) are recorded in the package's `MEASUREMENTS.md`. ```swift let engine = MLXServeEngine() let id = try await engine.register(ACEStepPackage.registration, configuration: ACEStepConfiguration()) // the .int8 default try await engine.prepare(.music, package: id) let song = try await engine.run(MusicRequest(caption: "…", lyrics: "[Verse]\n…", durationSeconds: 120, seed: 7), package: id) ``` Upstream: [ACE-Step/Ace-Step1.5](https://huggingface.co/ACE-Step/Ace-Step1.5) @ `19671f4` (weights), [ace-step/ACE-Step-1.5](https://github.com/ace-step/ACE-Step-1.5) @ `ca1e85f` (code) — ACE Studio + StepFun, [tech report](https://arxiv.org/abs/2602.00744).