import gradio as gr from translation import Translator, LANGUAGES LANGUAGES_LIST = list(LANGUAGES.keys()) def translate_wrapper(text, src, trg, by_sentence=True, preprocess=True, random=False, num_beams=4): src_lang = LANGUAGES.get(src) tgt_lang = LANGUAGES.get(trg) # if src == trg: # return 'Please choose two different languages' result = translator.translate( text=text, src_lang=src_lang, tgt_lang=tgt_lang, do_sample=random, num_beams=int(num_beams), by_sentence=by_sentence, preprocess=preprocess, ) return result article = """ This is a NLLB-200-600M model fine-tuned for translation between Russian and Tyvan (Tuvan) languages, using the data from https://tyvan.ru/. This model is described in https://cointegrated.medium.com/a37fc706b865. If you want to host in on your own backend, consider running this dockerized app: https://github.com/slone-nlp/nllb-docker-demo. """ interface = gr.Interface( translate_wrapper, [ gr.Textbox(label="Text", lines=2, placeholder='text to translate '), gr.Dropdown(LANGUAGES_LIST, type="value", label='source language', value=LANGUAGES_LIST[0]), gr.Dropdown(LANGUAGES_LIST, type="value", label='target language', value=LANGUAGES_LIST[1]), gr.Checkbox(label="by sentence", value=True), gr.Checkbox(label="text preprocesing", value=True), gr.Checkbox(label="randomize", value=False), gr.Dropdown([1, 2, 3, 4, 5], label="number of beams", value=4), ], "text", title='Tyvan-Russian translaton', article=article, ) if __name__ == '__main__': translator = Translator() interface.launch()