Lenylvt commited on
Commit
d561c10
·
verified ·
1 Parent(s): 9efbb38

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +84 -37
app.py CHANGED
@@ -98,41 +98,88 @@ def segmenter_texte(texte):
98
  return sentences
99
 
100
  # Streamlit App Interface
101
- def main():
102
- if 'params' not in st.session_state:
103
- st.session_state.params = {'classe': 'CM2', 'longueur': 200, 'mode': 'S\'entrainer'}
104
-
105
- classe = st.selectbox("Classe", ["CP", "CE1", "CE2", "CM1", "CM2", "6ème", "5ème", "4ème", "3ème", "Seconde", "Premiere", "Terminale"], index=2, key="classe")
106
- longueur = st.slider("Longueur de la dictée (nombre de mots)", 50, 500, 200, key="longueur")
107
- mode = st.radio("Mode:", ["S'entrainer", "Entrainer"], key="mode")
108
-
109
- st.session_state.params = {'classe': classe, 'longueur': longueur, 'mode': mode}
110
-
111
- if st.button("Générer la dictée"):
 
 
 
 
 
 
112
  st.session_state.dictee = generer_dictee(classe, longueur)
113
- st.session_state.dictee_user = ""
114
- st.session_state.correction = ""
115
-
116
- if 'dictee' in st.session_state:
117
- if mode == "S'entrainer":
118
- # Afficher la dictée et le formulaire pour saisir la dictée de l'utilisateur
119
- st.markdown("## 📖 Dictée")
120
- st.markdown(st.session_state.dictee)
121
-
122
- dictee_user = st.text_area("Écrivez la dictée ici:", key="dictee_user", height=350)
123
-
124
- if st.button("Correction"):
125
- st.session_state.correction = correction_dictee(st.session_state.dictee, dictee_user)
126
-
127
- if 'correction' in st.session_state:
128
- st.markdown("## 🎉 Correction")
129
- st.markdown(st.session_state.correction)
130
-
131
- elif mode == "Entrainer":
132
- # Afficher uniquement la dictée
133
- st.markdown("## 📖 Dictée")
134
- st.markdown(st.session_state.dictee)
135
-
136
- if __name__ == "__main__":
137
- main()
138
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
  return sentences
99
 
100
  # Streamlit App Interface
101
+ st.set_page_config(layout="wide")
102
+ st.title('🎓 Entrainement de Dictée')
103
+
104
+ if 'expanded' not in st.session_state:
105
+ st.session_state.expanded = True
106
+ with st.expander("📝 Génération de la dictée", expanded=st.session_state.expanded):
107
+ with st.form("dictation_form"):
108
+ st.markdown("### 🚀 Choisissez votre mode de dictée")
109
+ 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)"])
110
+ st.markdown("### 🎒 Sélectionnez la classe")
111
+ classe = st.selectbox("Classe", ["CP", "CE1", "CE2", "CM1", "CM2", "6ème", "5ème", "4ème", "3ème", "Seconde", "Premiere", "Terminale"], index=2)
112
+ st.markdown("### 📏 Définissez la longueur de la dictée")
113
+ longueur = st.slider("Longueur de la dictée (nombre de mots)", 50, 500, 200)
114
+ submitted = st.form_submit_button("🔮 Générer la Dictée")
115
+
116
+ if submitted or 'dictee' in st.session_state:
117
+ if 'dictee' not in st.session_state:
118
  st.session_state.dictee = generer_dictee(classe, longueur)
119
+ if 'expandedmodified' not in st.session_state:
120
+ st.session_state.expandedmodified = False
121
+ dictee = st.session_state.dictee
122
+ st.session_state.expanded = False
123
+ st.divider()
124
+ with st.spinner("🚀 Dictée en cours de création..."):
125
+ if not st.session_state.expandedmodified:
126
+ st.session_state.expandedmodified = True
127
+ st.rerun()
128
+ del st.session_state['expandedmodified']
129
+
130
+ if mode.startswith("S'entrainer"):
131
+ if 'audio_urls' not in st.session_state:
132
+ with st.spinner("🔊 Préparation des audios..."):
133
+ st.session_state.audio_urls = dictee_to_audio_segmented(dictee)
134
+ audio_urls = st.session_state.audio_urls
135
+ if 'concatenated_audio_path' not in st.session_state:
136
+ with st.spinner("🎵 Assemblage de l'audio complet..."):
137
+ st.session_state.concatenated_audio_path = concatenate_audio(audio_urls)
138
+ concatenated_audio_path = st.session_state.concatenated_audio_path
139
+
140
+ col1, col2 = st.columns(2)
141
+ with col1:
142
+ st.markdown("## 📖 Dictée en entier")
143
+ st.audio(concatenated_audio_path, format='audio/wav', start_time=0)
144
+ st.divider()
145
+ st.markdown("## 📖 Phrases de la Dictée")
146
+ with st.expander("Cliquez ici pour ouvrir"):
147
+ cols_per_row = 2
148
+ rows = (len(audio_urls) + cols_per_row - 1) // cols_per_row # Arrondir au nombre supérieur
149
+ for i in range(rows):
150
+ cols = st.columns(cols_per_row)
151
+ for j in range(cols_per_row):
152
+ idx = i * cols_per_row + j
153
+ if idx < len(audio_urls):
154
+ with cols[j]:
155
+ st.markdown(f"**Phrase {idx + 1}:**")
156
+ st.audio(audio_urls[idx], format='audio/wav')
157
+
158
+ with col2:
159
+ st.markdown("## ✍️ Votre Dictée")
160
+ with st.form("dictee_form"):
161
+ dictee_user = st.text_area("Écrivez la dictée ici:", key="dictee_user", height=350)
162
+ correct = st.form_submit_button("📝 Correction")
163
+
164
+ if correct:
165
+ st.session_state.correction = correction_dictee(dictee, dictee_user)
166
+ st.rerun()
167
+
168
+ if 'correction' in st.session_state:
169
+ st.divider()
170
+ st.markdown("### 🎉 Voici la correction (*Par IA*) :")
171
+ st.markdown(st.session_state.correction)
172
+ if st.button("En faire une nouvelle"):
173
+ del st.session_state['expandedmodified']
174
+ del st.session_state['dictee']
175
+ del st.session_state['audio_urls']
176
+ del st.session_state['concatenated_audio_path']
177
+ st.rerun()
178
+
179
+ elif mode.startswith("Entrainer"):
180
+ st.markdown("### 📚 Voici la dictée :")
181
+ st.markdown(dictee)
182
+ if st.button("En faire une nouvelle"):
183
+ del st.session_state['expandedmodified']
184
+ del st.session_state['dictee']
185
+ st.rerun()