Ariver
2026-07-02 5df683eba7c103010a7c110d97a5fd808b39fe46
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
}