fix: v1.9.227 Reverting to 0:201 slice to restore mouth dynamics
This commit is contained in:
@@ -345,7 +345,7 @@ class Audio2Motion:
|
||||
self.silence_frames = 0
|
||||
self.is_talking_state = True
|
||||
self.persistent_pressure = 0.0 # Release positional pull instantly
|
||||
print(f"[Ditto] Speech Onset Engagement (v1.9.226). Seed Offset={self.reset_seed_offset}")
|
||||
print(f"[Ditto] Speech Onset Engagement (v1.9.227). Seed Offset={self.reset_seed_offset}")
|
||||
else:
|
||||
self.silence_frames += step_len
|
||||
|
||||
@@ -354,7 +354,7 @@ class Audio2Motion:
|
||||
# Important: We must pass the UNWARPED history to the AI for condition update.
|
||||
clean_history = res_kp_seq.copy()
|
||||
if self.warp_decay > 0.001:
|
||||
clean_history[0, :, :202] -= self.warp_offset[0, 0, :202] * self.warp_decay
|
||||
clean_history[0, :, :201] -= self.warp_offset[0, 0, :201] * self.warp_decay
|
||||
|
||||
self._update_kp_cond(clean_history, clean_history.shape[1], step_len, is_onset=reset)
|
||||
else:
|
||||
@@ -362,24 +362,24 @@ class Audio2Motion:
|
||||
|
||||
pred_kp_seq = self.lmdm(self.kp_cond, aud_cond, self.sampling_timesteps)
|
||||
|
||||
# [v1.9.219] JAW-ISOLATED PRESSURE (0:202)
|
||||
# We pull Position and Pose (0:202) to the anchor in IDLE.
|
||||
# Index 202+ (Expressions) are EXCLUDED so the AI always has full control.
|
||||
# [v1.9.219] JAW-ISOLATED PRESSURE (0:201)
|
||||
# We pull Position and Pose (0:201) to the anchor in IDLE.
|
||||
# Index 201+ (Expressions) are EXCLUDED so the AI always has full control.
|
||||
target_pressure = 0.0 if getattr(self, "is_talking_state", False) else 0.60
|
||||
anchor_p = (self.s_kp_cond + self.brownian_pos)[0, 0:202]
|
||||
anchor_p = (self.s_kp_cond + self.brownian_pos)[0, 0:201]
|
||||
|
||||
for f in range(pred_kp_seq.shape[1]):
|
||||
diff = target_pressure - self.persistent_pressure
|
||||
move = np.clip(diff, -0.06, 0.06)
|
||||
self.persistent_pressure += move
|
||||
|
||||
# Apply pressure strictly to Position + Pose (0:202)
|
||||
# Apply pressure strictly to Position + Pose (0:201)
|
||||
curr_p = self.persistent_pressure
|
||||
pred_kp_seq[0, f, 0:202] = pred_kp_seq[0, f, 0:202] * (1.0 - curr_p) + anchor_p * curr_p
|
||||
pred_kp_seq[0, f, 0:201] = pred_kp_seq[0, f, 0:201] * (1.0 - curr_p) + anchor_p * curr_p
|
||||
|
||||
if self.clip_idx % 20 == 0:
|
||||
mode_s = "SPEECH" if getattr(self, "is_talking_state", False) else "IDLE"
|
||||
print(f"[v1.9.226 {mode_s}] Pressure: {self.persistent_pressure*100:.0f}% (Delta={self.delta_p:+.2f})")
|
||||
print(f"[v1.9.227 {mode_s}] Pressure: {self.persistent_pressure*100:.0f}% (Delta={self.delta_p:+.2f})")
|
||||
|
||||
# [v1.9.225] ONSET COORDINATE ALIGNMENT
|
||||
# ...
|
||||
@@ -392,12 +392,12 @@ class Audio2Motion:
|
||||
|
||||
self.warp_offset = actual_last - target_entry
|
||||
self.warp_decay = 1.0 # Engage full power
|
||||
print(f"[Ditto Warp] Speech Onset Aligned (v1.9.226). Offset={np.abs(self.warp_offset).mean():.4f}")
|
||||
print(f"[Ditto Warp] Speech Onset Aligned (v1.9.227). Offset={np.abs(self.warp_offset).mean():.4f}")
|
||||
|
||||
# Apply Warp (Pose Only: 0:202)
|
||||
# Apply Warp (Pose Only: 0:201)
|
||||
if self.warp_decay > 0.001:
|
||||
# Apply uniform offset to the whole prediction buffer
|
||||
pred_kp_seq[0, :, :202] += self.warp_offset[0, 0, :202] * self.warp_decay
|
||||
pred_kp_seq[0, :, :201] += self.warp_offset[0, 0, :201] * self.warp_decay
|
||||
|
||||
# [v1.9.221] CONDITIONAL DECAY
|
||||
if not getattr(self, "is_talking_state", False):
|
||||
@@ -440,7 +440,7 @@ class Audio2Motion:
|
||||
# Restore clean history for monitoring
|
||||
clean_res = res_kp_seq.copy()
|
||||
if self.warp_decay > 0.001:
|
||||
clean_res[0, :, :202] -= self.warp_offset[0, 0, :202] * self.warp_decay
|
||||
clean_res[0, :, :201] -= self.warp_offset[0, 0, :201] * self.warp_decay
|
||||
|
||||
self._update_kp_cond(clean_res, idx, step_len=step_len, is_onset=False)
|
||||
|
||||
|
||||
@@ -534,7 +534,7 @@ class MotionStitch:
|
||||
self.fix_exp_a3 = _a2
|
||||
|
||||
# [Debug v1.9.208] Verify Code Sync
|
||||
print(f"[AIIA Debug] MotionStitch Setup: v1.9.226. LATEST VERSION LOADED.")
|
||||
print(f"[AIIA Debug] MotionStitch Setup: v1.9.227. LATEST VERSION LOADED.")
|
||||
|
||||
|
||||
if self.drive_eye and self.delta_eye_arr is not None:
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
[project]
|
||||
name = "aiia"
|
||||
description = "The Ultimate AI Audio/Video toolkit for ComfyUI. Features an enhanced Ditto (with optimizations that outperform official demos and other SOTA talking head models in lip-sync accuracy and natural motion), EchoMimic V3 & FLOAT, VibeVoice & CosyVoice 3.0 (Zero-Shot Voice Cloning), Multi-Role Podcast Generation, and a powerful Media Browser."
|
||||
version = "1.9.226"
|
||||
version = "1.9.227"
|
||||
license = {file = "LICENSE"}
|
||||
readme = "README.md"
|
||||
authors = [
|
||||
|
||||
Reference in New Issue
Block a user