{
  "family": "ace_step",
  "display_name": "ACE-Step",
  "description": "Open-source ACE-Step 1.5 music generation model for text-to-music and lyrics-to-song workflows across 50+ languages, with editing routes such as cover generation, repainting, continuation, stem extraction, and vocal-to-BGM conversion.",
  "category": "audio_generation",
  "status": "supported",
  "tasks": [
    "music",
    "edit"
  ],
  "modes": [
    "offline"
  ],
  "languages": [
    "50+ languages"
  ],
  "capabilities": {
    "music": [
      "lyrics"
    ],
    "edit": [
      "prompt_editing"
    ]
  },
  "options": {
    "request": [
      {
        "name": "route",
        "type": "enum",
        "description": "ACE-Step operation to run; default text2music.",
        "values": [
          "text2music",
          "complete",
          "lego",
          "extract",
          "cover",
          "cover-nofsq",
          "repaint"
        ],
        "required": false,
        "default": "text2music"
      },
      {
        "name": "lyrics",
        "type": "string",
        "description": "Vocal lyrics.",
        "required": false
      },
      {
        "name": "duration_sec",
        "type": "float",
        "description": "Target generated audio duration in seconds; when omitted, ACE-Step falls back to planner/config duration, then 30 seconds.",
        "required": false,
        "min": 0.0
      },
      {
        "name": "language",
        "type": "string",
        "description": "Vocal language for lyrics.",
        "required": false
      },
      {
        "name": "track_name",
        "type": "string",
        "description": "Track name used by lego and extract routes.",
        "required": false
      },
      {
        "name": "complete_track_classes",
        "type": "string_list",
        "description": "Track classes for complete route.",
        "required": false
      },
      {
        "name": "repaint_start",
        "type": "float",
        "description": "Repaint start time in seconds; omitted means the start of the input region.",
        "required": false,
        "min": 0.0
      },
      {
        "name": "repaint_end",
        "type": "float",
        "description": "Repaint end time in seconds; omitted means the end of the input region.",
        "required": false,
        "min": 0.0
      },
      {
        "name": "repaint_mode",
        "type": "enum",
        "description": "Preset repaint blending policy; default balanced.",
        "values": [
          "balanced",
          "conservative",
          "aggressive"
        ],
        "required": false,
        "default": "balanced"
      },
      {
        "name": "repaint_strength",
        "type": "float",
        "description": "Repaint strength; default 0.5 when repainting is active.",
        "required": false,
        "min": 0.0,
        "default": 0.5
      },
      {
        "name": "num_inference_steps",
        "type": "int",
        "description": "Diffusion denoising steps; default 8.",
        "required": false,
        "min": 1,
        "default": 8
      },
      {
        "name": "guidance_scale",
        "type": "float",
        "description": "Diffusion classifier-free guidance scale; default 1.0.",
        "required": false,
        "min": 0.0,
        "default": 1.0
      },
      {
        "name": "seed",
        "type": "int",
        "description": "Generation seed for reproducible output; omitted uses a random seed.",
        "required": false,
        "min": 0
      },
      {
        "name": "bpm",
        "type": "int",
        "description": "Force BPM metadata.",
        "required": false,
        "min": 0
      },
      {
        "name": "keyscale",
        "type": "float",
        "description": "Force key metadata.",
        "required": false
      },
      {
        "name": "time_signature",
        "type": "string",
        "description": "Force time signature metadata.",
        "required": false
      },
      {
        "name": "negative_prompt",
        "type": "string",
        "description": "Negative prompt.",
        "required": false
      },
      {
        "name": "audio_codes",
        "type": "string",
        "description": "Use supplied ACE semantic code text instead of planner generation.",
        "required": false
      },
      {
        "name": "audio_cover_strength",
        "type": "float",
        "description": "Cover strength for cover/edit-style conditioning; default 1.0.",
        "required": false,
        "min": 0.0,
        "default": 1.0
      },
      {
        "name": "cover_noise_strength",
        "type": "float",
        "description": "Noise strength for cover conditioning; default 0.0.",
        "required": false,
        "min": 0.0,
        "default": 0.0
      },
      {
        "name": "lm_temperature",
        "type": "float",
        "description": "Planner sampling temperature; default 0.85.",
        "required": false,
        "min": 0.0,
        "default": 0.85
      },
      {
        "name": "lm_guidance_scale",
        "type": "float",
        "description": "Planner classifier-free guidance scale; default 2.0.",
        "required": false,
        "min": 0.0,
        "default": 2.0
      },
      {
        "name": "lm_top_k",
        "type": "int",
        "description": "Planner top-k sampling limit; default 0 disables top-k.",
        "required": false,
        "min": 0,
        "default": 0
      },
      {
        "name": "lm_top_p",
        "type": "float",
        "description": "Planner nucleus sampling probability; default 0.9.",
        "required": false,
        "min": 0.0,
        "max": 1.0,
        "default": 0.9
      },
      {
        "name": "lm_repetition_penalty",
        "type": "float",
        "description": "Planner repetition penalty; default 1.0.",
        "required": false,
        "min": 0.0,
        "default": 1.0
      },
      {
        "name": "sampler",
        "type": "enum",
        "description": "Diffusion sampler used for denoising; default euler.",
        "values": [
          "euler",
          "heun"
        ],
        "required": false,
        "default": "euler"
      },
      {
        "name": "retake_seed",
        "type": "int",
        "description": "Optional retake noise seed; -1 clears it. Omitted leaves retake noise unset.",
        "required": false,
        "min": 0
      },
      {
        "name": "retake_variance",
        "type": "float",
        "description": "Retake noise mixing strength; default 0.0.",
        "required": false,
        "min": 0.0,
        "default": 0.0
      },
      {
        "name": "flow_edit_morph",
        "type": "bool",
        "description": "Status: parsed for text2music, but not usable because the flow-edit diffusion overlay is not implemented.",
        "required": false,
        "default": false
      },
      {
        "name": "dcw_enabled",
        "type": "bool",
        "description": "Status: experimental dynamic-cfg wavelet path; keep disabled unless validating that path.",
        "required": false,
        "default": false
      }
    ],
    "session": [
      {
        "name": "weight_type",
        "type": "enum",
        "description": "Shared ACE-Step weight storage type; default native.",
        "preset": "weight_type_full",
        "required": false
      },
      {
        "name": "dit_weight_type",
        "type": "enum",
        "description": "DiT weight storage type; defaults to weight_type, with f16 promoted to bf16.",
        "preset": "weight_type_full",
        "required": false
      },
      {
        "name": "planner_weight_type",
        "type": "enum",
        "description": "Planner LM weight storage type; defaults to weight_type.",
        "preset": "weight_type_full",
        "required": false
      },
      {
        "name": "text_encoder_weight_type",
        "type": "enum",
        "description": "Text encoder weight storage type; defaults to weight_type.",
        "preset": "weight_type_full",
        "required": false
      },
      {
        "name": "vae_weight_type",
        "type": "enum",
        "description": "VAE weight storage type; defaults to weight_type.",
        "preset": "weight_type_full",
        "required": false
      },
      {
        "name": "mem_saver",
        "type": "bool",
        "description": "Release staged runtime graphs after each request; default false.",
        "required": false,
        "default": false
      }
    ],
    "load": [
      {
        "name": "dit_variant",
        "type": "enum",
        "description": "DiT variant inside the model package; default acestep-v15-turbo.",
        "values": [
          "acestep-v15-turbo",
          "acestep-v15-base"
        ],
        "required": false,
        "default": "acestep-v15-turbo"
      }
    ]
  },
  "runtime": {
    "tags": [
      "gguf"
    ]
  },
  "sources": [
    {
      "format": "gguf",
      "roots": {
        "model": ".",
        "weights": "$gguf"
      },
      "files": {
        "dit_turbo_config": "model:acestep-v15-turbo/config.json",
        "dit_base_config": "model:acestep-v15-base/config.json",
        "lm_config": "model:acestep-5Hz-lm-1.7B/config.json",
        "lm_tokenizer_config": "model:acestep-5Hz-lm-1.7B/tokenizer_config.json",
        "lm_vocab": "model:acestep-5Hz-lm-1.7B/vocab.json",
        "lm_merges": "model:acestep-5Hz-lm-1.7B/merges.txt",
        "lm_tokenizer_json": "model:acestep-5Hz-lm-1.7B/tokenizer.json",
        "lm_chat_template": "model:acestep-5Hz-lm-1.7B/chat_template.jinja",
        "text_encoder_config": "model:Qwen3-Embedding-0.6B/config.json",
        "text_encoder_tokenizer_config": "model:Qwen3-Embedding-0.6B/tokenizer_config.json",
        "text_encoder_vocab": "model:Qwen3-Embedding-0.6B/vocab.json",
        "text_encoder_merges": "model:Qwen3-Embedding-0.6B/merges.txt",
        "text_encoder_tokenizer_json": "model:Qwen3-Embedding-0.6B/tokenizer.json",
        "text_encoder_chat_template": "model:Qwen3-Embedding-0.6B/chat_template.jinja",
        "vae_config": "model:vae/config.json"
      },
      "tensors": {
        "dit_turbo_weights": {
          "source": "weights:",
          "prefix": "dit_turbo_weights"
        },
        "dit_turbo_silence_latent": {
          "source": "weights:",
          "prefix": "dit_turbo_silence_latent"
        },
        "dit_base_weights": {
          "source": "weights:",
          "prefix": "dit_base_weights"
        },
        "dit_base_silence_latent": {
          "source": "weights:",
          "prefix": "dit_base_silence_latent"
        },
        "lm_weights": {
          "source": "weights:",
          "prefix": "lm_weights"
        },
        "text_encoder_weights": {
          "source": "weights:",
          "prefix": "text_encoder_weights"
        },
        "vae_weights": {
          "source": "weights:",
          "prefix": "vae_weights"
        }
      }
    },
    {
      "format": "safetensors",
      "roots": {
        "model": "."
      },
      "files": {
        "dit_turbo_config": "model:acestep-v15-turbo/config.json",
        "dit_base_config": "model:acestep-v15-base/config.json",
        "lm_config": "model:acestep-5Hz-lm-1.7B/config.json",
        "lm_tokenizer_config": "model:acestep-5Hz-lm-1.7B/tokenizer_config.json",
        "lm_vocab": "model:acestep-5Hz-lm-1.7B/vocab.json",
        "lm_merges": "model:acestep-5Hz-lm-1.7B/merges.txt",
        "lm_tokenizer_json": "model:acestep-5Hz-lm-1.7B/tokenizer.json",
        "lm_chat_template": "model:acestep-5Hz-lm-1.7B/chat_template.jinja",
        "text_encoder_config": "model:Qwen3-Embedding-0.6B/config.json",
        "text_encoder_tokenizer_config": "model:Qwen3-Embedding-0.6B/tokenizer_config.json",
        "text_encoder_vocab": "model:Qwen3-Embedding-0.6B/vocab.json",
        "text_encoder_merges": "model:Qwen3-Embedding-0.6B/merges.txt",
        "text_encoder_tokenizer_json": "model:Qwen3-Embedding-0.6B/tokenizer.json",
        "text_encoder_chat_template": "model:Qwen3-Embedding-0.6B/chat_template.jinja",
        "vae_config": "model:vae/config.json"
      },
      "tensors": {
        "dit_turbo_weights": "model:acestep-v15-turbo/model.safetensors",
        "dit_turbo_silence_latent": "model:acestep-v15-turbo/silence_latent.safetensors",
        "dit_base_weights": "model:acestep-v15-base/model.safetensors",
        "dit_base_silence_latent": "model:acestep-v15-base/silence_latent.safetensors",
        "lm_weights": "model:acestep-5Hz-lm-1.7B/model.safetensors",
        "text_encoder_weights": "model:Qwen3-Embedding-0.6B/model.safetensors",
        "vae_weights": "model:vae/diffusion_pytorch_model.safetensors"
      }
    }
  ],
  "package_defaults": {
    "download": {
      "kind": "huggingface_snapshot",
      "repo": "audio-cpp/audio.cpp-gguf",
      "revision": "main",
      "gated": false
    }
  },
  "packages": [
    {
      "id": "ace_step_turbo_q8_0",
      "display_name": "ACE-Step 1.5 Turbo Q8_0 GGUF",
      "default": true,
      "format": "gguf",
      "precision": "q8_0",
      "target_directory": "ACE-Step1.5-GGUF",
      "files": [
        "ACE-Step1.5-GGUF/turbo/ace-step-1.5-turbo-q8_0.gguf"
      ],
      "strip_prefix": "ACE-Step1.5-GGUF"
    },
    {
      "id": "ace_step_turbo_bf16",
      "display_name": "ACE-Step 1.5 Turbo BF16 GGUF",
      "format": "gguf",
      "precision": "bf16",
      "target_directory": "ACE-Step1.5-GGUF",
      "files": [
        "ACE-Step1.5-GGUF/turbo/ace-step-1.5-turbo-bf16.gguf"
      ],
      "strip_prefix": "ACE-Step1.5-GGUF"
    },
    {
      "id": "ace_step_base_q8_0",
      "display_name": "ACE-Step 1.5 Base Q8_0 GGUF",
      "format": "gguf",
      "precision": "q8_0",
      "target_directory": "ACE-Step1.5-GGUF",
      "files": [
        "ACE-Step1.5-GGUF/base/ace-step-1.5-base-q8_0.gguf"
      ],
      "strip_prefix": "ACE-Step1.5-GGUF"
    },
    {
      "id": "ace_step_base_bf16",
      "display_name": "ACE-Step 1.5 Base BF16 GGUF",
      "format": "gguf",
      "precision": "bf16",
      "target_directory": "ACE-Step1.5-GGUF",
      "files": [
        "ACE-Step1.5-GGUF/base/ace-step-1.5-base-bf16.gguf"
      ],
      "strip_prefix": "ACE-Step1.5-GGUF"
    }
  ]
}
