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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -71
app.py CHANGED
@@ -98,76 +98,41 @@ def segmenter_texte(texte):
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 or 'correction' in st.session_state:
165
- st.session_state.correction = correction_dictee(dictee, dictee_user)
166
- st.divider()
167
- st.markdown("### 🎉 Voici la correction (*Par IA*) :")
168
- st.markdown(st.session_state.correction)
169
-
170
- elif mode.startswith("Entrainer"):
171
- st.markdown("### 📚 Voici la dictée :")
172
- st.markdown(dictee)
173
 
 
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