Views
No views yet
hidden_size=2560, 32 layers, 32 heads; encoder_hidden_size=2048 on the condition encoder).AceStepPipeline, which is available in huggingface/diffusers.scripts/convert_ace_step_to_diffusers.py from the upstream release and packaged in the standard Diffusers pipeline layout (model_index.json + one subdirectory per module), so the full pipeline can be loaded in a single from_pretrained call.AceStepPipeline.pip install git+https://github.com/huggingface/diffusers.git1import torch
2import soundfile as sf
3from diffusers import AceStepPipeline
4
5pipe = AceStepPipeline.from_pretrained(
6 "ACE-Step/acestep-v15-xl-base-diffusers",
7 torch_dtype=torch.bfloat16,
8)
9pipe = pipe.to("cuda")
10
11# Long-form audio: enable VAE tiling to keep decode memory bounded.
12pipe.vae.enable_tiling()
13
14output = pipe(
15 prompt="An upbeat synthwave track with driving drums and a catchy lead",
16 lyrics="[Verse]\nNeon lights are calling me\n[Chorus]\nRide the wave tonight",
17 audio_duration=30.0,
18 num_inference_steps=50,
19 guidance_scale=7.0,
20 shift=3.0,
21 generator=torch.Generator(device="cuda").manual_seed(42),
22)
23
24audio = output.audios[0] # (channels, samples), 48 kHz
25sf.write("acestep-xl-base.wav", audio.T.cpu().float().numpy(), pipe.sample_rate)guidance_scale > 1.0; num_inference_steps=50, guidance_scale=7.0, and shift=3.0 are the recommended defaults. Pass num_inference_steps=50 explicitly so generation does not use the lower-step turbo setting.1pipe.transformer.set_attention_backend("flash_varlen")
2pipe.condition_encoder.set_attention_backend("flash_varlen")flash backend is also suitable.├── model_index.json
├── transformer/ # AceStepTransformer1DModel (DiT, 5B params, bf16)
├── condition_encoder/ # AceStepConditionEncoder (with baked-in silence_latent)
├── audio_tokenizer/ # AceStepAudioTokenizer
├── audio_token_detokenizer/ # AceStepAudioTokenDetokenizer
├── vae/ # AutoencoderOobleck (48 kHz stereo)
├── text_encoder/ # Qwen3-Embedding-0.6B
├── tokenizer/ # Qwen3 tokenizer
├── scheduler/ # FlowMatchEulerDiscreteScheduler config
└── silence_latent.pt # Raw reference (kept for debugging; not needed at runtime)text_encoder/ (Qwen3-Embedding-0.6B): Apache 2.0 - redistributed per Qwen's license@misc{gong2026acestep,
title = {ACE-Step 1.5: Pushing the Boundaries of Open-Source Music Generation},
author = {Junmin Gong, Yulin Song, Wenxiao Zhao, Sen Wang, Shengyuan Xu, Jing Guo},
howpublished = {\url{https://github.com/ace-step/ACE-Step-1.5}},
year = {2026},
note = {GitHub repository}
}