import os import gradio as gr import torch from huggingface_hub import login from transformers import AutoTokenizer, AutoModelForSeq2SeqLM # Optional login for private models/spaces hf_token = os.environ.get("HF_TOKEN") if hf_token: login(token=hf_token) MODEL_NAME = "facebook/nllb-200-distilled-600M" tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME) model = AutoModelForSeq2SeqLM.from_pretrained(MODEL_NAME) # Use GPU if available, otherwise CPU device = "cuda" if torch.cuda.is_available() else "cpu" model.to(device) def translate(text, src_lang, tgt_lang): if not text or not text.strip(): return "" tokenizer.src_lang = src_lang inputs = tokenizer(text, return_tensors="pt").to(device) forced_bos_token_id = tokenizer.convert_tokens_to_ids(tgt_lang) outputs = model.generate( **inputs, forced_bos_token_id=forced_bos_token_id, max_length=512, ) translated = tokenizer.decode(outputs[0], skip_special_tokens=True) return translated.strip() demo = gr.Interface( fn=translate, inputs=[ gr.Textbox(label="Input Text"), gr.Textbox(label="Source Language (eng_Latn, spa_Latn, vie_Latn)"), gr.Textbox(label="Target Language"), ], outputs=gr.Textbox(label="Translation"), title="NLLB Translator", description="English -> Target Language Translation using NLLB", ) demo.queue() demo.launch()