Spaces:
Running
Running
File size: 6,212 Bytes
e35836c |
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 |
#%%
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, translit
from semsearch import update_df
from tts import get_audio
from consts import CSS, ABOUT, JS_FUNC
load_dotenv()
with gr.Blocks(title = "Levanti - Levantine Arabic Translation Tools",
css=CSS,
theme="default") as demo:
# gr.HTML("<h2><span style='color: #2563eb'>Levantine Arabic</span> Translator</h2>")
gr.HTML("<h2><span><span style='color: #2563eb'>Levanti</span>ne Translator</span></h2>Levantine Arabic Translation Tools")
with gr.Tab('Translation', elem_id="tab1"):
with gr.Row():
with gr.Column():
input_text = gr.Textbox(label="Input",
info = "Colloquial Arabic or English",
placeholder="Enter text in Arabic or English",
lines=2,
elem_id="input")
gr.Examples(["I called him two times, he's not picking up", "ุฎูููุง ูุฏูุฑ ุนูู ู
ุทุนู
ุชุงูู"],
input_text,
label="Examples")
btn = gr.Button("Translation")
with gr.Row():
dialect = gr.Radio(["Palestinian", "Syrian", "Lebanese", "Egyptian"],
label = "Dialect",
info="Affects translation to Arabic",
value="Palestinian")
# gr.Markdown("Built by [Guy Mor-Lan](mailto:[email protected]). 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("Create by [Guy Mor-Lan](mailto:[email protected]) as part of the [Levanti](https://huggingface.co/datasets/guymorlan/levanti) project. Audio is produced using Azure TTS with predicted diacritics and heuristics.", elem_id="footer")
with gr.Column():
with gr.Group(elem_id="grp"):
gr.HTML("Translation")
# gr.Markdown("ืชืจืืื", elem_id="diacritized")
translation_output = gr.HTML("<br>", visible=True, label="Translation", elem_id="main")
hidden_arabic = gr.Textbox(lines=1, elem_id="trans", visible=False)
diacritized_output = gr.Textbox(label="Diacritization (experimental)", lines=1, elem_id="diacritized",
interactive=False)
taatik_output = gr.Textbox(label="Transliteration (Experimental)", lines=1, elem_id="taatik",
text_align="right", interactive=False)
# diacritized_output = gr.HTML("<br>", label="ื ืืงืื")
# taatik_output = gr.HTML("<br>", label="ืชืขืชืืง")
audio = gr.Audio(label="Audio (Azure)", interactive=False,
autoplay=True)
audio_button = gr.Button("Generate Audio")
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(translit, inputs=[diacritized_output], outputs=[taatik_output])
# with gr.Row():
# 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("Diacritization and Transliteration", elem_id="tab2"):
with gr.Row():
with gr.Column():
diac_text = gr.Textbox(label="Input", placeholder="Insert text in Arabic", lines=1,
info = "For transliteration only, insert diacritized text",
elem_id="diac_input")
gr.Examples(["ุฎูููุง ูุฏูุฑ ุนูู ู
ุทุนู
ุชุงูู", "ููุฏูููุด ุญููู ุงููุจูููุฏููุฑูุฉุ"], diac_text,
label="Examples", elem_id="diac_ex")
btn2 = gr.Button("Send")
with gr.Column():
diacritized_output2 = gr.Textbox(label="Diacritization", lines=1,
elem_id="diacritized2")
taatik_output2 = gr.Textbox(label="Transliteration", lines=1,
elem_id="taatik2")
# 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(translit, inputs=[diacritized_output2], outputs=[taatik_output2])
with gr.Tab("About", elem_id="tab3"):
with gr.Row():
gr.HTML("<h2>About</h2>")
gr.Markdown(ABOUT, elem_id="about")
demo.launch(ssl_verify=False) |