Spaces:
Sleeping
Sleeping
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 | |