File size: 7,276 Bytes
46f657a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56e6056
46f657a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#%%
import gradio as gr
from dotenv import load_dotenv

from translate import run_translate
from diacritize import diacritize, diacritize_if_not_already
from translit import taatik
from semsearch import update_df
from tts import get_audio
from consts import CSS, ABOUT, JS_FUNC
load_dotenv()

with gr.Blocks(title = "Levanti - כלי תרגום לערבית מדוברת",
               css=CSS,
               theme="default") as demo:
    # gr.HTML("<h2><span style='color: #2563eb'>Levantine Arabic</span> Translator</h2>")
    gr.HTML("<h2><span dir='rtl'><span style='color: #2563eb'>Levanti</span>ne Translator</span></h2>כלי תרגום לערבית מדוברת")
    with gr.Tab('תרגום', elem_id="tab1"):
        with gr.Row():
            with gr.Column():
                input_text = gr.Textbox(label="קלט",
                                        info = "עברית או ערבית מדוברת",
                                        placeholder="הזינו טקסט בערבית או עברית",
                                        lines=2,
                                        elem_id="input",
                                        rtl=True) 

                gr.Examples(["רציתי ללכת אתמול לחנות, אבל ירד גשם", "خلينا ندور على مطعم تاني"],
                            input_text,
                            label="דוגמאות")

                btn = gr.Button("תרגום")
                with gr.Row():
                    dialect = gr.Radio(["פלסטיני", "סורי", "לבנוני", "מצרי"],
                                        label = "להג",
                                        info="משפיע על תרגום לערבית",
                                        value="פלסטיני")

                # gr.Markdown("Built by [Guy Mor-Lan](mailto:guy.mor@mail.huji.ac.il). Pronunciation model is specifically tailored to urban Palestinian Arabic. Text-to-speech uses Microsoft Azure's API and may provide different result from the transliterated pronunciation.")
                gr.Markdown("נוצר על ידי [גיא מור-לן](mailto:guy.mor@mail.huji.ac.il) כחלק מפרויקט [Levanti](https://huggingface.co/datasets/guymorlan/levanti). השמע מופק באמצעות Azure TTS על בסיס הניקוד המנובא ויוריסטיקות. לתרומות למען כיסוי הוצאות והמשך פיתוח הפרויקט [לחצו כאן](https://ko-fi.com/levanti).", elem_id="footer", rtl=True)

            with gr.Column():
                with gr.Group(elem_id="grp"):
                        gr.HTML("<div dir='rtl'>תרגום</div>")
                        # gr.Markdown("תרגום", elem_id="diacritized")
                        translation_output = gr.HTML("<br>", visible=True, label="תרגום", elem_id="main")

                hidden_arabic = gr.Textbox(lines=1, elem_id="trans", visible=False)

                diacritized_output = gr.Textbox(label="ניקוד (ניסיוני)", lines=1, elem_id="diacritized",
                                                 rtl=True, interactive=False)
                taatik_output = gr.Textbox(label="תעתיק (ניסיוני)", lines=1, elem_id="taatik",
                                           text_align="right", rtl=True, interactive=False)
                # diacritized_output = gr.HTML("<br>", label="ניקוד")
                # taatik_output = gr.HTML("<br>", label="תעתיק")

                audio = gr.Audio(label="שמע (Azure)", interactive=False,
                                 autoplay=True)
                audio_button = gr.Button("צור שמע")
                audio_button.click(get_audio, inputs=[diacritized_output], outputs=[audio])


        btn.click(run_translate, inputs=[input_text, dialect],
                  outputs=[translation_output, hidden_arabic], api_name="en2ar",
                  js="function jump(x, y){document.getElementById('main').scrollIntoView(); return [x, y];}")

        input_text.submit(run_translate, inputs=[input_text, dialect],
                          outputs=[translation_output, hidden_arabic], scroll_to_output=True)
        hidden_arabic.change(diacritize, inputs=[hidden_arabic], outputs=[diacritized_output])
        diacritized_output.change(taatik, inputs=[diacritized_output], outputs=[taatik_output])
        # pal.change(get_transliteration, inputs=[pal, include], outputs=[pal_translit]);
        # include.change(toggle_visibility, inputs=[include], outputs=[pal_translit, sy, lb, eg])
        with gr.Row():
            # import pandas as pd
            # ex_df = pd.DataFrame({"text": ["שלום", "כיצד ניתן לעזור לך?", "איפה נמצא המסעדה הכי טובה בעיר?"]})
            # ex_df = ex_df.style.set_properties(**{
            #     'font-family': 'Arial, sans-serif',
            #     'text-align': 'right'
            # })
            # bla_df = gr.DataFrame(ex_df, visible=True, elem_id="nearest", wrap =True)
            nearest_df = gr.DataFrame(headers=["ערבית", "עברית", "מאומת"], visible=False, wrap=True,
                                      elem_id="nearest", label="תוצאות קרובות מתוך קורפוס Levanti", height=300)

        hidden_arabic.change(update_df, inputs=[hidden_arabic], outputs=[nearest_df])
        
    with gr.Tab("ניקוד ותעתוק", elem_id="tab2"):
        with gr.Row():
            with gr.Column():
                diac_text = gr.Textbox(label="קלט", placeholder="הזינו טקסט בערבית", lines=1,
                                        info = "בשביל תעתוק בלבד, הזינו טקסט ערבי מנוקד",
                                        elem_id="diac_input", rtl=True)
                gr.Examples(["خلينا ندور على مطعم تاني", "قَدِيْش حَقّ الْبَنْدُورَة؟"], diac_text, 
                            label="דוגמאות", elem_id="diac_ex")
                btn2 = gr.Button("שליחה")
                
            with gr.Column():
                diacritized_output2 = gr.Textbox(label="ניקוד", lines=1,
                                                  elem_id="diacritized2", rtl=True)
                taatik_output2 = gr.Textbox(label="תעתיק", lines=1,
                                             elem_id="taatik2", rtl=True)

        # input_text.submit(run_translate, inputs=[input_text, dialect],
        #                   outputs=[translation_output], scroll_to_output=True)
        # hidden_arabic.change(diacritize, inputs=[hidden_arabic], outputs=[diacritized_output])
        # diacritized_output.change(taatik, inputs=[diacritized_output], outputs=[taatik_output])
        btn2.click(diacritize_if_not_already, inputs=[diac_text], outputs=[diacritized_output2])
        diac_text.submit(diacritize_if_not_already, inputs=[diac_text], outputs=[diacritized_output2])
        diacritized_output2.change(taatik, inputs=[diacritized_output2], outputs=[taatik_output2])
    with gr.Tab("אודות", elem_id="tab3"):
        with gr.Row():
            gr.HTML("<h2>אודות</h2>")
            gr.Markdown(ABOUT, elem_id="about", rtl=True)



demo.launch(ssl_verify=False)