From d14fa75079de570cb9c4dbf63f6b5bd65f959b09 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Sun, 14 Jun 2026 20:14:34 +0800
Subject: [PATCH] Fix X-ASR release tail capture
---
privatevoice.src/internal/engine/engine.go | 21 +++++++++++++++++++++
1 files changed, 21 insertions(+), 0 deletions(-)
diff --git a/privatevoice.src/internal/engine/engine.go b/privatevoice.src/internal/engine/engine.go
index 6473cb6..c3e564d 100755
--- a/privatevoice.src/internal/engine/engine.go
+++ b/privatevoice.src/internal/engine/engine.go
@@ -2,6 +2,7 @@
import (
"fmt"
+ "time"
"voicesnap/internal/config"
"voicesnap/internal/language"
"voicesnap/internal/logger"
@@ -20,6 +21,26 @@
Close()
}
+// StreamingEngine is implemented by engines that can expose partial results
+// while audio is still being captured.
+type StreamingEngine interface {
+ NewStreamingSession() (StreamingSession, error)
+}
+
+// ReleaseTailCaptureEngine is implemented by engines that need a short audio
+// capture grace period after the user releases the recording hotkey.
+type ReleaseTailCaptureEngine interface {
+ ReleaseTailCaptureDelay() time.Duration
+}
+
+// StreamingSession receives incremental 16kHz mono PCM and returns the current
+// best transcript for the active utterance.
+type StreamingSession interface {
+ Accept(samples []float32) (string, error)
+ Finish() (string, error)
+ Close()
+}
+
// ModelDir returns the path to the sensevoice model directory.
func ModelDir() string {
resolved, err := resolveCurrentModel()
--
Gitblit v1.9.3