|
import gradio as gr |
|
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM |
|
import torch |
|
|
|
|
|
model_name = "VietAI/envit5-translation" |
|
tokenizer = AutoTokenizer.from_pretrained(model_name) |
|
model = AutoModelForSeq2SeqLM.from_pretrained(model_name) |
|
|
|
|
|
device = "cuda" if torch.cuda.is_available() else "cpu" |
|
model = model.to(device) |
|
|
|
|
|
def translate(text, language): |
|
prefix = "vi: " if language == "Tiếng Việt -> Tiếng Anh" else "en: " |
|
inputs = tokenizer(prefix + text, return_tensors="pt", padding=True).input_ids.to(device) |
|
outputs = model.generate(inputs, max_length=512) |
|
translation = tokenizer.decode(outputs[0], skip_special_tokens=True, clean_up_tokenization_spaces=True) |
|
return translation |
|
|
|
|
|
interface = gr.Interface( |
|
fn=translate, |
|
inputs=[ |
|
gr.Textbox(label="Nhập văn bản cần dịch"), |
|
gr.Dropdown(choices=["Tiếng Việt -> Tiếng Anh", "Tiếng Anh -> Tiếng Việt"], label="Chọn ngôn ngữ") |
|
], |
|
outputs="text", |
|
title="Ứng dụng dịch ngôn ngữ", |
|
description="Dịch từ tiếng Việt sang tiếng Anh và ngược lại." |
|
) |
|
|
|
|
|
interface.launch() |
|
|