From 2bb392c03cdc76e27716f1d957cbb59016feaa4d Mon Sep 17 00:00:00 2001
From: cai <cai@nbcai.cc>
Date: Thu, 09 Jul 2026 18:48:12 +0800
Subject: [PATCH] fix: include activity wall time

---
 src/main.rs |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/main.rs b/src/main.rs
index cf7cb4f..05ba69b 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -596,6 +596,7 @@
         "traceId": trace_id,
         "turnId": turn_id,
         "eventName": event_name,
+        "eventWallTimeMs": current_time_millis(),
         "result": result,
         "reasonCode": reason_code,
         "retryable": retryable,
@@ -2258,8 +2259,8 @@
             rms_threshold: f64_env("CV_VAD_RMS_THRESHOLD", 0.012),
             peak_threshold: f64_env("CV_VAD_PEAK_THRESHOLD", 0.08),
             start_frames: u32_env("CV_VAD_START_FRAMES", 5).max(1),
-            end_silence_ms: u64_env("CV_VAD_END_SILENCE_MS", 700).max(100),
-            min_speech_ms: u64_env("CV_VAD_MIN_SPEECH_MS", 300).max(1),
+            end_silence_ms: u64_env("CV_VAD_END_SILENCE_MS", 400).max(100),
+            min_speech_ms: u64_env("CV_VAD_MIN_SPEECH_MS", 250).max(1),
             max_turn_ms: u64_env("CV_VAD_MAX_TURN_MS", 10_000).max(1_000),
             initial_ignore_ms: u64_env("CV_VAD_INITIAL_IGNORE_MS", 500),
         }
@@ -2372,7 +2373,9 @@
             return None;
         }
 
-        let voiced = rms >= self.config.rms_threshold || peak >= self.config.peak_threshold;
+        // Align with cb-sdk's energy-based segmentation: peak is diagnostic only,
+        // otherwise isolated spikes can keep a turn open until max_turn_ms.
+        let voiced = rms >= self.config.rms_threshold;
         if !self.in_speech {
             self.remember_pre_speech_frame(frame);
         }

--
Gitblit v1.9.3