Spaces:
Paused
Paused
rick
commited on
update demorrha
Browse files
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 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 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,
|
| 156 |
global SYSTEM_PROMPT
|
| 157 |
global OP_PROMPT
|
| 158 |
-
SYSTEM_PROMPT
|
| 159 |
-
|
| 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 "
|
| 201 |
-
st.session_state.
|
|
|
|
|
|
|
|
|
|
| 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,
|
|
|
|
| 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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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
|
| 266 |
-
st.subheader("Sélection
|
| 267 |
|
|
|
|
| 268 |
# Sélection multiple des langues de destination
|
| 269 |
-
|
| 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()
|