rick commited on
Commit
1014150
·
unverified ·
1 Parent(s): 3a7fabd

update UI/UX...

Browse files
Files changed (1) hide show
  1. app.py +55 -40
app.py CHANGED
@@ -144,32 +144,38 @@ def transcribe_audio(audio_file: IO, language: Optional[str] = None) -> str:
144
  file_size_mb = os.path.getsize(audio_file.name) / (1024 * 1024)
145
 
146
  try:
147
- if file_size_mb > max_size_mb:
148
- segments = split_audio(audio_file.name, max_size_mb)
149
- full_transcript = ""
150
- for segment in segments:
151
- with open(segment, "rb") as audio_segment:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
152
  transcript = client.audio.transcriptions.create(
153
  model="whisper-1",
154
- file=audio_segment,
155
  language=language
156
  )
157
- full_transcript += f"{transcript.text} "
158
- os.unlink(segment) # Supprime le fichier temporaire
159
- return full_transcript.strip()
160
- else:
161
- with open(audio_file.name, "rb") as audio_file:
162
- transcript = client.audio.transcriptions.create(
163
- model="whisper-1",
164
- file=audio_file,
165
- language=language
166
- )
167
- return transcript.text
168
  except IOError as e:
169
- print(f"Erreur d'entrée/sortie lors de la transcription : {e}")
170
  return ""
171
  except client.APIError as e:
172
- print(f"Erreur API lors de la transcription : {e}")
173
  return ""
174
 
175
  # Fonction pour détecter la langue d'un texte donné
@@ -343,32 +349,41 @@ def process_message(
343
  with st.chat_message("assistant", avatar="👻"):
344
  message_placeholder = st.empty()
345
  full_response = ""
346
- try:
347
- for response in client.chat.completions.create(
348
- model="gpt-4o-mini",
349
- messages=st.session_state.messages,
350
- stream=True,
351
- temperature=0.1):
352
- full_response += (response.choices[0].delta.content or "")
353
- message_placeholder.markdown(full_response + "▌")
354
- # Utiliser regex pour supprimer les trois premiers et derniers guillemets doubles
355
- full_response = re.sub(r'^"{3}|"{3}$', '', full_response.strip())
356
- message_placeholder.markdown(full_response)
357
- except Exception as e:
358
- st.error(f"Une erreur s'est produite lors de la génération de la réponse : {e}")
359
- return None, None
 
 
 
 
 
360
 
361
  st.session_state.messages.append(
362
  {"role": "assistant", "content": full_response}
363
  )
364
 
365
  if tts_enabled:
366
- try:
367
- tts_audio, tts_duration = text_to_speech(full_response)
368
- return tts_audio, tts_duration
369
- except Exception as e:
370
- st.error(f"Une erreur s'est produite lors de la conversion texte-parole : {e}")
371
- return None, None
 
 
 
 
372
  return None, None
373
 
374
  class GlobalSystemPrompts:
@@ -608,7 +623,7 @@ def main():
608
  )
609
  st.write(get_translation("langue_detectee").format(st.session_state.language_detected))
610
 
611
- st.write(get_translation("transcription").format(transcription))
612
 
613
  audio_list = []
614
  for cursor_selected_lang in st.session_state.selected_languages:
 
144
  file_size_mb = os.path.getsize(audio_file.name) / (1024 * 1024)
145
 
146
  try:
147
+ with st.status("Transcription de l'audio en cours...") as status:
148
+ if file_size_mb > max_size_mb:
149
+ status.update(label="Découpage de l'audio en segments...")
150
+ segments = split_audio(audio_file.name, max_size_mb)
151
+ full_transcript = ""
152
+ for i, segment in enumerate(segments):
153
+ status.update(label=f"Transcription du segment {i+1}/{len(segments)}...")
154
+ with open(segment, "rb") as audio_segment:
155
+ transcript = client.audio.transcriptions.create(
156
+ model="whisper-1",
157
+ file=audio_segment,
158
+ language=language
159
+ )
160
+ full_transcript += f"{transcript.text} "
161
+ os.unlink(segment) # Supprime le fichier temporaire
162
+ status.update(label="Transcription terminée", state="complete")
163
+ return full_transcript.strip()
164
+ else:
165
+ status.update(label="Transcription de l'audio...")
166
+ with open(audio_file.name, "rb") as audio_file:
167
  transcript = client.audio.transcriptions.create(
168
  model="whisper-1",
169
+ file=audio_file,
170
  language=language
171
  )
172
+ status.update(label="Transcription terminée", state="complete")
173
+ return transcript.text
 
 
 
 
 
 
 
 
 
174
  except IOError as e:
175
+ st.error(f"Erreur d'entrée/sortie lors de la transcription : {e}")
176
  return ""
177
  except client.APIError as e:
178
+ st.error(f"Erreur API lors de la transcription : {e}")
179
  return ""
180
 
181
  # Fonction pour détecter la langue d'un texte donné
 
349
  with st.chat_message("assistant", avatar="👻"):
350
  message_placeholder = st.empty()
351
  full_response = ""
352
+
353
+ with st.status("Traitement en cours...", expanded=True) as status:
354
+ status.update(label="Génération de la réponse", state="running", expanded=True)
355
+ try:
356
+ for response in client.chat.completions.create(
357
+ model="gpt-4o-mini",
358
+ messages=st.session_state.messages,
359
+ stream=True,
360
+ temperature=0.1):
361
+ full_response += (response.choices[0].delta.content or "")
362
+ message_placeholder.markdown(full_response + "▌")
363
+ # Utiliser regex pour supprimer les trois premiers et derniers guillemets doubles
364
+ full_response = re.sub(r'^"{3}|"{3}$', '', full_response.strip())
365
+ message_placeholder.markdown(full_response)
366
+ status.update(label="Réponse générée avec succès", state="complete")
367
+ except Exception as e:
368
+ st.error(f"Une erreur s'est produite lors de la génération de la réponse : {e}")
369
+ status.update(label="Erreur lors de la génération de la réponse", state="error")
370
+ return None, None
371
 
372
  st.session_state.messages.append(
373
  {"role": "assistant", "content": full_response}
374
  )
375
 
376
  if tts_enabled:
377
+ with st.status("Conversion texte-parole en cours...", expanded=True) as status:
378
+ status.update(label="Conversion texte-parole", state="running", expanded=True)
379
+ try:
380
+ tts_audio, tts_duration = text_to_speech(full_response)
381
+ status.update(label="Conversion texte-parole réussie", state="complete")
382
+ return tts_audio, tts_duration
383
+ except Exception as e:
384
+ st.error(f"Une erreur s'est produite lors de la conversion texte-parole : {e}")
385
+ status.update(label="Erreur lors de la conversion texte-parole", state="error")
386
+ return None, None
387
  return None, None
388
 
389
  class GlobalSystemPrompts:
 
623
  )
624
  st.write(get_translation("langue_detectee").format(st.session_state.language_detected))
625
 
626
+ #st.write(get_translation("transcription").format(transcription))
627
 
628
  audio_list = []
629
  for cursor_selected_lang in st.session_state.selected_languages: