chore: use 5s silence before speech, 2s after

main
Peter Steinberger 2025-12-08 17:06:12 +01:00
parent c3f955d3f1
commit 0f0a2dddfe
1 changed files with 5 additions and 1 deletions

View File

@ -28,7 +28,10 @@ actor VoiceWakeRuntime {
private var currentConfig: RuntimeConfig? private var currentConfig: RuntimeConfig?
// Tunables // Tunables
// Silence threshold once we've captured user speech (post-trigger).
private let silenceWindow: TimeInterval = 2.0 private let silenceWindow: TimeInterval = 2.0
// Silence threshold when we only heard the trigger but no post-trigger speech yet.
private let triggerOnlySilenceWindow: TimeInterval = 5.0
// Maximum capture duration from trigger until we force-send, to avoid runaway sessions. // Maximum capture duration from trigger until we force-send, to avoid runaway sessions.
private let captureHardStop: TimeInterval = 120.0 private let captureHardStop: TimeInterval = 120.0
private let debounceAfterSend: TimeInterval = 0.35 private let debounceAfterSend: TimeInterval = 0.35
@ -233,7 +236,8 @@ actor VoiceWakeRuntime {
return return
} }
if let last = self.lastHeard, now.timeIntervalSince(last) >= self.silenceWindow { let silenceThreshold = self.heardBeyondTrigger ? self.silenceWindow : self.triggerOnlySilenceWindow
if let last = self.lastHeard, now.timeIntervalSince(last) >= silenceThreshold {
await self.finalizeCapture(config: config) await self.finalizeCapture(config: config)
return return
} }