import gradio as gr from transformers import MarianMTModel, MarianTokenizer # Charger le modèle et le tokenizer depuis Hugging Face model_name = "MrFrijo/LiAPI" # Nom du modèle sur Hugging Face model = MarianMTModel.from_pretrained(model_name) tokenizer = MarianTokenizer.from_pretrained(model_name) def translate_text(text, src_lang, target_lang): # Préparer les entrées pour le modèle tokenized_text = tokenizer(text, return_tensors="pt") # Effectuer la traduction translated = model.generate(**tokenized_text) # Convertir et retourner le texte traduit translated_text = tokenizer.decode(translated[0], skip_special_tokens=True) return translated_text # Créer l'interface Gradio with gr.Blocks() as interface: # Titre et description avec du texte en italique et en gras en lingala gr.Markdown("""

Traduction automatique Lingala-Français

Ceci est la version d'essai et nous comptons sur vous pour améliorer les performances du modèle pour notre langue Lingala.
Oyo e za version ya komeka pe to zo talela bino pôna ko kolisa makoki ya modeli pôna nkota nà biso Lingala.

""") # Créer une colonne sans l'argument `align` qui n'existe pas with gr.Column(): text_input = gr.Textbox(label="Entrez le texte à traduire", placeholder="Entrez le texte à traduire ici...", lines=3) source_lang = gr.Dropdown(choices=["fr", "li"], label="Langue Source") target_lang = gr.Dropdown(choices=["li", "fr"], label="Langue Cible") translation_output = gr.Textbox(label="Traduction", placeholder="Le texte traduit s'affichera ici...") translate_button = gr.Button("Traduire") # Lier le bouton au processus de traduction translate_button.click( translate_text, inputs=[text_input, source_lang, target_lang], outputs=translation_output ) # Personnalisation CSS pour la boîte et les textes interface.css = """ /* Police personnalisée pour rendre l'interface plus attrayante */ @import url('https://fonts.googleapis.com/css2?family=Lobster&display=swap'); .gradio-container { font-family: 'Arial', sans-serif; } .contenant { text-align: center; font-family: Ghisha; width:100%; display: flex; justify-content: center; width:100%; flex-wrap: wrap; } .gradio-button { background-color: #4CAF50; color: white; border-radius: 5px; border: none; } .gradio-button:hover { background-color: #45a049; } .gr-markdown { font-family: 'Lobster', sans-serif; font-size: 24px; font-weight: bold; } .gradio-row { margin-top: 10px; } /* Centrer la colonne et ajouter un style à la zone de texte */ .gr-column { width: 50%; margin: auto; padding: 20px; border: 2px solid #ddd; border-radius: 10px; background-color: #f9f9f9; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); } /* Appliquer un style pour le texte d'entrée */ .gr-textbox { font-size: 16px; padding: 10px; } /* Appliquer un style pour la sortie de traduction */ .gr-textbox[placeholder='Le texte traduit s\'affichera ici...'] { font-size: 16px; font-weight: bold; color: #2E8B57; /* Couleur verte pour l'output */ } """ # Lancer l'interface interface.launch()