riccardoaif's picture
Update app.py
3cbcc3c verified
import gradio as gr
import time
import nltk
from easynmt import EasyNMT
model = EasyNMT('opus-mt')
nltk.download('punkt_tab')
def translate(text: str, source_lang, target_lang):
start_time = time.time()
# TODO: have direct en -> pl
if source_lang == "en" and target_lang == "pl": # temporary workaround because opus-mt does not support english to polish directly
return translate(translate(text, source_lang="en", target_lang="de"), source_lang="de", target_lang="pl")
translation = model.translate(text, target_lang=target_lang, source_lang=source_lang)
end_time = time.time()
duration = end_time - start_time
print(f"Translated {source_lang} -> {target_lang} in {str(round(duration, 2))} seconds:")
print(f"\t{text} [original]")
print(f"\t{translation} [translation]")
print()
return translation
languages = ["en", "fr", "pl", "nl", "de", "es"]
iface = gr.Interface(
fn=translate,
inputs=[
"text",
gr.Dropdown(languages, label="source language"),
gr.Dropdown(languages, label="target language"),
],
outputs="text"
)
iface.launch()