Kaynağa Gözat

Fallback to cn2an for window users

Signed-off-by: Lengyue <lengyue@lengyue.me>
Lengyue 2 yıl önce
ebeveyn
işleme
38c599bdc5
2 değiştirilmiş dosya ile 14 ekleme ve 4 silme
  1. 12 3
      fish_speech/text/chinese.py
  2. 2 1
      pyproject.toml

+ 12 - 3
fish_speech/text/chinese.py

@@ -2,12 +2,22 @@ import os
 import re
 
 import jieba.posseg as psg
+from loguru import logger
 from pypinyin import Style, lazy_pinyin
-from tn.chinese.normalizer import Normalizer
 
 from fish_speech.text.symbols import punctuation
 from fish_speech.text.tone_sandhi import ToneSandhi
 
+try:
+    from tn.chinese.normalizer import Normalizer
+
+    normalizer = Normalizer().normalize
+except ImportError:
+    import cn2an
+
+    logger.warning("tn.chinese.normalizer not found, use cn2an normalizer")
+    normalizer = lambda x: cn2an.transform(x, "an2cn")
+
 current_file_path = os.path.dirname(__file__)
 OPENCPOP_DICT_PATH = os.path.join(current_file_path, "opencpop-strict.txt")
 
@@ -16,7 +26,6 @@ pinyin_to_symbol_map = {
     for line in open(OPENCPOP_DICT_PATH).readlines()
 }
 
-normalizer = Normalizer()
 tone_modifier = ToneSandhi()
 
 
@@ -123,7 +132,7 @@ def _g2p(segments):
 
 
 def text_normalize(text):
-    return normalizer.normalize(text)
+    return normalizer(text)
 
 
 if __name__ == "__main__":

+ 2 - 1
pyproject.toml

@@ -35,7 +35,8 @@ dependencies = [
     "loguru>=0.6.0",
     "WeTextProcessing>=0.1.10",
     "loralib>=0.1.2",
-    "natsort>=8.4.0"
+    "natsort>=8.4.0",
+    "cn2an>=0.5.22"
 ]
 
 [project.optional-dependencies]