Translator_API / app.py
KeerthiVM's picture
Updated automated deployment for azure
5608ead
import os
from huggingface_hub import InferenceClient
import gradio as gr
# Initialize the client with the correct provider
HF_TOKEN = os.environ.get("HF_TOKEN", None)
client = InferenceClient(
provider="hf-inference",
api_key=HF_TOKEN
)
port = int(os.environ.get("PORT", 7860))
def translate_text(text, src_lang, tgt_lang):
"""
Function to handle translation using the MBART model
"""
if not text.strip():
return "Please enter any text to translate 😃"
try:
# Use the translation method with model-specific parameters
src_code = lang_map[src_lang]
tgt_code = lang_map[tgt_lang]
result = client.translation(
text,
model="facebook/mbart-large-50-many-to-many-mmt",
src_lang=src_code,
tgt_lang=tgt_code
)
return result.translation_text
except Exception as e:
return f"Error in translation: {str(e)}"
custom_theme = gr.themes.Default().set(
body_background_fill="#D3D3D3", # light grey button
button_primary_background_fill="#000000", # black background
button_primary_text_color="#FFFFFF" # white text
)
# Create the Gradio interface
with gr.Blocks() as demo:
gr.Markdown("# Multilingual Text Translator Automated Deployment")
lang_map = {
"Arabic": "ar_AR",
"Czech": "cs_CZ",
"German": "de_DE",
"English": "en_XX",
"Spanish": "es_XX",
"Estonian": "et_EE",
"Finnish": "fi_FI",
"French": "fr_XX",
"Gujarati": "gu_IN",
"Hindi": "hi_IN",
"Italian": "it_IT",
"Japanese": "ja_XX",
"Kazakh": "kk_KZ",
"Korean": "ko_KR",
"Lithuanian": "lt_LT",
"Latvian": "lv_LV",
"Burmese": "my_MM",
"Nepali": "ne_NP",
"Dutch": "nl_XX",
"Romanian": "ro_RO",
"Russian": "ru_RU",
"Sinhala": "si_LK",
"Turkish": "tr_TR",
"Vietnamese": "vi_VN",
"Chinese": "zh_CN",
"Afrikaans": "af_ZA",
"Azerbaijani": "az_AZ",
"Bengali": "bn_IN",
"Persian": "fa_IR",
"Hebrew": "he_IL",
"Croatian": "hr_HR",
"Indonesian": "id_ID",
"Georgian": "ka_GE",
"Khmer": "km_KH",
"Macedonian": "mk_MK",
"Malayalam": "ml_IN",
"Mongolian": "mn_MN",
"Marathi": "mr_IN",
"Polish": "pl_PL",
"Pashto": "ps_AF",
"Portuguese": "pt_XX",
"Swedish": "sv_SE",
"Swahili": "sw_KE",
"Tamil": "ta_IN",
"Telugu": "te_IN",
"Thai": "th_TH",
"Tagalog": "tl_XX",
"Ukrainian": "uk_UA",
"Urdu": "ur_PK",
"Xhosa": "xh_ZA",
"Galician": "gl_ES",
"Slovene": "sl_SI"
}
with gr.Row():
with gr.Column():
src_lang = gr.Dropdown(
choices=list(lang_map.keys()),
value="English", # now matches the choices
label="Source Language"
)
input_text = gr.Textbox(
lines=4,
placeholder="Enter text to translate...",
label="Enter Text",
)
with gr.Column():
tgt_lang = gr.Dropdown(
choices=list(lang_map.keys()),
value="English",
label="Target Language"
)
output_text = gr.Textbox(
lines=4,
label="Translation",
interactive=False
)
# Translate button
translate_btn = gr.Button("Translate ✨", elem_id="tr-btn", variant="primary")
translate_btn.click(
fn=translate_text,
inputs=[input_text, src_lang, tgt_lang],
outputs=output_text
)
# Clear button
clear_btn = gr.Button("Clear", elem_id="clr-btn", variant="secondary")
clear_btn.click(
fn=lambda: ["", "English", "Russian", ""],
outputs=[input_text, src_lang, tgt_lang, output_text]
)
print("hellow")
# Launch the interface
if __name__ == "__main__":
# demo.launch(share=True)
demo.launch(server_name="0.0.0.0", server_port=port)