Spaces:
Paused
Paused
rick commited on
...not done...
Browse files- pages/main.py +76 -73
pages/main.py
CHANGED
|
@@ -672,6 +672,9 @@ def main_page():
|
|
| 672 |
|
| 673 |
|
| 674 |
elif st.session_state.audio:
|
|
|
|
|
|
|
|
|
|
| 675 |
# Traitement de l'entrée audio de l'utilisateur
|
| 676 |
if len(st.session_state.audio) > 0:
|
| 677 |
tmp_file = tempfile.TemporaryFile()
|
|
@@ -688,88 +691,88 @@ def main_page():
|
|
| 688 |
|
| 689 |
tmp_file.close()
|
| 690 |
|
| 691 |
-
|
| 692 |
-
|
| 693 |
-
|
| 694 |
-
|
| 695 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 696 |
st.markdown(
|
| 697 |
-
f"
|
| 698 |
-
f"{
|
| 699 |
)
|
| 700 |
)
|
| 701 |
-
st.markdown(
|
| 702 |
-
f"🎤 {get_translation('transcription_audio')}".format(
|
| 703 |
-
f"{st.session_state.transcription}"
|
| 704 |
-
)
|
| 705 |
-
)
|
| 706 |
|
| 707 |
-
|
| 708 |
-
|
| 709 |
-
|
| 710 |
-
|
| 711 |
|
| 712 |
-
|
| 713 |
-
|
| 714 |
-
|
| 715 |
-
|
| 716 |
-
|
| 717 |
-
|
| 718 |
-
|
| 719 |
-
|
| 720 |
-
)
|
| 721 |
-
|
| 722 |
-
with st.chat_message("assistant", avatar="👻"):
|
| 723 |
-
message_placeholder = st.empty()
|
| 724 |
-
st.session_state.response_generator = process_message(
|
| 725 |
-
st.session_state.transcription,
|
| 726 |
-
st.session_state.operation_prompt,
|
| 727 |
-
st.session_state.enable_tts_for_input_from_audio_record,
|
| 728 |
-
st.session_state.system_prompt
|
| 729 |
)
|
| 730 |
|
| 731 |
-
|
| 732 |
-
message_placeholder.
|
| 733 |
-
|
| 734 |
-
|
| 735 |
-
|
|
|
|
|
|
|
|
|
|
| 736 |
|
| 737 |
-
|
| 738 |
-
|
| 739 |
-
|
| 740 |
-
|
| 741 |
-
|
| 742 |
-
( st.session_state.tts_audio,
|
| 743 |
-
st.session_state.tts_duration )
|
| 744 |
-
)
|
| 745 |
-
else:
|
| 746 |
-
pass
|
| 747 |
|
| 748 |
-
|
| 749 |
-
|
| 750 |
-
|
| 751 |
-
|
| 752 |
-
|
| 753 |
-
|
| 754 |
-
|
| 755 |
-
|
| 756 |
-
|
| 757 |
-
|
| 758 |
-
|
| 759 |
-
|
| 760 |
-
|
| 761 |
-
|
| 762 |
-
st.
|
| 763 |
-
|
| 764 |
-
|
| 765 |
-
|
| 766 |
-
|
| 767 |
-
|
| 768 |
-
|
| 769 |
-
|
| 770 |
-
|
| 771 |
-
|
| 772 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 773 |
|
| 774 |
|
| 775 |
def clear_inputs_garbages(sessions_state_list: Optional[list] =
|
|
|
|
| 672 |
|
| 673 |
|
| 674 |
elif st.session_state.audio:
|
| 675 |
+
if "language_detected" not in st.session_state:
|
| 676 |
+
st.session_state.language_detected = None
|
| 677 |
+
|
| 678 |
# Traitement de l'entrée audio de l'utilisateur
|
| 679 |
if len(st.session_state.audio) > 0:
|
| 680 |
tmp_file = tempfile.TemporaryFile()
|
|
|
|
| 691 |
|
| 692 |
tmp_file.close()
|
| 693 |
|
| 694 |
+
# Detecter la langue du texte transcrit (si la langue source n'est pas détectée)
|
| 695 |
+
if st.session_state.language_detected is None:
|
| 696 |
+
st.session_state.language_detected = detect_language(
|
| 697 |
+
input_text=st.session_state.transcription, temperature=0.01
|
| 698 |
+
)
|
| 699 |
+
st.markdown(
|
| 700 |
+
f"- {get_translation('langue_detectee')}".format(
|
| 701 |
+
f"{convert_iso6391_to_language_name(st.session_state.language_detected)}"
|
| 702 |
+
)
|
| 703 |
+
)
|
| 704 |
st.markdown(
|
| 705 |
+
f"🎤 {get_translation('transcription_audio')}".format(
|
| 706 |
+
f"{st.session_state.transcription}"
|
| 707 |
)
|
| 708 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 709 |
|
| 710 |
+
st.session_state.audio_list = []
|
| 711 |
+
for cursor_selected_lang in st.session_state.selected_languages:
|
| 712 |
+
st.session_state.target_language = cursor_selected_lang["iso-639-1"]
|
| 713 |
+
st.session_state.full_response = ""
|
| 714 |
|
| 715 |
+
# Initialisation du mode de traitement pour la langue cible actuelle
|
| 716 |
+
st.session_state.system_prompt, st.session_state.operation_prompt = init_process_mode(from_lang=
|
| 717 |
+
(
|
| 718 |
+
st.session_state.language_detected if "language_detected" in st.session_state.language_detected else convert_language_name_to_iso6391(
|
| 719 |
+
st.session_state.interface_language
|
| 720 |
+
)
|
| 721 |
+
),
|
| 722 |
+
to_lang=st.session_state.target_language
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 723 |
)
|
| 724 |
|
| 725 |
+
with st.chat_message("assistant", avatar="👻"):
|
| 726 |
+
message_placeholder = st.empty()
|
| 727 |
+
st.session_state.response_generator = process_message(
|
| 728 |
+
st.session_state.transcription,
|
| 729 |
+
st.session_state.operation_prompt,
|
| 730 |
+
st.session_state.enable_tts_for_input_from_audio_record,
|
| 731 |
+
st.session_state.system_prompt
|
| 732 |
+
)
|
| 733 |
|
| 734 |
+
for response_chunk in st.session_state.response_generator:
|
| 735 |
+
message_placeholder.markdown(response_chunk)
|
| 736 |
+
st.session_state.end_response = st.session_state.response_generator.close()
|
| 737 |
+
if st.session_state.full_response != "":
|
| 738 |
+
message_placeholder.markdown(st.session_state.full_response)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 739 |
|
| 740 |
+
if st.session_state.enable_tts_for_input_from_audio_record:
|
| 741 |
+
st.session_state.tts_audio, st.session_state.tts_duration = process_tts_message(st.session_state.full_response)
|
| 742 |
+
|
| 743 |
+
if st.session_state.tts_audio:
|
| 744 |
+
st.session_state.audio_list.append(
|
| 745 |
+
( st.session_state.tts_audio,
|
| 746 |
+
st.session_state.tts_duration )
|
| 747 |
+
)
|
| 748 |
+
else:
|
| 749 |
+
pass
|
| 750 |
+
|
| 751 |
+
if st.session_state.audio_list:
|
| 752 |
+
st.session_state.final_audio = concatenate_audio_files(st.session_state.audio_list)
|
| 753 |
+
|
| 754 |
+
with st.container(border=True):
|
| 755 |
+
|
| 756 |
+
# Générer un nom de fichier unique
|
| 757 |
+
st.session_state.timestamp = time.strftime("%Y%m%d-%H%M%S")
|
| 758 |
+
st.session_state.langues = "_".join([lang["iso-639-1"] for lang in st.session_state.selected_languages])
|
| 759 |
+
st.session_state.nom_fichier = f"reponse_audio_{st.session_state.langues}_{st.session_state.timestamp}.mp3"
|
| 760 |
+
|
| 761 |
+
st.audio(st.session_state.final_audio,
|
| 762 |
+
format="audio/mp3",
|
| 763 |
+
autoplay=st.session_state.autoplay_tts)
|
| 764 |
+
|
| 765 |
+
st.download_button(
|
| 766 |
+
label=f"📥 {get_translation('telecharger_audio')}",
|
| 767 |
+
data=st.session_state.final_audio,
|
| 768 |
+
file_name=st.session_state.nom_fichier,
|
| 769 |
+
mime="audio/mp3",
|
| 770 |
+
use_container_width=True,
|
| 771 |
+
type="primary",
|
| 772 |
+
key=f"download_button_{st.session_state.langues}_{st.session_state.timestamp}",
|
| 773 |
+
)
|
| 774 |
+
#
|
| 775 |
+
clear_inputs_garbages()
|
| 776 |
|
| 777 |
|
| 778 |
def clear_inputs_garbages(sessions_state_list: Optional[list] =
|