mirror of https://github.com/coqui-ai/TTS.git
56 lines
1.9 KiB
Python
56 lines
1.9 KiB
Python
from typing import Dict, List
|
|
|
|
from TTS.tts.utils.text.phonemizers import DEF_LANG_TO_PHONEMIZER, get_phonemizer_by_name
|
|
|
|
|
|
class MultiPhonemizer:
|
|
"""🐸TTS multi-phonemizer that operates phonemizers for multiple langugages
|
|
|
|
Args:
|
|
custom_lang_to_phonemizer (Dict):
|
|
Custom phonemizer mapping if you want to change the defaults. In the format of
|
|
`{"lang_code", "phonemizer_name"}`. When it is None, `DEF_LANG_TO_PHONEMIZER` is used. Defaults to `{}`.
|
|
|
|
TODO: find a way to pass custom kwargs to the phonemizers
|
|
"""
|
|
|
|
lang_to_phonemizer_name = DEF_LANG_TO_PHONEMIZER
|
|
language = "multi-lingual"
|
|
|
|
def __init__(self, custom_lang_to_phonemizer: Dict = {}) -> None: # pylint: disable=dangerous-default-value
|
|
self.lang_to_phonemizer_name.update(custom_lang_to_phonemizer)
|
|
self.lang_to_phonemizer = self.init_phonemizers(self.lang_to_phonemizer_name)
|
|
|
|
@staticmethod
|
|
def init_phonemizers(lang_to_phonemizer_name: Dict) -> Dict:
|
|
lang_to_phonemizer = {}
|
|
for k, v in lang_to_phonemizer_name.items():
|
|
phonemizer = get_phonemizer_by_name(v, language=k)
|
|
lang_to_phonemizer[k] = phonemizer
|
|
return lang_to_phonemizer
|
|
|
|
@staticmethod
|
|
def name():
|
|
return "multi-phonemizer"
|
|
|
|
def phonemize(self, text, language, separator="|"):
|
|
return self.lang_to_phonemizer[language].phonemize(text, separator)
|
|
|
|
def supported_languages(self) -> List:
|
|
return list(self.lang_to_phonemizer_name.keys())
|
|
|
|
|
|
# if __name__ == "__main__":
|
|
# texts = {
|
|
# "tr": "Merhaba, bu Türkçe bit örnek!",
|
|
# "en-us": "Hello, this is English example!",
|
|
# "de": "Hallo, das ist ein Deutches Beipiel!",
|
|
# "zh-cn": "这是中国的例子",
|
|
# }
|
|
# phonemes = {}
|
|
# ph = MultiPhonemizer()
|
|
# for lang, text in texts.items():
|
|
# phoneme = ph.phonemize(text, lang)
|
|
# phonemes[lang] = phoneme
|
|
# print(phonemes)
|