diff --git a/GPT_SoVITS/text/tone_sandhi.py b/GPT_SoVITS/text/tone_sandhi.py index 5ad292f1..e9a279c6 100644 --- a/GPT_SoVITS/text/tone_sandhi.py +++ b/GPT_SoVITS/text/tone_sandhi.py @@ -654,18 +654,19 @@ class ToneSandhi: # function 1 while i < len(seg): word, pos = seg[i] + merged = False if ( i - 1 >= 0 and word == "一" and i + 1 < len(seg) - and seg[i - 1][0] == seg[i + 1][0] - and seg[i - 1][1] == "v" - and seg[i + 1][1] == "v" ): - merged = seg[i - 1][0] + "一" + seg[i + 1][0] - new_seg[-1] = [merged, seg[i - 1][1]] - i += 2 - else: + last = new_seg[-1] if new_seg else seg[i - 1] + if last[0] == seg[i + 1][0] and last[1] == "v" and seg[i + 1][1] == "v": + combined = last[0] + "一" + seg[i + 1][0] + new_seg[-1] = [combined, last[1]] + i += 2 + merged = True + if not merged: new_seg.append([word, pos]) i += 1 seg = new_seg