Tags: AIahmedshrf/ACE-Step-1.5
Tags
fix: allow cover/repaint tasks with audio codes but no src_audio (ace… …-step#1036) When audio codes are provided (via LM generation or manual input), the cover/repaint/lego/extract tasks should not require src_audio. Previously the validation unconditionally errored when src_audio was missing for these task types, even if audio codes were already supplied. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix(llm): force pt backend on legacy CUDA GPUs (ace-step#932) * fix(llm): force pt backend on legacy CUDA GPUs * fix(llm): resolve startup backend overrides
fix(lrc): always return intermediate tensors so LRC generation works … …for all task types When audio codes are present (e.g. from LLM thinking mode), `_resolve_generate_music_task` silently switches task_type from "text2music" to "cover". The old guard `task_type == "text2music"` then set `should_return_intermediate=False`, causing `_attach_service_generate_outputs` to skip the encoder/context/lyric tensors that `_run_auto_lrc` and `generate_lrc_handler` both require. Fix: set `should_return_intermediate=True` unconditionally so the tensors are always available for downstream LRC generation regardless of the resolved task type. Also harden the batch-management wrapper's final yield to explicitly set LRC display values via `gr.update(value=...)`, ensuring the UI textboxes update even if streaming yields were missed. Made-with: Cursor
fix: handle MLX incompatibility in python_embeded on macOS python_embeded may ship MLX/mlx-lm wheels that are incompatible with the host macOS version: - MLX metallib built for macOS 26 (Metal language 4.0) fails on macOS 15 - mlx-lm 0.23.2 lacks qwen3 model support needed by ACE-Step LM A failed first import of mlx.core partially registers nanobind types; a second import from LLMHandler._is_mlx_available() then triggers a fatal "duplicate key cpu" abort that kills the process. Changes: - pyproject.toml: pin mlx==0.30.6 and mlx-lm==0.29.1 - macOS scripts: add chmod +x for python_embeded binaries; detect MLX or mlx-lm incompatibility and pip install the pinned versions (once) - llm_inference: delegate _is_mlx_available() to the cached mlx_available() helper to prevent the double-import crash Made-with: Cursor
feat: LoKr adapter support, LoRA status fix, and training docs update - Fix LoRA Status textbox visibility in Gradio UI (CSS override for tooltip conflict) - Add LoKr adapter toggle support in set_use_lora/set_lora_scale (LyCORIS set_multiplier) - Add unit tests for LoKr controls (controls_test.py) - Add LoKr training help button and i18n entries (en/zh/ja) - Add LoKr recommendation to LoRA Training Tutorial docs (en/zh/ja/ko)
fix: clear stale UI state on mode switch to prevent remix noise bug When switching between Remix and Custom modes, stale values in text2music_audio_code_string and src_audio leaked across mode boundaries, causing the diffusion pipeline to incorrectly activate the cover path and produce noise output. Root cause: compute_mode_ui_updates only toggled visibility of these components but never cleared their values on mode switch. Changes: - mode_ui.py: extend output tuple to 44 elements; clear audio codes when leaving Custom mode, clear src_audio when entering modes that don't use it (Custom, Simple) - events/__init__.py: add the two new outputs to both the generation_mode.change() and _mode_ui_outputs output lists - audio_transfer.py: update send_audio_to_remix/repaint to match the new 44-element tuple (48 total with 4 data outputs) - generation_progress.py: add defensive guard to force-clear text2music_audio_code_string for non-text2music task types - mode_ui_test.py: add 11 unit tests covering state-clearing behavior
fix: manifest path double-nesting causes training to find no samples save_manifest stored CWD-relative paths (e.g. ./datasets/preprocessed_tensors/foo.pt) in manifest.json. When PreprocessedTensorDataset resolved these relative to tensor_dir, the path doubled up (tensor_dir/datasets/preprocessed_tensors/foo.pt) and no files were found, causing 'No valid samples found in tensor directory'. Changes: - save_manifest: store paths relative to output_dir (just filenames) - PreprocessedTensorDataset: add _resolve_manifest_path with legacy fallback that tries global safe root when tensor_dir-relative path doesn't exist - Add 4 tests covering new format, legacy format, and save_manifest behavior
fix: prevent stale src_audio from leaking into text2music (Custom) mo… …de (ace-step#584) Custom/text2music mode operates exclusively on LM-generated audio codes or user-provided LM Codes Hints. It should never use src_audio. When switching from Remix/Repaint back to Custom, the Gradio UI hides the src_audio widget but does not clear its value. This caused the residual source audio to be processed and affect duration calculation and padding in text2music generation. Fix applied at three defence layers: - results_handlers.py: clear src_audio before building GenerationParams - inference.py: pass None to handler for text2music task_type - handler.py: skip process_src_audio when task_type is text2music Added 13 focused unit tests covering all three layers. Co-authored-by: chuxij <junmingong@qq.com>
Merge pull request ace-step#541 from ace-step/copilot/fix-cuda-runtim… …e-error Fix nanovllm CUBLAS error on Turing GPUs by detecting bfloat16 support
PreviousNext