From 374c582cd1a179ef38f30c726d13c53a755080fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E8=82=A5=E7=BE=8A?= <1048382248@qq.com> Date: Tue, 18 Mar 2025 17:27:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=20sv=E8=AF=AD=E8=A8=80?= =?UTF-8?q?=E8=BD=AC=E5=BD=95=E5=87=BD=E6=95=B0=E6=9C=80=E5=90=8E=E6=88=AA?= =?UTF-8?q?=E6=96=AD=E6=BC=8F=E8=AF=9D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AICore/SherpaOnnx/SenseVoice.cs | 22 +++++++++++-------- VideoAnalysisCore/Common/ExceptionFilter.cs | 9 +------- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/VideoAnalysisCore/AICore/SherpaOnnx/SenseVoice.cs b/VideoAnalysisCore/AICore/SherpaOnnx/SenseVoice.cs index de8f980..e76db03 100644 --- a/VideoAnalysisCore/AICore/SherpaOnnx/SenseVoice.cs +++ b/VideoAnalysisCore/AICore/SherpaOnnx/SenseVoice.cs @@ -110,6 +110,10 @@ namespace VideoAnalysisCore.AICore.SherpaOnnx } + + + + /// /// 获取语音字幕 /// @@ -120,7 +124,7 @@ namespace VideoAnalysisCore.AICore.SherpaOnnx var filePath = Path.Combine(task.LocalPath(), task + ".wav"); if (string.IsNullOrEmpty(filePath) || !File.Exists(filePath)) throw new Exception("task 音频路径未找到"); - await TaskHandle(new WaveReader(filePath)); + await TaskHandle(new WaveReader(filePath), task); } /// @@ -144,14 +148,14 @@ namespace VideoAnalysisCore.AICore.SherpaOnnx for (int i = 0; i != numIter; ++i) { int start = i * windowSize; - //float[] samples = new float[windowSize]; - //Array.Copy(reader.Samples, start, samples, 0, windowSize); - //VAD.AcceptWaveform(samples); + float[] samples = new float[windowSize]; + Array.Copy(reader.Samples, start, samples, 0, windowSize); + VAD.AcceptWaveform(samples); - Memory samples = new float[windowSize]; - Memory sourceSpan = reader.Samples.AsMemory(start, windowSize); - sourceSpan.CopyTo(samples); - VAD.AcceptWaveform(samples.ToArray()); + //Memory samples = new float[windowSize]; + //Memory sourceSpan = reader.Samples.AsMemory(start, windowSize); + //sourceSpan.CopyTo(samples); + //VAD.AcceptWaveform(samples.ToArray()); //是否检测到语音 if (VAD.IsSpeechDetected()) @@ -161,9 +165,9 @@ namespace VideoAnalysisCore.AICore.SherpaOnnx await VAD.ReadNext(res, totalSecond, task); } } + VAD.Flush(); while (!VAD.IsEmpty()) await VAD.ReadNext(res, totalSecond, task); - VAD.Flush(); //如果携带任务ID if (!string.IsNullOrEmpty(task)) { diff --git a/VideoAnalysisCore/Common/ExceptionFilter.cs b/VideoAnalysisCore/Common/ExceptionFilter.cs index 7a439ce..7850e42 100644 --- a/VideoAnalysisCore/Common/ExceptionFilter.cs +++ b/VideoAnalysisCore/Common/ExceptionFilter.cs @@ -14,19 +14,12 @@ namespace VideoAnalysisCore.Common { public class ExceptionFilter : IAsyncExceptionFilter { - readonly NavigationManager nm; - public ExceptionFilter(NavigationManager nm) + public ExceptionFilter() { - this.nm = nm; } public async Task OnExceptionAsync(ExceptionContext context) { - if (context.Exception is InvalidOperationException) - { - nm.NavigateTo("/Login"); - } - else { // 创建一个包含错误信息的对象 var errorObject = new