From 3fbceec8de833416bf1ae049f959f222c3f1a4a0 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Tue, 02 Jun 2026 14:05:59 +0800
Subject: [PATCH] Prepare Round 1 model profile QA baseline
---
privatevoice.src/internal/engine/engine_darwin.go | 54 ++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 38 insertions(+), 16 deletions(-)
diff --git a/VoiceSnapGo/internal/engine/engine_darwin.go b/privatevoice.src/internal/engine/engine_darwin.go
similarity index 61%
rename from VoiceSnapGo/internal/engine/engine_darwin.go
rename to privatevoice.src/internal/engine/engine_darwin.go
index 52af4cb..7a7f9c1 100755
--- a/VoiceSnapGo/internal/engine/engine_darwin.go
+++ b/privatevoice.src/internal/engine/engine_darwin.go
@@ -5,9 +5,10 @@
import (
"fmt"
"voicesnap/internal/logger"
+ "voicesnap/internal/model"
- sherpa "github.com/k2-fsa/sherpa-onnx-go/sherpa_onnx"
_ "github.com/k2-fsa/sherpa-onnx-go-macos"
+ sherpa "github.com/k2-fsa/sherpa-onnx-go/sherpa_onnx"
)
type sherpaEngine struct {
@@ -15,27 +16,17 @@
hwInfo string
}
-func newPlatformEngine() (Engine, error) {
- modelPath := ModelPath()
- tokensPath := TokensPath()
-
- // Try CoreML first, then CPU fallback
- providers := []struct {
- name string
- provider string
- }{
- {"CoreML (Apple Neural Engine)", "coreml"},
- {"CPU", "cpu"},
- }
+func newPlatformEngine(resolved model.ResolvedModel) (Engine, error) {
+ providers := darwinProviders(resolved.ProviderOrder)
for _, p := range providers {
config := sherpa.OfflineRecognizerConfig{}
config.FeatConfig.SampleRate = 16000
config.FeatConfig.FeatureDim = 80
- config.ModelConfig.SenseVoice.Model = modelPath
+ config.ModelConfig.SenseVoice.Model = resolved.Files["model"]
config.ModelConfig.SenseVoice.UseInverseTextNormalization = 1
- config.ModelConfig.Tokens = tokensPath
- config.ModelConfig.NumThreads = 4
+ config.ModelConfig.Tokens = resolved.Files["tokens"]
+ config.ModelConfig.NumThreads = resolved.Profile.NumThreads
config.ModelConfig.Provider = p.provider
config.DecodingMethod = "greedy_search"
@@ -54,6 +45,37 @@
return nil, fmt.Errorf("failed to initialize sherpa-onnx with any provider")
}
+func darwinProviders(providerOrder []string) []struct {
+ name string
+ provider string
+} {
+ names := map[string]string{
+ "coreml": "CoreML (Apple Neural Engine)",
+ "cpu": "CPU",
+ }
+ providers := make([]struct {
+ name string
+ provider string
+ }, 0, len(providerOrder))
+ for _, provider := range providerOrder {
+ name, ok := names[provider]
+ if !ok {
+ continue
+ }
+ providers = append(providers, struct {
+ name string
+ provider string
+ }{name: name, provider: provider})
+ }
+ if len(providers) == 0 {
+ providers = append(providers, struct {
+ name string
+ provider string
+ }{name: "CPU", provider: "cpu"})
+ }
+ return providers
+}
+
func (e *sherpaEngine) Recognize(samples []float32) (string, error) {
stream := sherpa.NewOfflineStream(e.recognizer)
defer sherpa.DeleteOfflineStream(stream)
--
Gitblit v1.9.3