From 479049501b4d09c7bb7545bc6cba7f77549a8f7f Mon Sep 17 00:00:00 2001 From: kura Date: Thu, 30 Apr 2026 15:47:58 +0800 Subject: [PATCH] =?UTF-8?q?=E9=81=BF=E5=85=8D=E9=87=8D=E5=A4=8D=E7=9A=84?= =?UTF-8?q?=20segment?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src-tauri/src/whisper.rs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src-tauri/src/whisper.rs b/src-tauri/src/whisper.rs index cfff86b..59d312b 100644 --- a/src-tauri/src/whisper.rs +++ b/src-tauri/src/whisper.rs @@ -104,9 +104,9 @@ impl WhisperEngine { let vad_coverage = speech_coverage_ratio(&normalized_ranges, total_seconds); let should_retry_full_audio = !audio.is_empty() && (segments.is_empty() - || vad_coverage < 0.72 - || vad_end + 2.5 < total_seconds - || (total_seconds > 45.0 && vad_text_len < (total_seconds / 2.4) as usize)); + || vad_coverage < 0.60 + || vad_end + 5.0 < total_seconds + || (total_seconds > 60.0 && vad_text_len < (total_seconds / 3.0) as usize)); if should_retry_full_audio { on_log(format!( @@ -141,6 +141,12 @@ impl WhisperEngine { ))?; segments = full_audio_segments; } else { + on_log(format!( + "whisper: keeping VAD-based transcript (vad_segments={}, full_segments={})", + segments.len(), + full_audio_segments.len() + ))?; + on_reset_segments()?; segments.iter().cloned().try_for_each(&mut on_segment)?; } } @@ -327,10 +333,10 @@ fn should_prefer_full_audio( let vad_end = last_end(vad_segments); let full_end = last_end(full_audio_segments); - full_text_len > vad_text_len + vad_text_len / 5 - || full_audio_segments.len() > vad_segments.len() + 2 - || full_end > vad_end + 2.0 - || (total_seconds > 30.0 && full_end + 1.5 >= total_seconds && vad_end + 3.0 < total_seconds) + full_text_len > vad_text_len + vad_text_len * 3 / 5 + || full_audio_segments.len() > vad_segments.len() + 5 + || full_end > vad_end + 5.0 + || (total_seconds > 60.0 && full_end + 1.5 >= total_seconds && vad_end + 5.0 < total_seconds) } fn resolve_source_language<'a>(