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