From 8a53e2f4f73c898bf17d5f8d8301a41aa11845aa Mon Sep 17 00:00:00 2001 From: Hawk Lee Date: Mon, 26 Jan 2026 00:58:18 +0800 Subject: [PATCH] fix(Ditto): smooth pressure release on speech onset to prevent teleport --- libs/Ditto/core/atomic_components/audio2motion.py | 6 +++--- libs/Ditto/stream_pipeline_offline.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/libs/Ditto/core/atomic_components/audio2motion.py b/libs/Ditto/core/atomic_components/audio2motion.py index 898f269..5abcf60 100644 --- a/libs/Ditto/core/atomic_components/audio2motion.py +++ b/libs/Ditto/core/atomic_components/audio2motion.py @@ -350,8 +350,8 @@ 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.224). Seed Offset={self.reset_seed_offset}") + # self.persistent_pressure = 0.0 # Release positional pull instantly -> CHANGED: Let it decay naturally (v1.9.400 Fix) + print(f"[Ditto] Speech Onset Engagement (v1.9.224). Seed Offset={self.reset_seed_offset} | Pressure Retained: {self.persistent_pressure:.2f}") else: self.silence_frames += step_len @@ -393,7 +393,7 @@ class Audio2Motion: if reset or res_kp_seq is None: # [v1.9.400] INSTANT PRESSURE RELEASE # Kill residual IDLE anchor pull-force immediately to prevent 'Hard Reset' feeling. - self.persistent_pressure = 0.0 + # self.persistent_pressure = 0.0 -> CHANGED: Let it decay (Fix Teleport) # actual_last is the physical tail of our history actual_last = res_kp_seq[:, -1:] if res_kp_seq is not None else self.s_kp_cond.reshape(1, 1, -1) diff --git a/libs/Ditto/stream_pipeline_offline.py b/libs/Ditto/stream_pipeline_offline.py index ffda2e2..aaa8a71 100644 --- a/libs/Ditto/stream_pipeline_offline.py +++ b/libs/Ditto/stream_pipeline_offline.py @@ -460,8 +460,8 @@ class StreamSDK: else: # onset_idx == 0. We are at Onset. if silence_frames_count >= min_silence_for_reset: - # do_reset = True - print(f"[Ditto] Speech Onset at Frame {idx}. RESET SKIPPED (Silence: {silence_frames_count}) [Debug Fix].") + do_reset = True + print(f"[Ditto] Speech Onset at Frame {idx}. RESET triggered (Silence: {silence_frames_count}).") silence_frames_count = 0 # Handle trailing