From 8f593a641529e3982d2820e73fd82203b5cfb7f8 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Sat, 13 Jun 2026 22:05:04 +0800
Subject: [PATCH] Build X-ASR local validation package

---
 privatevoice.src/internal/engine/engine.go |   16 +++++++++++++++-
 1 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/privatevoice.src/internal/engine/engine.go b/privatevoice.src/internal/engine/engine.go
index 74a0066..3f939c1 100755
--- a/privatevoice.src/internal/engine/engine.go
+++ b/privatevoice.src/internal/engine/engine.go
@@ -20,6 +20,20 @@
 	Close()
 }
 
+// StreamingEngine is implemented by engines that can expose partial results
+// while audio is still being captured.
+type StreamingEngine interface {
+	NewStreamingSession() (StreamingSession, error)
+}
+
+// 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()
@@ -90,7 +104,7 @@
 
 func isSupportedBackend(backend string) bool {
 	switch backend {
-	case model.BackendSenseVoice, model.BackendMoonshine, model.BackendNemoTransducer, model.BackendQwen3ASR:
+	case model.BackendSenseVoice, model.BackendMoonshine, model.BackendNemoTransducer, model.BackendQwen3ASR, model.BackendXASRStreaming:
 		return true
 	default:
 		return false

--
Gitblit v1.9.3