From c8accc79458fb822466934f87824ec88b46498bf Mon Sep 17 00:00:00 2001 From: Lengyue Date: Thu, 4 Jan 2024 05:32:06 +0000 Subject: [PATCH] Fallback to cn2an for window users Signed-off-by: Lengyue --- fish_speech/text/chinese.py | 15 ++++++++++++--- pyproject.toml | 3 ++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/fish_speech/text/chinese.py b/fish_speech/text/chinese.py index 2133a9a14..56a5bf5ec 100644 --- a/fish_speech/text/chinese.py +++ b/fish_speech/text/chinese.py @@ -2,12 +2,22 @@ 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 @@ 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__": diff --git a/pyproject.toml b/pyproject.toml index 87ca2015a..a9ab3ae5e 100644 --- a/pyproject.toml +++ b/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]