From 015f1089ea875a153dd2a18ef42c25145d4868f5 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Sat, 11 Jul 2026 22:28:32 +0800
Subject: [PATCH] freeze(mas): snapshot tested 2.2.3 build 20260711.1807

---
 C1.source/privatevoice.src/internal/engine/engine_linux.go |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/C1.source/privatevoice.src/internal/engine/engine_linux.go b/C1.source/privatevoice.src/internal/engine/engine_linux.go
index 2d9fde2..1539bf5 100755
--- a/C1.source/privatevoice.src/internal/engine/engine_linux.go
+++ b/C1.source/privatevoice.src/internal/engine/engine_linux.go
@@ -14,6 +14,7 @@
 
 type sherpaEngine struct {
 	recognizer *sherpa.OfflineRecognizer
+	provider   string
 	hwInfo     string
 }
 
@@ -36,6 +37,7 @@
 		logger.Info("Engine initialized: %s", info)
 		return &sherpaEngine{
 			recognizer: recognizer,
+			provider:   "cpu",
 			hwInfo:     info,
 		}, nil
 	}
@@ -44,13 +46,35 @@
 }
 
 func (e *sherpaEngine) Recognize(samples []float32) (string, error) {
+	totalStart := time.Now()
+	streamStart := time.Now()
 	stream := sherpa.NewOfflineStream(e.recognizer)
+	streamMS := durationMS(time.Since(streamStart))
 	defer sherpa.DeleteOfflineStream(stream)
 
+	acceptStart := time.Now()
 	stream.AcceptWaveform(16000, samples)
+	acceptMS := durationMS(time.Since(acceptStart))
 
+	decodeStart := time.Now()
 	e.recognizer.Decode(stream)
+	decodeMS := durationMS(time.Since(decodeStart))
+	resultStart := time.Now()
 	result := stream.GetResult()
+	resultMS := durationMS(time.Since(resultStart))
+	logger.Info(
+		"PERF engine_recognize_detail backend=%q provider=%q engine=%q samples=%d audio_ms=%d create_stream_ms=%d accept_ms=%d decode_ms=%d result_ms=%d total_ms=%d",
+		model.BackendSenseVoice,
+		e.provider,
+		e.hwInfo,
+		len(samples),
+		audioDurationMS(samples),
+		streamMS,
+		acceptMS,
+		decodeMS,
+		resultMS,
+		durationMS(time.Since(totalStart)),
+	)
 
 	return result.Text, nil
 }
@@ -59,6 +83,10 @@
 	return e.hwInfo
 }
 
+func (e *sherpaEngine) Provider() string {
+	return e.provider
+}
+
 func (e *sherpaEngine) ReleaseTailCaptureDelay() time.Duration {
 	return senseVoiceReleaseTailDelay
 }

--
Gitblit v1.9.3