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_darwin.go | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 57 insertions(+), 1 deletions(-)
diff --git a/C1.source/privatevoice.src/internal/engine/engine_darwin.go b/C1.source/privatevoice.src/internal/engine/engine_darwin.go
index 156b48e..0d44ab5 100755
--- a/C1.source/privatevoice.src/internal/engine/engine_darwin.go
+++ b/C1.source/privatevoice.src/internal/engine/engine_darwin.go
@@ -29,11 +29,13 @@
type sherpaEngine struct {
recognizer *sherpa.OfflineRecognizer
backendKind string
+ provider string
hwInfo string
}
type xasrStreamingEngine struct {
recognizer *sherpa.OnlineRecognizer
+ provider string
hwInfo string
mu sync.Mutex
}
@@ -69,6 +71,7 @@
return &sherpaEngine{
recognizer: recognizer,
backendKind: resolved.BackendKind,
+ provider: p.provider,
hwInfo: info,
}, nil
}
@@ -93,6 +96,7 @@
logger.Info("Engine initialized: %s", info)
return &xasrStreamingEngine{
recognizer: recognizer,
+ provider: p.provider,
hwInfo: info,
}, nil
}
@@ -196,28 +200,72 @@
}
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(asrSampleRate, 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",
+ e.backendKind,
+ e.provider,
+ e.hwInfo,
+ len(samples),
+ audioDurationMS(samples),
+ streamMS,
+ acceptMS,
+ decodeMS,
+ resultMS,
+ durationMS(time.Since(totalStart)),
+ )
return result.Text, nil
}
func (e *xasrStreamingEngine) Recognize(samples []float32) (string, error) {
+ totalStart := time.Now()
+ sessionStart := time.Now()
session, err := e.NewStreamingSession()
if err != nil {
return "", err
}
+ sessionMS := durationMS(time.Since(sessionStart))
defer session.Close()
+ acceptStart := time.Now()
if _, err := session.Accept(samples); err != nil {
return "", err
}
- return session.Finish()
+ acceptMS := durationMS(time.Since(acceptStart))
+ finishStart := time.Now()
+ text, err := session.Finish()
+ finishMS := durationMS(time.Since(finishStart))
+ if err == nil {
+ logger.Info(
+ "PERF engine_recognize_detail backend=%q provider=%q engine=%q samples=%d audio_ms=%d create_session_ms=%d accept_ms=%d finish_ms=%d total_ms=%d",
+ model.BackendXASRStreaming,
+ e.provider,
+ e.hwInfo,
+ len(samples),
+ audioDurationMS(samples),
+ sessionMS,
+ acceptMS,
+ finishMS,
+ durationMS(time.Since(totalStart)),
+ )
+ }
+ return text, err
}
func (e *xasrStreamingEngine) NewStreamingSession() (StreamingSession, error) {
@@ -316,6 +364,10 @@
return e.hwInfo
}
+func (e *sherpaEngine) Provider() string {
+ return e.provider
+}
+
func (e *sherpaEngine) ReleaseTailCaptureDelay() time.Duration {
if e.backendKind == model.BackendSenseVoice {
return senseVoiceReleaseTailDelay
@@ -327,6 +379,10 @@
return e.hwInfo
}
+func (e *xasrStreamingEngine) Provider() string {
+ return e.provider
+}
+
func (e *xasrStreamingEngine) ReleaseTailCaptureDelay() time.Duration {
return xasrReleaseTailDelay
}
--
Gitblit v1.9.3