Kiran
Create app.py
de06668 verified
Raw History Blame Contribute Delete
2.63 kB
import gradio as gr
from transformers import pipeline
# Language codes and names (only ISO 639-1 supported by Helsinki models)
languages = {
"en": "English",
"fr": "French",
"de": "German",
"es": "Spanish",
"it": "Italian",
"ru": "Russian",
"zh": "Chinese",
"ja": "Japanese",
"ko": "Korean",
"ar": "Arabic",
"hi": "Hindi",
"te": "Telugu",
"ta": "Tamil",
"bn": "Bengali",
"ur": "Urdu",
"ml": "Malayalam",
"gu": "Gujarati",
"mr": "Marathi",
"pa": "Punjabi",
"sw": "Swahili",
"tr": "Turkish",
"fa": "Persian",
"pt": "Portuguese",
"pl": "Polish",
"uk": "Ukrainian",
"nl": "Dutch",
"sv": "Swedish",
"no": "Norwegian",
"fi": "Finnish",
"cs": "Czech",
"el": "Greek",
"ro": "Romanian",
"hu": "Hungarian",
"vi": "Vietnamese",
"th": "Thai",
"id": "Indonesian",
"ms": "Malay",
"he": "Hebrew",
"bg": "Bulgarian",
"sr": "Serbian",
"hr": "Croatian",
"sk": "Slovak",
"da": "Danish",
"et": "Estonian",
"lt": "Lithuanian",
"lv": "Latvian",
"sl": "Slovenian",
"mt": "Maltese"
}
# Reverse mapping from full name to code
name_to_code = {v: k for k, v in languages.items()}
# Define the function to translate
def translate_text(text, source_lang_name, target_lang_name):
if source_lang_name == target_lang_name:
return text
source_lang = name_to_code[source_lang_name]
target_lang = name_to_code[target_lang_name]
if source_lang == "en" and target_lang == "te":
model_name = "Helsinki-NLP/opus-mt-en-dra"
else:
model_name = f"Helsinki-NLP/opus-mt-{source_lang}-{target_lang}"
try:
trans_pipeline = pipeline("translation", model=model_name)
translation = trans_pipeline(text, max_length=400)[0]['translation_text']
return translation
except Exception as e:
return f"Error loading model for {source_lang} to {target_lang}: {str(e)}"
# Gradio Interface
with gr.Blocks() as demo:
gr.Markdown("# 🌐 Multi-language Translation App")
input_text = gr.Textbox(label="Enter Text", lines=4)
source_lang = gr.Dropdown(label="Source Language", choices=list(languages.values()), value="English")
target_lang = gr.Dropdown(label="Target Language", choices=list(languages.values()), value="Telugu")
output_text = gr.Textbox(label="Translated Text")
translate_button = gr.Button("Translate")
translate_button.click(fn=translate_text, inputs=[input_text, source_lang, target_lang], outputs=output_text)
if __name__ == "__main__":
demo.launch()