Ariver
2026-07-13 490d60bbc90a4f407d2d9111e0da70e7efe6995a
C1.source/privatevoice.src/internal/engine/engine_windows.go
@@ -14,6 +14,7 @@
type sherpaEngine struct {
   recognizer *sherpa.OfflineRecognizer
   provider   string
   hwInfo     string
}
@@ -45,6 +46,7 @@
         logger.Info("Engine initialized: %s", info)
         return &sherpaEngine{
            recognizer: recognizer,
            provider:   p.provider,
            hwInfo:     info,
         }, nil
      }
@@ -55,13 +57,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
}
@@ -70,6 +94,10 @@
   return e.hwInfo
}
func (e *sherpaEngine) Provider() string {
   return e.provider
}
func (e *sherpaEngine) ReleaseTailCaptureDelay() time.Duration {
   return senseVoiceReleaseTailDelay
}