rick commited on
Commit
29e90a0
·
unverified ·
1 Parent(s): e845f52

update demorrha

Browse files
Files changed (1) hide show
  1. app.py +57 -28
app.py CHANGED
@@ -130,15 +130,10 @@ def process_message(message, operation_prompt="", tts_enabled=False):
130
 
131
  st.session_state.messages.append({"role": "assistant", "content": full_response})
132
 
133
- # Afficher les traductions pour chaque langue cible
134
- translations = full_response.split("\n\n")
135
- for translation in translations:
136
- lang, text = translation.split(":", 1)
137
- with st.expander(f"Traduction en {lang.strip()}"):
138
- st.markdown(text.strip())
139
- if tts_enabled:
140
- tts_audio = text_to_speech(text.strip())
141
- st.audio(tts_audio, format="audio/mp3")
142
 
143
  # Classe pour stocker les prompts système globaux
144
  class GlobalSystemPrompts:
@@ -152,12 +147,11 @@ SYSTEM_PROMPT=""
152
  OP_PROMPT=""
153
 
154
  # Fonction pour configurer le mode de traduction
155
- def set_mode_translation(from_lang, dest_langs):
156
  global SYSTEM_PROMPT
157
  global OP_PROMPT
158
- SYSTEM_PROMPT = GlobalSystemPrompts.linguascribe()
159
- dest_langs_str = ", ".join(dest_langs)
160
- OP_PROMPT = f"Translate({from_lang} to {dest_langs_str})"
161
 
162
  # Liste des langues supportées par l'application
163
  SUPPORTED_LANGUAGES=["Afrikaans", "Arabic", "Armenian", "Azerbaijani", "Belarusian", "Bosnian", "Bulgarian", "Catalan", "Chinese", "Croatian", "Czech", "Danish", "Dutch", "English", "Estonian", "Finnish", "French", "Galician", "German", "Greek", "Hebrew", "Hindi", "Hungarian", "Icelandic", "Indonesian", "Italian", "Japanese", "Kannada", "Kazakh", "Korean", "Latvian", "Lithuanian", "Macedonian", "Malay", "Marathi", "Maori", "Nepali", "Norwegian", "Persian", "Polish", "Portuguese", "Romanian", "Russian", "Serbian", "Slovak", "Slovenian", "Spanish", "Swahili", "Swedish", "Tagalog", "Tamil", "Thai", "Turkish", "Ukrainian", "Urdu", "Vietnamese", "Welsh"]
@@ -197,8 +191,11 @@ def main():
197
  if "process_mode" not in st.session_state:
198
  st.session_state["process_mode"] = "translation"
199
 
200
- if "target_languages" not in st.session_state:
201
- st.session_state.target_languages = ["en"]
 
 
 
202
 
203
  if "enable_tts_for_input_from_text_field" not in st.session_state:
204
  st.session_state["enable_tts_for_input_from_text_field"] = True
@@ -209,7 +206,8 @@ def main():
209
  def init_process_mode():
210
  # Configuration du mode de traduction si nécessaire
211
  if "translation" == st.session_state["process_mode"]:
212
- set_mode_translation(from_lang=st.session_state.language_detected, dest_langs=st.session_state.target_languages)
 
213
 
214
  init_process_mode()
215
 
@@ -226,8 +224,20 @@ def main():
226
  # Traitement du message textuel de l'utilisateur
227
  if None == st.session_state.language_detected:
228
  st.session_state.language_detected = language_detection(input_text=user_input, temperature=0.01)
 
 
 
 
 
 
229
  init_process_mode()
230
- process_message(user_input, operation_prompt=f"{OP_PROMPT}", tts_enabled=st.session_state.enable_tts_for_input_from_text_field)
 
 
 
 
 
 
231
  # Affichage de l'historique des messages (sauf le message système)
232
  for message in st.session_state.messages[1:]:
233
  with st.chat_message(message["role"]):
@@ -238,6 +248,7 @@ def main():
238
  st.write("Ou enregistrez votre message audio :")
239
  audio = audiorecorder("Cliquez pour enregistrer", "Cliquez pour arrêter l'enregistrement")
240
 
 
241
  # Traitement de l'entrée audio de l'utilisateur
242
  if len(audio) > 0:
243
  with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as temp_audio:
@@ -246,10 +257,21 @@ def main():
246
  os.unlink(temp_audio.name) # Supprimer le fichier temporaire
247
  if None == st.session_state.language_detected:
248
  st.session_state.language_detected = language_detection(input_text=transcription, temperature=0.01)
249
- init_process_mode()
250
  st.write(f"Langue détectée : {st.session_state.language_detected}")
 
251
  st.write(f"Transcription : {transcription}")
252
- process_message(transcription, operation_prompt=f"{OP_PROMPT}", tts_enabled=st.session_state.enable_tts_for_input_from_audio_record)
 
 
 
 
 
 
 
 
 
 
 
253
 
254
  # Configuration de la barre latérale
255
  with st.sidebar:
@@ -261,23 +283,29 @@ def main():
261
  "Abattre les barrières linguistiques entre les hommes."
262
  ]))
263
 
 
 
 
 
 
 
 
264
  with st.container(border=True):
265
- # Conteneur pour la sélection des langues
266
- st.subheader("Sélection des langues")
267
 
 
268
  # Sélection multiple des langues de destination
269
- selected_languages = st.multiselect(
270
  label="Choisissez les langues de destination",
 
271
  options=SUPPORTED_LANGUAGES,
272
  default=["English"],
273
  key="language_selector",
 
 
274
  )
275
 
276
- # Mettre à jour les langues cibles et réinitialiser les messages
277
- if selected_languages != st.session_state.get("target_languages", []):
278
- st.session_state.target_languages = [convert_language_name_to_iso6391(lang) for lang in selected_languages]
279
- st.session_state.messages = []
280
-
281
  with st.container(border=True):
282
  st.subheader("Paramètres TTS")
283
  st.checkbox(
@@ -290,7 +318,8 @@ def main():
290
  key="enable_tts_for_input_from_audio_record",
291
  value=st.session_state.get("enable_tts_for_input_from_audio_record", True)
292
  )
 
293
 
294
  # Point d'entrée de l'application
295
  if __name__ == "__main__":
296
- main()
 
130
 
131
  st.session_state.messages.append({"role": "assistant", "content": full_response})
132
 
133
+ if tts_enabled:
134
+ tts_audio = text_to_speech(full_response)
135
+ st.audio(tts_audio, format="audio/mp3", autoplay=True)
136
+
 
 
 
 
 
137
 
138
  # Classe pour stocker les prompts système globaux
139
  class GlobalSystemPrompts:
 
147
  OP_PROMPT=""
148
 
149
  # Fonction pour configurer le mode de traduction
150
+ def set_mode_translation(from_lang, dest_lang):
151
  global SYSTEM_PROMPT
152
  global OP_PROMPT
153
+ SYSTEM_PROMPT=GlobalSystemPrompts.linguascribe()
154
+ OP_PROMPT = f"Translate({from_lang} to {dest_lang})"
 
155
 
156
  # Liste des langues supportées par l'application
157
  SUPPORTED_LANGUAGES=["Afrikaans", "Arabic", "Armenian", "Azerbaijani", "Belarusian", "Bosnian", "Bulgarian", "Catalan", "Chinese", "Croatian", "Czech", "Danish", "Dutch", "English", "Estonian", "Finnish", "French", "Galician", "German", "Greek", "Hebrew", "Hindi", "Hungarian", "Icelandic", "Indonesian", "Italian", "Japanese", "Kannada", "Kazakh", "Korean", "Latvian", "Lithuanian", "Macedonian", "Malay", "Marathi", "Maori", "Nepali", "Norwegian", "Persian", "Polish", "Portuguese", "Romanian", "Russian", "Serbian", "Slovak", "Slovenian", "Spanish", "Swahili", "Swedish", "Tagalog", "Tamil", "Thai", "Turkish", "Ukrainian", "Urdu", "Vietnamese", "Welsh"]
 
191
  if "process_mode" not in st.session_state:
192
  st.session_state["process_mode"] = "translation"
193
 
194
+ if "target_language" not in st.session_state:
195
+ st.session_state.target_language = "en"
196
+
197
+ if "selected_languages" not in st.session_state:
198
+ st.session_state.selected_languages = [{"language": "English", "iso-639-1": "en"}]
199
 
200
  if "enable_tts_for_input_from_text_field" not in st.session_state:
201
  st.session_state["enable_tts_for_input_from_text_field"] = True
 
206
  def init_process_mode():
207
  # Configuration du mode de traduction si nécessaire
208
  if "translation" == st.session_state["process_mode"]:
209
+ set_mode_translation(from_lang=st.session_state.language_detected, dest_lang=st.session_state.target_language)
210
+
211
 
212
  init_process_mode()
213
 
 
224
  # Traitement du message textuel de l'utilisateur
225
  if None == st.session_state.language_detected:
226
  st.session_state.language_detected = language_detection(input_text=user_input, temperature=0.01)
227
+
228
+ for cursor_selected_lang in st.session_state.selected_languages:
229
+ # Mise à jour de la langue cible avec le code ISO 639-1 de la langue sélectionnée
230
+ st.session_state.target_language = cursor_selected_lang["iso-639-1"]
231
+
232
+ # Initialisation du mode de traitement pour la langue cible actuelle
233
  init_process_mode()
234
+
235
+ # Traitement du message de l'utilisateur pour la langue cible actuelle
236
+ process_message(user_input,
237
+ operation_prompt=f"{OP_PROMPT}",
238
+ tts_enabled=st.session_state.enable_tts_for_input_from_text_field)
239
+
240
+ # #################################################################
241
  # Affichage de l'historique des messages (sauf le message système)
242
  for message in st.session_state.messages[1:]:
243
  with st.chat_message(message["role"]):
 
248
  st.write("Ou enregistrez votre message audio :")
249
  audio = audiorecorder("Cliquez pour enregistrer", "Cliquez pour arrêter l'enregistrement")
250
 
251
+
252
  # Traitement de l'entrée audio de l'utilisateur
253
  if len(audio) > 0:
254
  with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as temp_audio:
 
257
  os.unlink(temp_audio.name) # Supprimer le fichier temporaire
258
  if None == st.session_state.language_detected:
259
  st.session_state.language_detected = language_detection(input_text=transcription, temperature=0.01)
 
260
  st.write(f"Langue détectée : {st.session_state.language_detected}")
261
+
262
  st.write(f"Transcription : {transcription}")
263
+
264
+ for cursor_selected_lang in st.session_state.selected_languages:
265
+ # Mise à jour de la langue cible avec le code ISO 639-1 de la langue sélectionnée
266
+ st.session_state.target_language = cursor_selected_lang["iso-639-1"]
267
+
268
+ # Initialisation du mode de traitement pour la langue cible actuelle
269
+ init_process_mode()
270
+
271
+ # Traitement du message de l'utilisateur pour la langue cible actuelle
272
+ process_message(transcription,
273
+ operation_prompt=f"{OP_PROMPT}",
274
+ tts_enabled=st.session_state.enable_tts_for_input_from_audio_record)
275
 
276
  # Configuration de la barre latérale
277
  with st.sidebar:
 
283
  "Abattre les barrières linguistiques entre les hommes."
284
  ]))
285
 
286
+ # Fonction de rappel pour le changement de(s) langue(s) de destination selectionnée(s)
287
+ def on_languages_change():
288
+ print(type(st.session_state.selected_languages))
289
+ print(st.session_state.selected_languages)
290
+ selected_languages = [ {"language": selected_language, "iso-639-1":convert_language_name_to_iso6391(selected_language) } for selected_language in st.session_state.selected_languages ]
291
+ st.session_state.selected_languages = selected_languages
292
+
293
  with st.container(border=True):
294
+ # Conteneur pour la sélection de la langue
295
+ st.subheader("Sélection de la langue")
296
 
297
+
298
  # Sélection multiple des langues de destination
299
+ st.multiselect(
300
  label="Choisissez les langues de destination",
301
+ placeholder="Sélectionnez une a quatre langue(s)",
302
  options=SUPPORTED_LANGUAGES,
303
  default=["English"],
304
  key="language_selector",
305
+ max_selections=4,
306
+ on_change=on_languages_change
307
  )
308
 
 
 
 
 
 
309
  with st.container(border=True):
310
  st.subheader("Paramètres TTS")
311
  st.checkbox(
 
318
  key="enable_tts_for_input_from_audio_record",
319
  value=st.session_state.get("enable_tts_for_input_from_audio_record", True)
320
  )
321
+
322
 
323
  # Point d'entrée de l'application
324
  if __name__ == "__main__":
325
+ main()