From 0ffbf1935c9d091cce22a5583275ac0902f7a693 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Thu, 02 Jul 2026 03:04:51 +0800
Subject: [PATCH] Add Cantonese language model support
---
privatevoice.src/internal/engine/engine_darwin.go | 30 +++++++++++++++++-------------
1 files changed, 17 insertions(+), 13 deletions(-)
diff --git a/privatevoice.src/internal/engine/engine_darwin.go b/privatevoice.src/internal/engine/engine_darwin.go
index 5dd090d..156b48e 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)
@@ -112,6 +114,7 @@
switch resolved.BackendKind {
case model.BackendSenseVoice:
config.ModelConfig.SenseVoice.Model = resolved.Files["model"]
+ config.ModelConfig.SenseVoice.Language = resolved.Profile.LanguageParam
config.ModelConfig.SenseVoice.UseInverseTextNormalization = 1
case model.BackendMoonshine:
config.ModelConfig.Moonshine.Preprocessor = resolved.Files["preprocessor"]
@@ -128,15 +131,9 @@
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)
}
@@ -319,6 +316,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