File size: 3,018 Bytes
6f930dd 7979b2a 6f930dd 7979b2a aa8293f 7979b2a aa8293f 7979b2a aa8293f fef7c02 7979b2a 259ec6e 29065b6 259ec6e 5dbc138 d706d17 259ec6e be9ab70 259ec6e 7bbe4da 259ec6e 7979b2a abc155e 259ec6e d3eaeac 1180fa7 259ec6e abc155e aa8293f 7979b2a 259ec6e 7979b2a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
from pygoruut.pygoruut import Pygoruut, PygoruutLanguages
import gradio as gr
pygoruut = Pygoruut()
languages = PygoruutLanguages()
def dephon_offline(txt, language_tag, is_reverse, is_punct):
try:
response = pygoruut.phonemize(language=language_tag, sentence=txt, is_reverse=is_reverse)
except TypeError:
return ''
if not response or not response.Words:
return ''
if is_punct:
phonetic_line = str(response)
else:
phonetic_line = " ".join(word.Phonetic for word in response.Words)
return phonetic_line
def phonemize(sentence, language, is_reverse, is_punct):
return dephon_offline(sentence, language.trim(","), is_reverse, is_punct)
def filter_languages(search_text, selected_languages):
all_languages = languages.get_all_supported_languages()
selected_list = selected_languages.split(",") if selected_languages else []
# Extract last entry from search input
search_terms = search_text.replace(",,", ",").split(",") if search_text else []
last_term = search_terms[-1] if search_terms else ""
# Filter available languages
filtered = [lang for lang in all_languages if last_term == "" or (last_term.lower() in lang.lower() and lang not in selected_list)]
selected_value = filtered[0] if filtered and len(filtered) > 0 else "No languages found..."
return gr.update(choices=filtered), selected_value + "..."
def add_language(selected_language, selected_languages):
if not selected_language:
return selected_languages
selected_list = selected_languages.replace(",,", ",").split(",") if selected_languages else []
if selected_language not in selected_list:
selected_list.append(selected_language)
return "" if len(selected_list) == 0 else (",".join(selected_list)+",").replace(",,", ",")
with gr.Blocks() as demo:
gr.Markdown('''
# Pygoruut Phonemizer Demo
This demo allows you to phonemize text using the Pygoruut phonemizer.
You can specify the language and choose whether to perform reverse phonemization.
''')
with gr.Row():
sentence = gr.Textbox(label="Sentence", placeholder="Enter the text to phonemize...")
with gr.Row():
search_input = gr.Textbox(label="Search & Selected Languages", placeholder="Type to search and add languages...")
dropdown = gr.Dropdown(label="Available Languages", choices=languages.get_all_supported_languages(), interactive=True, allow_custom_value=False)
search_input.change(filter_languages, [search_input, search_input], [dropdown, dropdown])
dropdown.select(add_language, [dropdown, search_input], search_input)
with gr.Row():
is_reverse = gr.Checkbox(label="Reverse Phonemization")
is_punct = gr.Checkbox(label="Keep Punctuation")
submit_btn = gr.Button("Phonemize")
output = gr.Textbox(label="Phonemized Text")
submit_btn.click(fn=phonemize, inputs=[sentence, search_input, is_reverse, is_punct], outputs=output)
demo.launch()
|