rick commited on
Commit
9f17237
·
unverified ·
1 Parent(s): 1d27406

amelioration UI/UX

Browse files
Files changed (1) hide show
  1. app.py +81 -23
app.py CHANGED
@@ -9,6 +9,64 @@ import os
9
  import io
10
  import time
11
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  # Configuration du client OpenAI avec la clé API
13
  client = OpenAI(api_key=getenv("OPENAI_API_KEY"))
14
 
@@ -19,9 +77,9 @@ def lire_fichier(nom_fichier):
19
  contenu = fichier.read()
20
  return contenu
21
  except FileNotFoundError:
22
- return f"Erreur : Le fichier '{nom_fichier}' n'a pas été trouvé."
23
  except Exception as e:
24
- return f"Une erreur s'est produite lors de la lecture du fichier : {str(e)}"
25
 
26
  # Fonction pour diviser un fichier audio en segments de 25 Mo ou moins
27
  def split_audio(audio_file, max_size_mb=25):
@@ -245,6 +303,10 @@ def main():
245
  if "enable_tts_for_input_from_audio_record" not in st.session_state:
246
  st.session_state["enable_tts_for_input_from_audio_record"] = True
247
 
 
 
 
 
248
  def init_process_mode():
249
  # Configuration du mode de traduction si nécessaire
250
  if "translation" == st.session_state["process_mode"]:
@@ -262,7 +324,7 @@ def main():
262
  st.session_state.messages.insert(0, {"role": "system", "content": SYSTEM_PROMPT})
263
 
264
  # Interface utilisateur pour le chat textuel
265
- if user_input := st.chat_input("Entrez votre message ici:"):
266
  # Traitement du message textuel de l'utilisateur
267
  if None == st.session_state.language_detected:
268
  st.session_state.language_detected = language_detection(input_text=user_input, temperature=0.01)
@@ -297,10 +359,10 @@ def main():
297
 
298
  with st.container(border=True):
299
  # Interface utilisateur pour l'enregistrement audio
300
- st.write("Ou enregistrez votre message audio :")
301
- audio = audiorecorder(start_prompt="Cliquez pour enregistrer",
302
- stop_prompt="Cliquez pour arrêter l'enregistrement",
303
- pause_prompt="Cliquez pour mettre en pause",
304
  show_visualizer=True,
305
  key="vocal_chat_input"
306
  )
@@ -314,9 +376,9 @@ def main():
314
  os.unlink(temp_audio.name) # Supprimer le fichier temporaire
315
  if None == st.session_state.language_detected:
316
  st.session_state.language_detected = language_detection(input_text=transcription, temperature=0.01)
317
- st.write(f"Langue détectée : {st.session_state.language_detected}")
318
 
319
- st.write(f"Transcription : {transcription}")
320
 
321
  audio_list = []
322
  for cursor_selected_lang in st.session_state.selected_languages:
@@ -341,13 +403,9 @@ def main():
341
 
342
  # Configuration de la barre latérale
343
  with st.sidebar:
344
- st.header("DEMORRHA - v1")
345
- st.markdown("## À propos")
346
- st.info("\n".join([
347
- "Cette application utilise Streamlit et l'API d'OpenAI pour créer un chat interactif avec des modèles de langages avancés dans le but de fournir un outil permettant la communication entre les êtres humains.",
348
- "Cet outil a pour objectif de montrer la voie dans un acte saint de la volonté de son auteur : ",
349
- "Abattre les barrières linguistiques entre les hommes."
350
- ]))
351
 
352
  # Fonction de rappel pour le changement de(s) langue(s) de destination selectionnée(s)
353
  def on_languages_change():
@@ -360,13 +418,13 @@ def main():
360
 
361
  with st.container(border=True):
362
  # Conteneur pour la sélection de la langue
363
- st.subheader("Sélection de la langue")
364
 
365
 
366
  # Sélection multiple des langues de destination
367
  st.multiselect(
368
- label="Choisissez les langues de destination",
369
- placeholder="Sélectionnez une a quatre langue(s)",
370
  options=SUPPORTED_LANGUAGES,
371
  default=["English"],
372
  key="language_selector",
@@ -375,19 +433,19 @@ def main():
375
  )
376
 
377
  with st.container(border=True):
378
- st.subheader("Paramètres TTS")
379
  st.selectbox(
380
- "Choisissez la voix TTS",
381
  options=["alloy", "echo", "fable", "onyx", "nova", "shimmer"],
382
  index=3, # "onyx" est à l'index 3
383
  key="tts_voice"
384
  )
385
  st.checkbox(
386
- "Activer TTS pour les entrées textuelles",
387
  key="enable_tts_for_input_from_text_field"
388
  )
389
  st.checkbox(
390
- "Activer TTS pour les entrées audio",
391
  key="enable_tts_for_input_from_audio_record"
392
  )
393
 
 
9
  import io
10
  import time
11
 
12
+
13
+ # Dictionnaire pour stocker les traductions
14
+ traductions = {
15
+ "Français": {
16
+ "titre": "------- DEMORRHA -------",
17
+ "entrez_message": "Entrez votre message ici:",
18
+ "enregistrez_message": "Ou enregistrez votre message audio :",
19
+ "cliquez_enregistrer": "Cliquez pour enregistrer",
20
+ "cliquez_arreter": "Cliquez pour arrêter l'enregistrement",
21
+ "cliquez_pause": "Cliquez pour mettre en pause",
22
+ "langue_detectee": "Langue détectée : {}", # {} sera remplacé par la langue détectée
23
+ "transcription": "Transcription : {}",
24
+ "sidebar_titre": "DEMORRHA - v1",
25
+ "a_propos": "À propos",
26
+ "info_app": "\n".join([
27
+ "Cette application utilise Streamlit et l'API d'OpenAI pour créer un chat interactif avec des modèles de langages avancés dans le but de fournir un outil permettant la communication entre les êtres humains.",
28
+ "Cet outil a pour objectif de montrer la voie dans un acte saint de la volonté de son auteur : ",
29
+ "Abattre les barrières linguistiques entre les hommes."
30
+ ]),
31
+ "selection_langue": "Sélection de la langue",
32
+ "langues_destination": "Choisissez les langues de destination",
33
+ "placeholder_langues": "Sélectionnez une à quatre langue(s)",
34
+ "parametres_tts": "Paramètres TTS",
35
+ "choix_voix_tts": "Choisissez la voix TTS",
36
+ "activer_tts_texte": "Activer TTS pour les entrées textuelles",
37
+ "activer_tts_audio": "Activer TTS pour les entrées audio"
38
+ },
39
+ "Anglais": {
40
+ "titre": "------- DEMORRHA -------",
41
+ "entrez_message": "Enter your message here:",
42
+ "enregistrez_message": "Or record your audio message:",
43
+ "cliquez_enregistrer": "Click to record",
44
+ "cliquez_arreter": "Click to stop recording",
45
+ "cliquez_pause": "Click to pause",
46
+ "langue_detectee": "Detected language: {}",
47
+ "transcription": "Transcription: {}",
48
+ "sidebar_titre": "DEMORRHA - v1",
49
+ "a_propos": "About",
50
+ "info_app": "\n".join([
51
+ "This application uses Streamlit and the OpenAI API to create an interactive chat with advanced language models in order to provide a tool for communication between humans.",
52
+ "This tool aims to lead the way in a holy act of its author's will:",
53
+ "Breaking down language barriers between people."
54
+ ]),
55
+ "selection_langue": "Language selection",
56
+ "langues_destination": "Choose the destination languages",
57
+ "placeholder_langues": "Select one to four language(s)",
58
+ "parametres_tts": "TTS settings",
59
+ "choix_voix_tts": "Choose the TTS voice",
60
+ "activer_tts_texte": "Enable TTS for text input",
61
+ "activer_tts_audio": "Enable TTS for audio input"
62
+ }
63
+ }
64
+
65
+ # Fonction pour obtenir les traductions en fonction de la langue sélectionnée
66
+ def _(key):
67
+ return traductions[st.session_state.interface_language][key]
68
+
69
+
70
  # Configuration du client OpenAI avec la clé API
71
  client = OpenAI(api_key=getenv("OPENAI_API_KEY"))
72
 
 
77
  contenu = fichier.read()
78
  return contenu
79
  except FileNotFoundError:
80
+ return _("erreur_fichier_non_trouve").format(nom_fichier)
81
  except Exception as e:
82
+ return _("erreur_lecture_fichier").format(str(e))
83
 
84
  # Fonction pour diviser un fichier audio en segments de 25 Mo ou moins
85
  def split_audio(audio_file, max_size_mb=25):
 
303
  if "enable_tts_for_input_from_audio_record" not in st.session_state:
304
  st.session_state["enable_tts_for_input_from_audio_record"] = True
305
 
306
+ if "interface_language" not in st.session_state:
307
+ st.session_state.interface_language = "Français" # Langue par défaut
308
+
309
+
310
  def init_process_mode():
311
  # Configuration du mode de traduction si nécessaire
312
  if "translation" == st.session_state["process_mode"]:
 
324
  st.session_state.messages.insert(0, {"role": "system", "content": SYSTEM_PROMPT})
325
 
326
  # Interface utilisateur pour le chat textuel
327
+ if user_input := st.chat_input(_("entrez_message")):
328
  # Traitement du message textuel de l'utilisateur
329
  if None == st.session_state.language_detected:
330
  st.session_state.language_detected = language_detection(input_text=user_input, temperature=0.01)
 
359
 
360
  with st.container(border=True):
361
  # Interface utilisateur pour l'enregistrement audio
362
+ st.write(_("enregistrez_message"))
363
+ audio = audiorecorder(start_prompt=_("cliquez_enregistrer"),
364
+ stop_prompt=_("cliquez_arreter"),
365
+ pause_prompt=_("cliquez_pause"),
366
  show_visualizer=True,
367
  key="vocal_chat_input"
368
  )
 
376
  os.unlink(temp_audio.name) # Supprimer le fichier temporaire
377
  if None == st.session_state.language_detected:
378
  st.session_state.language_detected = language_detection(input_text=transcription, temperature=0.01)
379
+ st.write(_("langue_detectee").format(st.session_state.language_detected))
380
 
381
+ st.write(_("transcription").format(transcription))
382
 
383
  audio_list = []
384
  for cursor_selected_lang in st.session_state.selected_languages:
 
403
 
404
  # Configuration de la barre latérale
405
  with st.sidebar:
406
+ st.header(_("sidebar_titre"))
407
+ st.markdown("## " + _("a_propos"))
408
+ st.info(_("info_app"))
 
 
 
 
409
 
410
  # Fonction de rappel pour le changement de(s) langue(s) de destination selectionnée(s)
411
  def on_languages_change():
 
418
 
419
  with st.container(border=True):
420
  # Conteneur pour la sélection de la langue
421
+ st.subheader(_("selection_langue"))
422
 
423
 
424
  # Sélection multiple des langues de destination
425
  st.multiselect(
426
+ label=_("langues_destination"),
427
+ placeholder=_("placeholder_langues"),
428
  options=SUPPORTED_LANGUAGES,
429
  default=["English"],
430
  key="language_selector",
 
433
  )
434
 
435
  with st.container(border=True):
436
+ st.subheader(_("parametres_tts"))
437
  st.selectbox(
438
+ _("choix_voix_tts"),
439
  options=["alloy", "echo", "fable", "onyx", "nova", "shimmer"],
440
  index=3, # "onyx" est à l'index 3
441
  key="tts_voice"
442
  )
443
  st.checkbox(
444
+ _("activer_tts_texte"),
445
  key="enable_tts_for_input_from_text_field"
446
  )
447
  st.checkbox(
448
+ _("activer_tts_audio"),
449
  key="enable_tts_for_input_from_audio_record"
450
  )
451