vibe_translator / app.py
trashchenkov's picture
Initial version: English-Russian translator app
7c6cdf1
import gradio as gr
from transformers import MarianMTModel, MarianTokenizer
import torch
# Загрузка модели и токенизатора
MODEL_NAME = "Helsinki-NLP/opus-mt-en-ru"
tokenizer = MarianTokenizer.from_pretrained(MODEL_NAME)
model = MarianMTModel.from_pretrained(MODEL_NAME)
def translate(text):
if not text.strip():
return "Пожалуйста, введите текст для перевода."
if len(text) > 500:
return "Слишком длинный текст. Пожалуйста, введите до 500 символов."
try:
batch = tokenizer([text], return_tensors="pt", padding=True)
with torch.no_grad():
gen = model.generate(**batch)
translated = tokenizer.batch_decode(gen, skip_special_tokens=True)[0]
return translated
except Exception as e:
return f"Ошибка при переводе: {str(e)}"
with gr.Blocks() as demo:
gr.Markdown("# Переводчик с английского на русский")
with gr.Row():
input_text = gr.Textbox(label="Текст на английском", placeholder="Введите текст на английском языке")
with gr.Row():
translate_btn = gr.Button("Перевести")
with gr.Row():
output_text = gr.Textbox(label="Перевод на русский", interactive=False)
translate_btn.click(translate, inputs=input_text, outputs=output_text)
if __name__ == "__main__":
demo.launch()