Spaces:
Paused
Paused
rick
commited on
mise a jours UI/UX
Browse files
app.py
CHANGED
|
@@ -462,6 +462,7 @@ def on_languages_change() -> None:
|
|
| 462 |
for lang in selected_language_names
|
| 463 |
]
|
| 464 |
|
|
|
|
| 465 |
def init_process_mode() -> Tuple[str, str]:
|
| 466 |
"""
|
| 467 |
Initialise le mode de traitement pour la traduction si nécessaire.
|
|
@@ -483,6 +484,9 @@ def main():
|
|
| 483 |
st.title("------- DEMORRHA -------")
|
| 484 |
|
| 485 |
# Initialisation des variables d'état de session
|
|
|
|
|
|
|
|
|
|
| 486 |
if "language_detected" not in st.session_state:
|
| 487 |
st.session_state["language_detected"] = None
|
| 488 |
|
|
@@ -516,49 +520,60 @@ def main():
|
|
| 516 |
if not any(message["role"] == "system" for message in st.session_state.messages):
|
| 517 |
st.session_state.messages.insert(0, {"role": "system", "content": system_prompt})
|
| 518 |
|
| 519 |
-
with st.container(border=True):
|
| 520 |
-
# Interface utilisateur pour le chat textuel
|
| 521 |
-
if user_input := st.chat_input(get_translation("entrez_message")):
|
| 522 |
-
# Traitement du message texte de l'utilisateur
|
| 523 |
-
if st.session_state.language_detected is None:
|
| 524 |
-
st.session_state.language_detected = detect_language(
|
| 525 |
-
input_text=user_input, temperature=0.01
|
| 526 |
-
)
|
| 527 |
-
|
| 528 |
-
audio_list = []
|
| 529 |
-
for cursor_selected_lang in st.session_state.selected_languages:
|
| 530 |
-
st.session_state.target_language = cursor_selected_lang["iso-639-1"]
|
| 531 |
-
|
| 532 |
-
# Initialisation du mode de traitement pour la langue cible actuelle
|
| 533 |
-
system_prompt, operation_prompt = init_process_mode()
|
| 534 |
|
| 535 |
-
|
| 536 |
-
|
| 537 |
-
|
| 538 |
-
|
| 539 |
-
|
| 540 |
-
|
| 541 |
-
|
| 542 |
-
|
| 543 |
-
|
| 544 |
-
|
| 545 |
-
|
|
|
|
|
|
|
| 546 |
|
| 547 |
-
|
| 548 |
-
|
| 549 |
-
|
| 550 |
-
|
| 551 |
-
|
| 552 |
-
|
| 553 |
-
|
| 554 |
-
|
| 555 |
-
|
| 556 |
-
|
| 557 |
-
|
| 558 |
-
|
| 559 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 560 |
|
| 561 |
-
with st.container(
|
| 562 |
# Interface utilisateur pour l'enregistrement audio
|
| 563 |
st.write(get_translation("enregistrez_message"))
|
| 564 |
audio = audiorecorder(
|
|
|
|
| 462 |
for lang in selected_language_names
|
| 463 |
]
|
| 464 |
|
| 465 |
+
|
| 466 |
def init_process_mode() -> Tuple[str, str]:
|
| 467 |
"""
|
| 468 |
Initialise le mode de traitement pour la traduction si nécessaire.
|
|
|
|
| 484 |
st.title("------- DEMORRHA -------")
|
| 485 |
|
| 486 |
# Initialisation des variables d'état de session
|
| 487 |
+
if "ui_loaded" not in st.session_state:
|
| 488 |
+
st.session_state["ui_loaded"] = False
|
| 489 |
+
|
| 490 |
if "language_detected" not in st.session_state:
|
| 491 |
st.session_state["language_detected"] = None
|
| 492 |
|
|
|
|
| 520 |
if not any(message["role"] == "system" for message in st.session_state.messages):
|
| 521 |
st.session_state.messages.insert(0, {"role": "system", "content": system_prompt})
|
| 522 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 523 |
|
| 524 |
+
|
| 525 |
+
|
| 526 |
+
# Interface utilisateur pour le chat textuel
|
| 527 |
+
if user_input := st.chat_input(get_translation("entrez_message")):
|
| 528 |
+
# Traitement du message texte de l'utilisateur
|
| 529 |
+
if st.session_state.language_detected is None:
|
| 530 |
+
st.session_state.language_detected = detect_language(
|
| 531 |
+
input_text=user_input, temperature=0.01
|
| 532 |
+
)
|
| 533 |
+
|
| 534 |
+
audio_list = []
|
| 535 |
+
for cursor_selected_lang in st.session_state.selected_languages:
|
| 536 |
+
st.session_state.target_language = cursor_selected_lang["iso-639-1"]
|
| 537 |
|
| 538 |
+
# Initialisation du mode de traitement pour la langue cible actuelle
|
| 539 |
+
system_prompt, operation_prompt = init_process_mode()
|
| 540 |
+
|
| 541 |
+
# Traitement du message utilisateur pour la langue cible actuelle
|
| 542 |
+
try:
|
| 543 |
+
tts_audio, tts_duration = process_message(
|
| 544 |
+
user_input,
|
| 545 |
+
operation_prompt=f"{operation_prompt}",
|
| 546 |
+
tts_enabled=st.session_state.enable_tts_for_input_from_text_field
|
| 547 |
+
)
|
| 548 |
+
if tts_audio is not None:
|
| 549 |
+
audio_list.append((tts_audio, tts_duration))
|
| 550 |
+
except Exception as e:
|
| 551 |
+
st.error(f"Erreur lors du traitement du message : {str(e)}")
|
| 552 |
+
|
| 553 |
+
if audio_list:
|
| 554 |
+
try:
|
| 555 |
+
final_audio = concatenate_audio_files(audio_list)
|
| 556 |
+
with st.container(border=True):
|
| 557 |
+
st.audio(final_audio, format="audio/mp3", autoplay=True)
|
| 558 |
+
|
| 559 |
+
# Générer un nom de fichier unique
|
| 560 |
+
timestamp = time.strftime("%Y%m%d-%H%M%S")
|
| 561 |
+
langues = "_".join([lang["iso-639-1"] for lang in st.session_state.selected_languages])
|
| 562 |
+
nom_fichier = f"reponse_audio_{langues}_{timestamp}.mp3"
|
| 563 |
+
|
| 564 |
+
st.download_button(
|
| 565 |
+
label=get_translation("telecharger_audio"),
|
| 566 |
+
data=final_audio,
|
| 567 |
+
file_name=nom_fichier,
|
| 568 |
+
mime="audio/mp3",
|
| 569 |
+
use_container_width=True,
|
| 570 |
+
type="primary",
|
| 571 |
+
key=f"download_button_{langues}_{timestamp}",
|
| 572 |
+
)
|
| 573 |
+
except Exception as e:
|
| 574 |
+
st.error(f"Erreur lors de la concaténation des fichiers audio : {str(e)}")
|
| 575 |
|
| 576 |
+
with st.container():
|
| 577 |
# Interface utilisateur pour l'enregistrement audio
|
| 578 |
st.write(get_translation("enregistrez_message"))
|
| 579 |
audio = audiorecorder(
|