Lenylvt commited on
Commit
8056c5c
·
verified ·
1 Parent(s): 8db9d75

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -43
app.py CHANGED
@@ -46,8 +46,8 @@ def dictee_to_audio_segmented(dictee):
46
  audio_urls.append(audio_path)
47
  return audio_urls
48
 
49
- def generer_dictee():
50
- prompt = f"Créer une dictée pour la classe {st.session_state.Classe} d'une longueur d'environ {st.session_state.Longueur} mots. Il est important de créer le texte uniquement de la dictée et de ne pas ajouter de consignes ou d'indications supplémentaires."
51
  generate_kwargs = {
52
  "temperature": 0.7,
53
  "max_new_tokens": 1000,
@@ -63,8 +63,8 @@ def generer_dictee():
63
  dictee = dictee.replace("</s>", "").strip()
64
  return dictee
65
 
66
- def correction_dictee():
67
- prompt = f"Voici une dictée crée: {st.session_state.dictée} | Voici la dictée faite par l'utilisateur : {st.session_state.Dictee_User} - Corrige la dictée en donnant les explications, utilise les syntax du markdown pour une meilleur comprehesion de la correction. Il est important de comparer la dictée de l'utilisateur avec uniquement celle crée."
68
  generate_kwargs = {
69
  "temperature": 0.7,
70
  "max_new_tokens": 2000, # Ajustez selon la longueur attendue de la correction
@@ -97,61 +97,37 @@ def segmenter_texte(texte):
97
  sentences = re.split(r'(?<=[.!?]) +', texte)
98
  return sentences
99
 
100
- # Stocker les variable de session pour qu'elles persistent
101
- if 'dictée' not in st.session_state:
102
- st.session_state.dictée = None
103
- if 'dictéegenerated' not in st.session_state:
104
- st.session_state.dictéegenerated = "Hobby"
105
- if 'Mode' not in st.session_state:
106
- st.session_state.Mode = None
107
- if 'Classe' not in st.session_state:
108
- st.session_state.Classe = None
109
- if 'Longueur' not in st.session_state:
110
- st.session_state.Longueur = None
111
- if 'dictée' not in st.session_state:
112
- st.session_state.dictée = None
113
- if 'dictee_user' not in st.session_state:
114
- st.session_state.Dictee_User = None
115
-
116
  # Streamlit App Interface
117
  st.set_page_config(layout="wide")
118
  st.title('Générateur de Dictée')
119
 
120
- if st.session_state.dictéegenerated == "Hobby":
121
- with st.expander("Paramètres de la dictée", expanded=True):
122
- st.session_state.Mode = st.radio("Mode:", ["S'entrainer: Vous aurez uniquement les audios suivi d'une correction par IA (Pour 1 seul personne)", "Entrainer: Vous aurez uniquement le texte de la dictée pour entrainer quelqu'un d'autre (Pour 2 ou + personnes)"])
123
- st.session_state.Classe = st.selectbox("Classe", ["CP", "CE1", "CE2", "CM1", "CM2", "6ème", "5ème", "4ème", "3ème", "Seconde", "Premiere", "Terminale"], index=2)
124
- st.session_state.Longueur = st.slider("Longueur de la dictée (nombre de mots)", 50, 500, 200)
125
- else:
126
- if st.button('Retour'):
127
- st.session_state.dictéegenerated = "Hobby"
128
- st.rerun()
129
-
130
-
131
  if st.button('Générer la Dictée'):
132
- st.session_state.dictéegenerated = "Generated"
133
  with st.spinner("Génération de la dictée en cours..."):
134
- dictee = generer_dictee()
135
- if st.session_state.Mode == "S'entrainer: Vous aurez uniquement les audios suivi d'une correction par IA (Pour 1 seul personne)":
136
  audio_urls = dictee_to_audio_segmented(dictee)
137
  concatenated_audio_path = concatenate_audio(audio_urls)
138
-
139
  col1, col2 = st.columns(2)
140
-
141
  with col1:
142
  st.audio(concatenated_audio_path, format='audio/wav', start_time=0)
143
  with st.expander("Phrases de la Dictée"):
144
  for idx, url in enumerate(audio_urls, start=1):
145
  st.markdown(f"**Phrase {idx}:**")
146
  st.audio(url, format='audio/wav')
147
-
148
  with col2:
149
- st.session_state.Dictee_User = st.text_input("Écrivez la dictée ici:")
150
  if st.button('Correction'):
151
- with st.spinner("Génération de la dictée en cours..."):
152
- correction = correction_dictee()
153
  st.markdown("Voici la correction :")
154
  st.markdown(correction)
155
-
156
- elif st.session_state.Mode == "Entrainer: Vous aurez uniquement le texte de la dictée pour entrainer quelqu'un d'autre (Pour 2 ou + personnes)":
157
- st.text_area("Voici votre dictée :", dictee, height=300)
 
46
  audio_urls.append(audio_path)
47
  return audio_urls
48
 
49
+ def generer_dictee(classe, longueur):
50
+ prompt = f"Créer une dictée pour la classe {classe} d'une longueur d'environ {longueur} mots. Il est important de créer le texte uniquement de la dictée et de ne pas ajouter de consignes ou d'indications supplémentaires."
51
  generate_kwargs = {
52
  "temperature": 0.7,
53
  "max_new_tokens": 1000,
 
63
  dictee = dictee.replace("</s>", "").strip()
64
  return dictee
65
 
66
+ def correction_dictee(dictee_generated, dictee_user):
67
+ prompt = f"Voici une dictée crée: {dictee_generated} | Voici la dictée faite par l'utilisateur : {dictee_user} - Corrige la dictée en donnant les explications, utilise les syntax du markdown pour une meilleur comprehesion de la correction. Il est important de comparer la dictée de l'utilisateur avec uniquement celle crée."
68
  generate_kwargs = {
69
  "temperature": 0.7,
70
  "max_new_tokens": 2000, # Ajustez selon la longueur attendue de la correction
 
97
  sentences = re.split(r'(?<=[.!?]) +', texte)
98
  return sentences
99
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  # Streamlit App Interface
101
  st.set_page_config(layout="wide")
102
  st.title('Générateur de Dictée')
103
 
104
+ mode = st.radio("Mode:", ["S'entrainer: Vous aurez uniquement les audios suivi d'une correction par IA (Pour 1 seul personne)", "Entrainer: Vous aurez uniquement le texte de la dictée pour entrainer quelqu'un d'autre (Pour 2 ou + personnes)"])
105
+ classe = st.selectbox("Classe", ["CP", "CE1", "CE2", "CM1", "CM2", "6ème", "5ème", "4ème", "3ème", "Seconde", "Premiere", "Terminale"], index=2)
106
+ longueur = st.slider("Longueur de la dictée (nombre de mots)", 50, 500, 200)
107
+
 
 
 
 
 
 
 
108
  if st.button('Générer la Dictée'):
 
109
  with st.spinner("Génération de la dictée en cours..."):
110
+ dictee = generer_dictee(classe, longueur)
111
+ if mode == "S'entrainer: Vous aurez uniquement les audios suivi d'une correction par IA (Pour 1 seul personne)":
112
  audio_urls = dictee_to_audio_segmented(dictee)
113
  concatenated_audio_path = concatenate_audio(audio_urls)
114
+
115
  col1, col2 = st.columns(2)
116
+
117
  with col1:
118
  st.audio(concatenated_audio_path, format='audio/wav', start_time=0)
119
  with st.expander("Phrases de la Dictée"):
120
  for idx, url in enumerate(audio_urls, start=1):
121
  st.markdown(f"**Phrase {idx}:**")
122
  st.audio(url, format='audio/wav')
123
+
124
  with col2:
125
+ dictee_user = st.text_input("Écrivez la dictée ici:")
126
  if st.button('Correction'):
127
+ with st.spinner("Génération de la correction en cours..."):
128
+ correction = correction_dictee(dictee, dictee_user)
129
  st.markdown("Voici la correction :")
130
  st.markdown(correction)
131
+
132
+ elif mode == "Entrainer: Vous aurez uniquement le texte de la dictée pour entrainer quelqu'un d'autre (Pour 2 ou + personnes)":
133
+ st.text_area("Voici votre dictée :", dictee, height=300)