import os import torch import gradio as gr import time from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, pipeline from code_flores_latest import flores_codes_latest def load_models(): model_name_dict = {'nllb-distilled-600M': 'facebook/nllb-200-distilled-600M'} model_dict = {} for call_name, real_name in model_name_dict.items(): print('\tLoading model: %s' % call_name) model = AutoModelForSeq2SeqLM.from_pretrained(real_name) tokenizer = AutoTokenizer.from_pretrained(real_name) model_dict[call_name + '_model'] = model model_dict[call_name + '_tokenizer'] = tokenizer return model_dict def translation(source, target, text): model_name = 'nllb-distilled-600M' source_code = flores_codes_latest.get(source, None) target_code = flores_codes_latest.get(target, None) if not source_code or not target_code: return "

Error: Language code not found.

" model = model_dict[model_name + '_model'] tokenizer = model_dict[model_name + '_tokenizer'] translator = pipeline('translation', model=model, tokenizer=tokenizer, src_lang=source_code, tgt_lang=target_code) output = translator(text, max_length=400) output_text = output[0]['translation_text'] formatted_output = f"

Original Text ({source}):
{text}

Translated Text ({target}): {output_text}

" return formatted_output if __name__ == '__main__': print('\tInitializing models') model_dict = load_models() lang_names = list(flores_codes_latest.keys()) source_dropdown = gr.Dropdown(lang_names, label='Source', allow_custom_value=True) target_dropdown = gr.Dropdown(lang_names, label='Target', allow_custom_value=True) textbox = gr.Textbox(lines=5, label="Input text") title = "nllb-distilled-600M - Example implementation" description = f"Nots: please note that not all translations are accurate, and some models codes are not accepted . " initial_output_value = "

Translation results will appear here.

" output_html = gr.HTML(label="Translation Result", value=initial_output_value) iface = gr.Interface(fn=translation, inputs=[source_dropdown, target_dropdown, textbox], outputs=output_html, title=title, description=description) iface.launch()