修复 接入 SenseVoice模型 异常
This commit is contained in:
parent
9e0dca0283
commit
c9ef1d230c
|
|
@ -9,6 +9,7 @@ using System.Runtime.Loader;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using VideoAnalysisCore.AICore.SherpaOnnx;
|
using VideoAnalysisCore.AICore.SherpaOnnx;
|
||||||
|
using VideoAnalysisCore.AICore.Whisper;
|
||||||
using VideoAnalysisCore.Enum;
|
using VideoAnalysisCore.Enum;
|
||||||
using VideoAnalysisCore.Model.Dto;
|
using VideoAnalysisCore.Model.Dto;
|
||||||
using Whisper.net;
|
using Whisper.net;
|
||||||
|
|
@ -138,7 +139,7 @@ namespace VideoAnalysisCore.Common
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static TotalCaptionsDto GetSpeakerCaptions(string task)
|
public static TotalCaptionsDto GetSpeakerCaptions(string task)
|
||||||
{
|
{
|
||||||
var captionsArr = RedisExpand.Redis.HMGet<SegmentData[]>(RedisExpandKey.Task(task), "Captions").FirstOrDefault();
|
var captionsArr = RedisExpand.Redis.HMGet<SenseVoiceRes[]>(RedisExpandKey.Task(task), "Captions").FirstOrDefault();
|
||||||
var speakerArr = RedisExpand.Redis.HMGet<OfflineSpeakerRes[]>(RedisExpandKey.Task(task), "Speaker").FirstOrDefault();
|
var speakerArr = RedisExpand.Redis.HMGet<OfflineSpeakerRes[]>(RedisExpandKey.Task(task), "Speaker").FirstOrDefault();
|
||||||
if (captionsArr is null || captionsArr.Length == 0
|
if (captionsArr is null || captionsArr.Length == 0
|
||||||
|| speakerArr is null || speakerArr.Length == 0)
|
|| speakerArr is null || speakerArr.Length == 0)
|
||||||
|
|
@ -146,18 +147,18 @@ namespace VideoAnalysisCore.Common
|
||||||
// 教师说话人Id
|
// 教师说话人Id
|
||||||
var techerId = speakerArr.GroupBy(s=>s.SpeakerIndex).Select(s => (s.Key,s.Sum(x=>x.Total)))
|
var techerId = speakerArr.GroupBy(s=>s.SpeakerIndex).Select(s => (s.Key,s.Sum(x=>x.Total)))
|
||||||
.OrderByDescending(s=>s.Item2).First().Key;
|
.OrderByDescending(s=>s.Item2).First().Key;
|
||||||
var teacherSpeaking = 0m;
|
var teacherSpeaking = 0f;
|
||||||
var studentSpeaking = 0m;
|
var studentSpeaking = 0f;
|
||||||
var results = new Dictionary<SegmentData, List<int>>();
|
var results = new Dictionary<SenseVoiceRes, List<int>>();
|
||||||
foreach (var segment in captionsArr)
|
foreach (var segment in captionsArr)
|
||||||
{
|
{
|
||||||
var spList = new List<int>();
|
var spList = new List<int>();
|
||||||
foreach (var speakerRes in speakerArr)
|
foreach (var speakerRes in speakerArr)
|
||||||
{
|
{
|
||||||
if ((double)speakerRes.Start > segment.End.TotalSeconds)
|
if (speakerRes.Start > segment.End)
|
||||||
break;
|
break;
|
||||||
if (segment.Start.TotalSeconds <= (double)speakerRes.End
|
if (segment.Start <= speakerRes.End
|
||||||
&& segment.End.TotalSeconds >= (double)speakerRes.Start)
|
&& segment.End >= speakerRes.Start)
|
||||||
{
|
{
|
||||||
if (speakerRes.SpeakerIndex == techerId)
|
if (speakerRes.SpeakerIndex == techerId)
|
||||||
teacherSpeaking += speakerRes.Total;
|
teacherSpeaking += speakerRes.Total;
|
||||||
|
|
@ -176,22 +177,22 @@ namespace VideoAnalysisCore.Common
|
||||||
{
|
{
|
||||||
stringBuilder.Append(item.Value.First());
|
stringBuilder.Append(item.Value.First());
|
||||||
stringBuilder.Append(":");
|
stringBuilder.Append(":");
|
||||||
stringBuilder.Append(item.Key.Start.TotalSeconds);
|
stringBuilder.Append(item.Key.Start);
|
||||||
stringBuilder.Append(":");
|
stringBuilder.Append(":");
|
||||||
stringBuilder.Append(item.Key.End.TotalSeconds);
|
stringBuilder.Append(item.Key.End);
|
||||||
stringBuilder.Append(":");
|
stringBuilder.Append(":");
|
||||||
stringBuilder.Append(item.Key.Text);
|
stringBuilder.Append(item.Key.Text);
|
||||||
stringBuilder.Append("|");
|
stringBuilder.Append("|");
|
||||||
}
|
}
|
||||||
return new TotalCaptionsDto
|
return new TotalCaptionsDto
|
||||||
{
|
{
|
||||||
StudentSpeaking = studentSpeaking,
|
StudentSpeaking = (decimal)studentSpeaking,
|
||||||
TeacherSpeaking = teacherSpeaking,
|
TeacherSpeaking = (decimal)teacherSpeaking,
|
||||||
Captions = stringBuilder.ToString(),
|
Captions = stringBuilder.ToString(),
|
||||||
TimeBase = results.Select(s=>new TimeBase()
|
TimeBase = results.Select(s=>new TimeBase()
|
||||||
{
|
{
|
||||||
Start = s.Key.Start.TotalSeconds,
|
Start = s.Key.Start,
|
||||||
End = s.Key.End.TotalSeconds,
|
End = s.Key.End,
|
||||||
Content = s.Key.Text,
|
Content = s.Key.Text,
|
||||||
TimeBaseType = s.Value.Count == 1 && s.Value.First() == techerId
|
TimeBaseType = s.Value.Count == 1 && s.Value.First() == techerId
|
||||||
? TimeBaseTypeEnum.教师讲授
|
? TimeBaseTypeEnum.教师讲授
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue