From ddbd0b7ac03c8e97d8ba54708d61e8c0c96ad160 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Wed, 01 Jul 2026 23:28:45 +0800
Subject: [PATCH] Stop tracking local release artifacts

---
 privatevoice.src/internal/engine/engine_darwin.go |   33 ++++++++++++++++++++-------------
 1 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/privatevoice.src/internal/engine/engine_darwin.go b/privatevoice.src/internal/engine/engine_darwin.go
index 5caceb8..ddf1ad8 100755
--- a/privatevoice.src/internal/engine/engine_darwin.go
+++ b/privatevoice.src/internal/engine/engine_darwin.go
@@ -27,8 +27,9 @@
 )
 
 type sherpaEngine struct {
-	recognizer *sherpa.OfflineRecognizer
-	hwInfo     string
+	recognizer  *sherpa.OfflineRecognizer
+	backendKind string
+	hwInfo      string
 }
 
 type xasrStreamingEngine struct {
@@ -66,8 +67,9 @@
 			info := fmt.Sprintf("%s ยท %s", resolved.Profile.DisplayName, p.name)
 			logger.Info("Engine initialized: %s", info)
 			return &sherpaEngine{
-				recognizer: recognizer,
-				hwInfo:     info,
+				recognizer:  recognizer,
+				backendKind: resolved.BackendKind,
+				hwInfo:      info,
 			}, nil
 		}
 		logger.Info("Failed to init with %s, trying next provider", p.name)
@@ -118,21 +120,19 @@
 		config.ModelConfig.Moonshine.Encoder = resolved.Files["encoder"]
 		config.ModelConfig.Moonshine.UncachedDecoder = resolved.Files["uncached_decoder"]
 		config.ModelConfig.Moonshine.CachedDecoder = resolved.Files["cached_decoder"]
+	case model.BackendTransducer:
+		config.ModelConfig.Transducer.Encoder = resolved.Files["encoder"]
+		config.ModelConfig.Transducer.Decoder = resolved.Files["decoder"]
+		config.ModelConfig.Transducer.Joiner = resolved.Files["joiner"]
 	case model.BackendNemoTransducer:
 		config.ModelConfig.Transducer.Encoder = resolved.Files["encoder"]
 		config.ModelConfig.Transducer.Decoder = resolved.Files["decoder"]
 		config.ModelConfig.Transducer.Joiner = resolved.Files["joiner"]
 		config.ModelConfig.ModelType = model.BackendNemoTransducer
 	case model.BackendQwen3ASR:
-		config.ModelConfig.Qwen3ASR.ConvFrontend = resolved.Files["conv_frontend"]
-		config.ModelConfig.Qwen3ASR.Encoder = resolved.Files["encoder"]
-		config.ModelConfig.Qwen3ASR.Decoder = resolved.Files["decoder"]
-		config.ModelConfig.Qwen3ASR.Tokenizer = resolved.Files["tokenizer"]
-		config.ModelConfig.Qwen3ASR.MaxTotalLen = 1024
-		config.ModelConfig.Qwen3ASR.MaxNewTokens = 256
-		config.ModelConfig.Qwen3ASR.Temperature = 0.0
-		config.ModelConfig.Qwen3ASR.TopP = 0.9
-		config.ModelConfig.Qwen3ASR.Seed = 0
+		if err := applyQwen3ASRConfig(&config, resolved); err != nil {
+			return sherpa.OfflineRecognizerConfig{}, err
+		}
 	default:
 		return sherpa.OfflineRecognizerConfig{}, fmt.Errorf("unsupported backend kind: %s", resolved.BackendKind)
 	}
@@ -315,6 +315,13 @@
 	return e.hwInfo
 }
 
+func (e *sherpaEngine) ReleaseTailCaptureDelay() time.Duration {
+	if e.backendKind == model.BackendSenseVoice {
+		return senseVoiceReleaseTailDelay
+	}
+	return 0
+}
+
 func (e *xasrStreamingEngine) HardwareInfo() string {
 	return e.hwInfo
 }

--
Gitblit v1.9.3