nllb-translator / app.py
kankanlemon's picture
Update app.py
ca20dd7 verified
import os
import ctranslate2
from transformers import AutoTokenizer
import gradio as gr
# 自动 clone 模型(避免上传)
if not os.path.exists("nllb_ct2"):
os.system("git lfs install && git clone https://huggingface.co/JustFrederik/nllb-200-distilled-600M-ct2-int8 nllb_ct2")
device = "cuda" if ctranslate2.get_cuda_device_count() > 0 else "cpu"
translator = ctranslate2.Translator("nllb_ct2", device=device)
tokenizer = AutoTokenizer.from_pretrained("facebook/nllb-200-distilled-600M")
def translate(text, source_lang="eng_Latn", target_lang="zho_Hans"):
prefix = f"<<{target_lang}>>"
tokens = tokenizer.convert_ids_to_tokens(tokenizer.encode(prefix + text, add_special_tokens=False))
results = translator.translate_batch([tokens])
translated_tokens = results[0].hypotheses[0]
return tokenizer.decode(tokenizer.convert_tokens_to_ids(translated_tokens), skip_special_tokens=True)
gr.Interface(
fn=translate,
inputs=[
gr.Textbox(label="输入文本"),
gr.Textbox(value="eng_Latn", label="源语言代码"),
gr.Textbox(value="zho_Hans", label="目标语言代码"),
],
outputs="text",
title="NLLB-200 翻译器(自动挂载模型)",
).launch()