Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from transformers import AutoModelForSeq2SeqLM, AutoTokenizer | |
| import os | |
| # Load the model and tokenizer | |
| model_name = "facebook/nllb-200-distilled-600M" | |
| model = AutoModelForSeq2SeqLM.from_pretrained(model_name) | |
| tokenizer = AutoTokenizer.from_pretrained(model_name) | |
| # Get all available language codes | |
| available_languages = list(tokenizer.lang_code_to_id.keys()) | |
| def translate_text(text, src_lang, tgt_lang): | |
| try: | |
| inputs = tokenizer(text, return_tensors="pt", src_lang=src_lang) | |
| outputs = model.generate( | |
| **inputs, | |
| forced_bos_token_id=tokenizer.lang_code_to_id[tgt_lang], | |
| max_length=128 | |
| ) | |
| translated_text = tokenizer.batch_decode(outputs, skip_special_tokens=True)[0] | |
| return translated_text | |
| except Exception as e: | |
| return f"Translation error: {str(e)}" | |
| def translate_file(file, src_lang, tgt_lang): | |
| try: | |
| content = file.read().decode('utf-8') | |
| translated = translate_text(content, src_lang, tgt_lang) | |
| output_path = os.path.join("translated", f"translated_{file.name}") | |
| os.makedirs(os.path.dirname(output_path), exist_ok=True) | |
| with open(output_path, 'w', encoding='utf-8') as f: | |
| f.write(translated) | |
| return f"Translation saved to {output_path}" | |
| except Exception as e: | |
| return f"File translation error: {str(e)}" | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# NLLB Translator") | |
| with gr.Tab("Text Translation"): | |
| with gr.Row(): | |
| src_lang = gr.Dropdown(choices=available_languages, label="Source Language") | |
| tgt_lang = gr.Dropdown(choices=available_languages, label="Target Language") | |
| input_text = gr.Textbox(lines=5, label="Input Text") | |
| output_text = gr.Textbox(lines=5, label="Translated Text") | |
| translate_btn = gr.Button("Translate Text") | |
| translate_btn.click(fn=translate_text, inputs=[input_text, src_lang, tgt_lang], outputs=output_text) | |
| with gr.Tab("File Translation"): | |
| file_input = gr.File(label="Upload file to translate") | |
| file_src_lang = gr.Dropdown(choices=available_languages, label="Source Language") | |
| file_tgt_lang = gr.Dropdown(choices=available_languages, label="Target Language") | |
| file_output = gr.Textbox(label="Translation Status") | |
| file_translate_btn = gr.Button("Translate File") | |
| file_translate_btn.click(fn=translate_file, inputs=[file_input, file_src_lang, file_tgt_lang], outputs=file_output) | |
| gr.Markdown(f"Currently using the {model_name} AI translation model") | |
| demo.launch(share=True) |