Traductor / app.py
meinvirgos's picture
Update app.py
58aaf00 verified
import os
import torch
import gradio as gr
import time
from transformers import AutoTokenizer, pipeline
# Modelo de Meta capaz de traducir a más de 200 idiomas
model = 'facebook/nllb-200-distilled-600M'
#model = 'JustFrederik/nllb-200-distilled-600M-ct2-int8'
tokenizer = 'facebook/nllb-200-distilled-600M' # El modelo Quantizado no tiene tokenizador
# Pero como traduce mal al asturiano, añadimos este otro fine-tuned
# Es del proyecto AINA: https://huggingface.co/projecte-aina
model_ast = "projecte-aina/aina-translator-es-ast"
flores_codes = {}
flores_codes["Asturianu"] = "ast_Latn"
flores_codes["Castellano"] = "spa_Latn"
flores_codes["Català"] = "cat_Latn"
flores_codes["English"] = "eng_Latn"
flores_codes["Euskera"] = "eus_Latn"
flores_codes["Galego"] = "glg_Latn"
def translation(source, target, text):
#start_time = time.time()
source = flores_codes[source]
target = flores_codes[target]
if target == flores_codes["Asturianu"]:
texto_castellano = source
if source != flores_codes["Castellano"]:
translator = pipeline('translation', model=model, tokenizer=tokenizer, src_lang=source, tgt_lang=flores_codes["Castellano"])
texto_castellano = translator(text, max_length=400)
translator_ast = pipeline('translation', model=model_ast, tokenizer=tokenizer, src_lang=flores_codes["Castellano"], tgt_lang=flores_codes["Asturianu"])
output = translator_ast(text, max_length=400)
else:
translator = pipeline('translation', model=model, tokenizer=tokenizer, src_lang=source, tgt_lang=target)
output = translator(text, max_length=400)
#end_time = time.time()
output = output[0]['translation_text']
#result = {'inference_time': end_time - start_time,
# 'source': source,
# 'target': target,
# 'result': output}
#return result
return output;
if __name__ == '__main__':
print('\tIniciando...')
# define gradio demo
lang_codes = list(flores_codes.keys())
inputs = [gr.Dropdown(lang_codes, value='Castellano', label='Idioma original'),
gr.Dropdown(lang_codes, value='Asturianu', label='Traducir al...'),
gr.Textbox(label="Texto a traducir"),
]
outputs = [gr.Textbox(label="Texto traducido"),]
title = "Traductor Multilingüe"
description = """
Este traductor utiliza el siguiente modelo de lenguaje de Meta: https://github.com/facebookresearch/fairseq/tree/nllb\n
Excepto para traducir al asturiano que usa el modelo del proyecto AINA: https://huggingface.co/projecte-aina/aina-translator-es-ast\n
Adaptado de: https://huggingface.co/spaces/Azwaw/Text_Translation_Multi-languages
"""
gr.Interface(translation,
inputs,
outputs,
title=title,
description=description,
submit_btn="Traducir"
).launch()