Ariver
2026-07-12 24f551a39eae849d891da26cc91f90d354e3a2db
C1.source/privatevoice.src/internal/engine/engine.go
@@ -21,6 +21,12 @@
   Close()
}
// ProviderEngine is implemented by engines that can report the concrete
// sherpa/onnxruntime provider selected at initialization time.
type ProviderEngine interface {
   Provider() string
}
// StreamingEngine is implemented by engines that can expose partial results
// while audio is still being captured.
type StreamingEngine interface {
@@ -90,7 +96,7 @@
   cfg, err := config.Load()
   if err != nil {
      logger.Error("Failed to load config for model selection: %v", err)
      cfg = config.Default()
      cfg = config.ExistingConfigFallback()
   }
   current := modelselection.Resolve(cfg, language.NewSystemDetector())
   return NewWithModelID(current.ModelID)
@@ -116,6 +122,14 @@
   return newPlatformEngine(resolved)
}
func audioDurationMS(samples []float32) int64 {
   return int64(len(samples)) * 1000 / 16000
}
func durationMS(duration time.Duration) int64 {
   return duration.Milliseconds()
}
func isSupportedBackend(backend string) bool {
   switch backend {
   case model.BackendSenseVoice, model.BackendMoonshine, model.BackendTransducer, model.BackendNemoTransducer, model.BackendQwen3ASR, model.BackendXASRStreaming:
@@ -128,7 +142,7 @@
func resolveCurrentModel() (model.ResolvedModel, error) {
   cfg, err := config.Load()
   if err != nil {
      cfg = config.Default()
      cfg = config.ExistingConfigFallback()
   }
   current := modelselection.Resolve(cfg, language.NewSystemDetector())
   return model.ResolveModel(current.ModelID)