From ac1d4fd8ef875312d11acd4e4e5935ced542c227 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Mon, 06 Jul 2026 15:50:16 +0800
Subject: [PATCH] docs: record R222 merge closure

---
 C1.source/privatevoice.src/internal/engine/engine.go |   18 ++++++++++++++++--
 1 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/C1.source/privatevoice.src/internal/engine/engine.go b/C1.source/privatevoice.src/internal/engine/engine.go
index aed8e7f..a3eacbe 100755
--- a/C1.source/privatevoice.src/internal/engine/engine.go
+++ b/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)

--
Gitblit v1.9.3