From ddd0cd75218df44461e209fcc990b9b0ba9f10ea Mon Sep 17 00:00:00 2001 From: Mark Ledford Date: Thu, 19 Feb 2026 01:36:45 -0800 Subject: [PATCH] fix ACE-Step 1.5: max_tokens typo and lyrics embedding truncation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two bugs in ace15.py encode_token_weights(): 1. max_tokens parameter received min_tokens value: `max_tokens=lm_metadata["min_tokens"]` → `max_tokens=lm_metadata["max_tokens"]` This caused the LM to always generate minimum-length audio codes regardless of the requested duration. 2. lyrics_embeds[:, 0] discarded the full lyric sequence, passing only the first token embedding to the diffusion model's lyric encoder. Changed to pass the full lyrics_embeds tensor for proper lyrics conditioning. Co-Authored-By: Claude Opus 4.6 --- comfy/text_encoders/ace15.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/comfy/text_encoders/ace15.py b/comfy/text_encoders/ace15.py index f135d74c1..84b62dbcf 100644 --- a/comfy/text_encoders/ace15.py +++ b/comfy/text_encoders/ace15.py @@ -298,11 +298,11 @@ class ACE15TEModel(torch.nn.Module): self.qwen3_06b.set_clip_options({"layer": [0]}) lyrics_embeds, _, extra_l = self.qwen3_06b.encode_token_weights(token_weight_pairs_lyrics) - out = {"conditioning_lyrics": lyrics_embeds[:, 0]} + out = {"conditioning_lyrics": lyrics_embeds} lm_metadata = token_weight_pairs["lm_metadata"] if lm_metadata["generate_audio_codes"]: - audio_codes = generate_audio_codes(getattr(self, self.lm_model, self.qwen3_06b), token_weight_pairs["lm_prompt"], token_weight_pairs["lm_prompt_negative"], min_tokens=lm_metadata["min_tokens"], max_tokens=lm_metadata["min_tokens"], seed=lm_metadata["seed"], cfg_scale=lm_metadata["cfg_scale"], temperature=lm_metadata["temperature"], top_p=lm_metadata["top_p"], top_k=lm_metadata["top_k"], min_p=lm_metadata["min_p"]) + audio_codes = generate_audio_codes(getattr(self, self.lm_model, self.qwen3_06b), token_weight_pairs["lm_prompt"], token_weight_pairs["lm_prompt_negative"], min_tokens=lm_metadata["min_tokens"], max_tokens=lm_metadata["max_tokens"], seed=lm_metadata["seed"], cfg_scale=lm_metadata["cfg_scale"], temperature=lm_metadata["temperature"], top_p=lm_metadata["top_p"], top_k=lm_metadata["top_k"], min_p=lm_metadata["min_p"]) out["audio_codes"] = [audio_codes] return base_out, None, out