Projet_DIT / app.py
LovelaceAi's picture
Update app.py
8050b38 verified
import gradio as gr
from gtts import gTTS
import uuid
# -----------------------------
# SANTÉ PHYSIQUE
# -----------------------------
def analyse_physique(texte):
texte = texte.lower()
conditions = {
"Stressé": {
"fr": "Je suis désolé(e) que vous traversiez cela. Voici quelques pistes simples issues
de nos ressources : prendre un moment pour respirer, écrire ce que vous ressentez
ou contacter une personne de confiance. Si ce mal-être devient intense ou persistant, il est important d’en parler à un professionnel..."
"wo": "Baaxul ma ci sa xaalis bi ngay dund. Maa ngi la dégg. Am na ay pexe yu simples yu nekk ci sunuy ressources : jël benn waxtu ngir nga noyyi sa xel (respirer), bind li nga feel, wala wax ak ku la wóor te nga gëm ko. Su sa metit bi gëna tar walla di dox ak yàgg, li gëna am solo mooy nga wax ak ku am xam-xam ci loolu."
},
"toux": {
"fr": "Toux détectée. Hydratez-vous et évitez le froid.",
"wo": "Yaram bi dafa di wër. Moytu sañ-sañ ak ndox."
},
"maux de tête": {
"fr": "Mal de tête. Reposez-vous dans un endroit calme.",
"wo": "Bopp bi dafay wéy. Noppalu ci bérab bu dal."
},
"douleur poitrine": {
"fr": "⚠️ Douleur poitrine détectée. Consultez immédiatement un médecin.",
"wo": "⚠️ Wér gu metti ci dënk. Demal ci docteur bu gaaw."
},
"fatigue": {
"fr": "Fatigue détectée. Dormez bien et hydratez-vous.",
"wo": "Fatigue bi am na. Nelaw bu baax te naan ndox."
}
}
fr_list, wo_list = [], []
niveau = "normal"
for key, val in conditions.items():
if key in texte:
fr_list.append(val["fr"])
wo_list.append(val["wo"])
if key == "douleur poitrine":
niveau = "urgent"
return " ".join(fr_list), " ".join(wo_list), niveau
# -----------------------------
# SANTÉ MENTALE
# -----------------------------
def analyse_mentale(texte):
texte = texte.lower()
conditions = {
"stress": {
"fr": "Je suis désolé(e) que vous traversiez cela. Voici quelques pistes simples issues
de nos ressources : prendre un moment pour respirer, écrire ce que vous ressentez
ou contacter une personne de confiance. Si ce mal-être devient intense ou persistant, il est important d’en parler à un professionnel...",
"wo": "Baaxul ma ci sa xaalis bi ngay dund. Maa ngi la dégg. Am na ay pexe yu simples yu nekk ci sunuy ressources : jël benn waxtu ngir nga noyyi sa xel (respirer), bind li nga feel, wala wax ak ku la wóor te nga gëm ko. Su sa metit bi gëna tar walla di dox ak yàgg, li gëna am solo mooy nga wax ak ku am xam-xam ci loolu.."
},
"anxiété": {
"fr": "Signes d’anxiété légère. Écrivez ce que vous ressentez.",
"wo": "Dafa mel ni yaakaar yaram. Bind li ngay sant."
},
"fatigue mentale": {
"fr": "Fatigue mentale. Réduisez les écrans et reposez-vous.",
"wo": "Xel bi dafa sonn. Wàññi sreen yi."
},
"tristesse": {
"fr": "Moment difficile. Parlez à quelqu’un de confiance.",
"wo": "Jafe jafe. Wax ak kenn ku la gëm."
},
"motivation": {
"fr": "Baisse de motivation. Commencez par une petite tâche.",
"wo": "Motivation bi dafa wàññiku. Tambali ndank."
},
"sommeil": {
"fr": "Améliorez votre sommeil avec une routine régulière.",
"wo": "Nelaw bi am solo. Tegginu sa jamono."
}
}
fr_list, wo_list = [], []
for key, val in conditions.items():
if key in texte:
fr_list.append(val["fr"])
wo_list.append(val["wo"])
return " ".join(fr_list), " ".join(wo_list)
# -----------------------------
# AUDIO (SAFE)
# -----------------------------
def speak(text):
try:
filename = f"audio_{uuid.uuid4().hex}.mp3"
tts = gTTS(text=text, lang="fr")
tts.save(filename)
return filename
except:
return None
# -----------------------------
# CHATBOT
# -----------------------------
def chatbot(message):
if not message or message.strip() == "":
return "Veuillez entrer un texte", "", "", None
fr_p, wo_p, niveau = analyse_physique(message)
fr_m, wo_m = analyse_mentale(message)
# fusion
fr = (fr_p + " " + fr_m).strip()
wo = (wo_p + " " + wo_m).strip()
# fallback
if fr == "":
fr = "Symptômes non clairs. Surveillez votre état."
wo = "Symptoom yi leerul. Seet sa yaram."
# audio
audio = speak(fr)
return fr, wo, niveau, audio
# -----------------------------
# UI GRADIO
# -----------------------------
demo = gr.Interface(
fn=chatbot,
inputs=gr.Textbox(label="📝 Comment tu te sens ?"),
outputs=[
gr.Textbox(label="🇫🇷 Français"),
gr.Textbox(label="🇸🇳 Wolof"),
gr.Audio(label="🔊 Audio")
],
title="SentixRAG",
description="psychoéducation"
)
demo.launch()