Cw
2026-07-04 82cd3980eca7cc896c4b276ed4d43520c6265239
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
}