File size: 3,195 Bytes
6f930dd 7979b2a 21f92ac 209cd5c a18de3f 7979b2a 6f930dd 7979b2a aa8293f 7979b2a aa8293f 7979b2a aa8293f 3afa37a 7979b2a 259ec6e 29065b6 259ec6e 21ee637 97b742e 1b0f479 c094018 1492028 97b742e 1b0f479 259ec6e ded4165 800fea9 259ec6e 800fea9 259ec6e 7979b2a abc155e 259ec6e d3eaeac 1b0f479 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 67 68 69 70 71 72 73 74 75 76 |
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()
|