From 62431b1eae386b8466a1d8676d82865d4a4362f9 Mon Sep 17 00:00:00 2001 From: wangzeyuan Date: Thu, 5 Jun 2025 17:57:39 +0800 Subject: [PATCH] fix _merge_yi crash --- GPT_SoVITS/text/tone_sandhi.py | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/GPT_SoVITS/text/tone_sandhi.py b/GPT_SoVITS/text/tone_sandhi.py index 964ea385..5ad292f1 100644 --- a/GPT_SoVITS/text/tone_sandhi.py +++ b/GPT_SoVITS/text/tone_sandhi.py @@ -650,8 +650,10 @@ class ToneSandhi: # output seg: [['听一听', 'v']] def _merge_yi(self, seg: List[Tuple[str, str]]) -> List[Tuple[str, str]]: new_seg = [] + i = 0 # function 1 - for i, (word, pos) in enumerate(seg): + while i < len(seg): + word, pos = seg[i] if ( i - 1 >= 0 and word == "一" @@ -660,22 +662,16 @@ class ToneSandhi: and seg[i - 1][1] == "v" and seg[i + 1][1] == "v" ): - new_seg[i - 1][0] = new_seg[i - 1][0] + "一" + new_seg[i - 1][0] + merged = seg[i - 1][0] + "一" + seg[i + 1][0] + new_seg[-1] = [merged, seg[i - 1][1]] + i += 2 else: - if ( - i - 2 >= 0 - and seg[i - 1][0] == "一" - and seg[i - 2][0] == word - and pos == "v" - and seg[i - 2][1] == "v" - ): - continue - else: - new_seg.append([word, pos]) + new_seg.append([word, pos]) + i += 1 seg = new_seg new_seg = [] # function 2 - for i, (word, pos) in enumerate(seg): + for word, pos in seg: if new_seg and new_seg[-1][0] == "一": new_seg[-1][0] = new_seg[-1][0] + word else: