mirror of https://github.com/coqui-ai/TTS.git
73 lines
2.1 KiB
Python
73 lines
2.1 KiB
Python
from typing import Dict
|
|
|
|
from TTS.tts.utils.text.japanese.phonemizer import japanese_text_to_phonemes
|
|
from TTS.tts.utils.text.phonemizers.base import BasePhonemizer
|
|
|
|
_DEF_JA_PUNCS = "、.,[]()?!〽~『』「」【】"
|
|
|
|
_TRANS_TABLE = {"、": ","}
|
|
|
|
|
|
def trans(text):
|
|
for i, j in _TRANS_TABLE.items():
|
|
text = text.replace(i, j)
|
|
return text
|
|
|
|
|
|
class JA_JP_Phonemizer(BasePhonemizer):
|
|
"""🐸TTS Ja-Jp phonemizer using functions in `TTS.tts.utils.text.japanese.phonemizer`
|
|
|
|
TODO: someone with JA knowledge should check this implementation
|
|
|
|
Example:
|
|
|
|
>>> from TTS.tts.utils.text.phonemizers import JA_JP_Phonemizer
|
|
>>> phonemizer = JA_JP_Phonemizer()
|
|
>>> phonemizer.phonemize("どちらに行きますか?", separator="|")
|
|
'd|o|c|h|i|r|a|n|i|i|k|i|m|a|s|u|k|a|?'
|
|
|
|
"""
|
|
|
|
language = "ja-jp"
|
|
|
|
def __init__(self, punctuations=_DEF_JA_PUNCS, keep_puncs=True, **kwargs): # pylint: disable=unused-argument
|
|
super().__init__(self.language, punctuations=punctuations, keep_puncs=keep_puncs)
|
|
|
|
@staticmethod
|
|
def name():
|
|
return "ja_jp_phonemizer"
|
|
|
|
def _phonemize(self, text: str, separator: str = "|") -> str:
|
|
ph = japanese_text_to_phonemes(text)
|
|
if separator is not None or separator != "":
|
|
return separator.join(ph)
|
|
return ph
|
|
|
|
def phonemize(self, text: str, separator="|", language=None) -> str:
|
|
"""Custom phonemize for JP_JA
|
|
|
|
Skip pre-post processing steps used by the other phonemizers.
|
|
"""
|
|
return self._phonemize(text, separator)
|
|
|
|
@staticmethod
|
|
def supported_languages() -> Dict:
|
|
return {"ja-jp": "Japanese (Japan)"}
|
|
|
|
def version(self) -> str:
|
|
return "0.0.1"
|
|
|
|
def is_available(self) -> bool:
|
|
return True
|
|
|
|
|
|
# if __name__ == "__main__":
|
|
# text = "これは、電話をかけるための私の日本語の例のテキストです。"
|
|
# e = JA_JP_Phonemizer()
|
|
# print(e.supported_languages())
|
|
# print(e.version())
|
|
# print(e.language)
|
|
# print(e.name())
|
|
# print(e.is_available())
|
|
# print("`" + e.phonemize(text) + "`")
|