MMD-Coder/persian-tts-piper
1
1import hazm2import typing3 4normalizer = hazm.Normalizer()5sent_tokenizer = hazm.SentenceTokenizer()6word_tokenizer = hazm.WordTokenizer()7 8tagger = hazm.POSTagger(9 model=str("gyroing/PersianTextCorrection_Hazm/pos_tagger.model")10 )11 12def preprocess_text(text: str) -> typing.List[typing.List[str]]:13 """Split/normalize text into sentences/words with hazm"""14 text = normalizer.normalize(text)15 processed_sentences = []16 17 for sentence in sent_tokenizer.tokenize(text):18 words = word_tokenizer.tokenize(sentence)19 processed_words = fix_words(words)20 processed_sentences.append(" ".join(processed_words))21 22 return " ".join(processed_sentences)23 24def fix_words(words: typing.List[str]) -> typing.List[str]:25 fixed_words = []26 27 for word, pos in tagger.tag(words):28 if pos[-1] == "Z":29 if word[-1] != "ِ":30 if (word[-1] == "ه") and (word[-2] != "ا"):31 word += "ی"32 word += "ِ"33 34 35 fixed_words.append(word)36 37 return fixed_words