Skip to content

Commit 3ddb932

Browse files
committed
Fix merge_yi
1 parent 01dad39 commit 3ddb932

File tree

2 files changed

+27
-16
lines changed

2 files changed

+27
-16
lines changed

bert_vits2/text/tone_sandhi.py

+11-4
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,10 @@ def _neural_sandhi(self, word: str, pos: str, finals: List[str]) -> List[str]:
497497
# 个做量词
498498
elif (
499499
ge_idx >= 1
500-
and (word[ge_idx - 1].isnumeric() or word[ge_idx - 1] in "几有两半多各整每做是")
500+
and (
501+
word[ge_idx - 1].isnumeric()
502+
or word[ge_idx - 1] in "几有两半多各整每做是"
503+
)
501504
) or word == "个":
502505
finals[ge_idx] = finals[ge_idx][:-1] + "5"
503506
else:
@@ -634,9 +637,11 @@ def _merge_bu(self, seg: List[Tuple[str, str]]) -> List[Tuple[str, str]]:
634637
# input seg: [('听', 'v'), ('一', 'm'), ('听', 'v')]
635638
# output seg: [['听一听', 'v']]
636639
def _merge_yi(self, seg: List[Tuple[str, str]]) -> List[Tuple[str, str]]:
637-
new_seg = []
640+
new_seg = [] * len(seg)
638641
# function 1
639-
for i, (word, pos) in enumerate(seg):
642+
i = 0
643+
while i < len(seg):
644+
word, pos = seg[i]
640645
if (
641646
i - 1 >= 0
642647
and word == "一"
@@ -645,6 +650,7 @@ def _merge_yi(self, seg: List[Tuple[str, str]]) -> List[Tuple[str, str]]:
645650
and seg[i - 1][1] == "v"
646651
):
647652
new_seg[i - 1][0] = new_seg[i - 1][0] + "一" + new_seg[i - 1][0]
653+
i += 2
648654
else:
649655
if (
650656
i - 2 >= 0
@@ -655,7 +661,8 @@ def _merge_yi(self, seg: List[Tuple[str, str]]) -> List[Tuple[str, str]]:
655661
continue
656662
else:
657663
new_seg.append([word, pos])
658-
seg = new_seg
664+
i += 1
665+
seg = [i for i in new_seg if len(i) > 0]
659666
new_seg = []
660667
# function 2
661668
for i, (word, pos) in enumerate(seg):

gpt_sovits/text/tone_sandhi.py

+16-12
Original file line numberDiff line numberDiff line change
@@ -663,28 +663,32 @@ def _merge_bu(self, seg: List[Tuple[str, str]]) -> List[Tuple[str, str]]:
663663
# input seg: [('听', 'v'), ('一', 'm'), ('听', 'v')]
664664
# output seg: [['听一听', 'v']]
665665
def _merge_yi(self, seg: List[Tuple[str, str]]) -> List[Tuple[str, str]]:
666-
new_seg = []
666+
new_seg = [] * len(seg)
667667
# function 1
668-
for i, (word, pos) in enumerate(seg):
668+
i = 0
669+
while i < len(seg):
670+
word, pos = seg[i]
669671
if (
670-
i - 1 >= 0
671-
and word == "一"
672-
and i + 1 < len(seg)
673-
and seg[i - 1][0] == seg[i + 1][0]
674-
and seg[i - 1][1] == "v"
672+
i - 1 >= 0
673+
and word == "一"
674+
and i + 1 < len(seg)
675+
and seg[i - 1][0] == seg[i + 1][0]
676+
and seg[i - 1][1] == "v"
675677
):
676678
new_seg[i - 1][0] = new_seg[i - 1][0] + "一" + new_seg[i - 1][0]
679+
i += 2
677680
else:
678681
if (
679-
i - 2 >= 0
680-
and seg[i - 1][0] == "一"
681-
and seg[i - 2][0] == word
682-
and pos == "v"
682+
i - 2 >= 0
683+
and seg[i - 1][0] == "一"
684+
and seg[i - 2][0] == word
685+
and pos == "v"
683686
):
684687
continue
685688
else:
686689
new_seg.append([word, pos])
687-
seg = new_seg
690+
i += 1
691+
seg = [i for i in new_seg if len(i) > 0]
688692
new_seg = []
689693
# function 2
690694
for i, (word, pos) in enumerate(seg):

0 commit comments

Comments
 (0)