From 3a4281f4959534b1bf5d01acf0085f4f8e6f2ec8 Mon Sep 17 00:00:00 2001
From: wuhongsheng <664116298@qq.com>
Date: 星期五, 05 七月 2024 00:55:32 +0800
Subject: [PATCH] 优化speakid和语句匹配逻辑,部分解决speakid不从0递增问题 (#1870)
---
funasr/models/campplus/utils.py | 18 ++++++++----------
1 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/funasr/models/campplus/utils.py b/funasr/models/campplus/utils.py
index 94b4952..4addd0a 100644
--- a/funasr/models/campplus/utils.py
+++ b/funasr/models/campplus/utils.py
@@ -193,23 +193,21 @@
def distribute_spk(sentence_list, sd_time_list):
- sd_sentence_list = []
+ sd_time_list = [(spk_st * 1000, spk_ed * 1000, spk) for spk_st, spk_ed, spk in sd_time_list]
for d in sentence_list:
- sentence_start = d["start"]
- sentence_end = d["end"]
+ sentence_start = d['start']
+ sentence_end = d['end']
sentence_spk = 0
max_overlap = 0
- for sd_time in sd_time_list:
- spk_st, spk_ed, spk = sd_time
- spk_st = spk_st * 1000
- spk_ed = spk_ed * 1000
+ for spk_st, spk_ed, spk in sd_time_list:
overlap = max(min(sentence_end, spk_ed) - max(sentence_start, spk_st), 0)
if overlap > max_overlap:
max_overlap = overlap
sentence_spk = spk
- d["spk"] = int(sentence_spk)
- sd_sentence_list.append(d)
- return sd_sentence_list
+ if overlap > 0 and sentence_spk == spk:
+ max_overlap += overlap
+ d['spk'] = int(sentence_spk)
+ return sentence_list
class Storage(metaclass=ABCMeta):
--
Gitblit v1.9.1