File size: 1,967 Bytes
5b9081a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""
uv sync
uv pip install "gradio>=5.15.0"
uv run gradio examples/editor.py
"""

from mishkal import phonemize, normalize
import gradio as gr

default_text = """
כָּל עֶרֶב יָאִיר (הַשֵּׁם הַמָּלֵא וּמְקוֹם הָעֲבוֹדָה שֶׁלּוֹ שְׁמוּרִים בַּמַּעֲרֶכֶת) רָץ 20 קִילוֹמֶטֶר. הוּא מְסַפֵּר לִי שֶׁזֶּה מְנַקֶּה לוֹ אֶת הָרֹאשׁ אַחֲרֵי הָעֲבוֹדָה, "שָׁעָה וָחֵצִי בְּלִי עֲבוֹדָה, אִשָּׁה וִילָדִים" כְּמוֹ שֶׁהוּא מַגְדִּיר זֹאת. אֲבָל אַחֲרֵי הַמִּקְלַחַת הוּא מַתְחִיל בְּמָה שֶׁנִּתָּן לְכַנּוֹת הָעֲבוֹדָה הַשְּׁנִיָּה שֶׁלּוֹ: לִמְצֹא לוֹ קוֹלֵגוֹת חֲדָשׁוֹת לָעֲבוֹדָה, כִּי יָאִיר הוּא כַּנִּרְאֶה הַמֶּלֶךְ שֶׁל "חָבֵר מֵבִיא חָבֵר" בְּיִשְׂרָאֵל.
"""

theme = gr.themes.Soft(font=[gr.themes.GoogleFont("Roboto")])


def on_submit_debug(text: str) -> str:
    phonemes = phonemize(text, preserve_punctuation=True)
    normalized_text = normalize(text)
    return phonemes + "\n\nNormalized:\n" + normalized_text


def on_submit(text: str) -> str:
    return phonemize(text, preserve_punctuation=False)


with gr.Blocks(theme=theme) as demo:
    text_input = gr.Textbox(
        value=default_text, label="Text", rtl=True, elem_classes=["input"]
    )
    checkbox = gr.Checkbox(value=False, label="Enable Debug Mode")
    phonemes_output = gr.Textbox(label="Phonemes")
    submit_button = gr.Button("Create")

    submit_button.click(
        fn=lambda text, debug: on_submit_debug(text) if debug else on_submit(text),
        inputs=[text_input, checkbox],
        outputs=[phonemes_output],
    )


if __name__ == "__main__":
    demo.launch()