pygoruut / app.py
neurlang's picture
bump it to real 0.6.2
209cd5c
from pygoruut.pygoruut import Pygoruut, PygoruutLanguages
import gradio as gr
# comment change to bump the version bump it bump bump bump
# bump
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.strip(","), is_reverse, is_punct)
def filter_languages(search_text, selected_languages):
all_languages = languages.get_all_supported_languages()
# 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())]
# If no results, show a message instead
if not filtered:
filtered = ["No match found..."]
else:
filtered = [filtered[0] + "..."] + filtered
return gr.update(choices=filtered), filtered[0] # Keep dropdown open and selectable
def add_language(selected_language, selected_languages):
if not selected_language:
return selected_languages
selected_language = selected_language.rstrip("...")
selected_list = selected_languages.split(",") if selected_languages else []
selected_list = list(set(selected_list) & set(languages.get_all_supported_languages()))
if selected_language not in selected_list:
selected_list.append(selected_language)
return "" if len(selected_list) == 0 else (",".join(selected_list)+",")
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()