formosan-tts / ipa /ipa.py
txya900619's picture
feat: add app.py
c4d001b
raw
history blame
915 Bytes
def can_form_string(x, symbol_dict):
def helper(x, symbol_dict, matched_parts):
if not x:
return True, matched_parts
for key in symbol_dict.keys():
if x.startswith(key):
result, parts = helper(
x[len(key) :], symbol_dict, matched_parts + [key]
)
if result:
return True, parts
return False, []
return helper(x, symbol_dict, [])
def text_to_ipa(text, lang_tag, g2p):
ipa = []
words = text.split()
print(words)
for word in words:
ipa_parts = ""
result, matched_parts = can_form_string(word, g2p[lang_tag])
if result is False:
return ""
for matched_part in matched_parts:
ipa_parts = ipa_parts + g2p[lang_tag][matched_part]
ipa.append(ipa_parts)
ipa = " ".join(ipa)
return ipa