rick commited on
Commit
32a007c
·
unverified ·
1 Parent(s): c4202cd

bug fixed now... not done...

Browse files
Files changed (1) hide show
  1. pages/main.py +45 -15
pages/main.py CHANGED
@@ -15,7 +15,6 @@ from typing import Optional
15
  from typing import Tuple
16
  from typing import Union
17
 
18
-
19
  # Third-party libraries
20
  import requests
21
  import streamlit as st
@@ -91,9 +90,12 @@ def read_file(file_name: str) -> str:
91
  except IOError as e:
92
  return f"{get_translation('erreur_lecture_fichier')} {str(e)}"
93
 
94
- def split_audio(audio_file: str, max_size_mb: int = 25) -> List[str]:
 
 
 
95
  """
96
- Divise un fichier audio en segments de 25 Mo ou moins.
97
 
98
  Args:
99
  audio_file (str): Chemin vers le fichier audio.
@@ -111,13 +113,36 @@ def split_audio(audio_file: str, max_size_mb: int = 25) -> List[str]:
111
  )
112
 
113
  segments = []
114
- for start in range(0, duration_ms, segment_duration_ms):
115
- end = min(start + segment_duration_ms, duration_ms)
116
- segment = audio[start:end]
117
- with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as temp_segment:
118
- segment.export(temp_segment.name, format="wav")
119
- segments.append(temp_segment.name)
120
- os.unlink(temp_segment)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  return segments
122
  except IOError as e:
123
  print(f"Erreur lors de la lecture ou de l'écriture du fichier audio : {e}")
@@ -125,6 +150,9 @@ def split_audio(audio_file: str, max_size_mb: int = 25) -> List[str]:
125
  except ValueError as e:
126
  print(f"Erreur de valeur lors du traitement de l'audio : {e}")
127
  return []
 
 
 
128
 
129
  # Fonction modifiée pour transcrire l'audio en texte
130
  def transcribe_audio(audio_file: IO, language: Optional[str] = None) -> str:
@@ -153,10 +181,10 @@ def transcribe_audio(audio_file: IO, language: Optional[str] = None) -> str:
153
  transcript = client.audio.transcriptions.create(
154
  model="whisper-1",
155
  file=audio_segment,
156
- language=language
 
157
  )
158
- full_transcript += f"{transcript.text} "
159
- os.unlink(segment) # Supprime le fichier temporaire
160
  status.update(label="Transcription terminée", state="complete")
161
  return full_transcript.strip()
162
  else:
@@ -165,16 +193,18 @@ def transcribe_audio(audio_file: IO, language: Optional[str] = None) -> str:
165
  transcript = client.audio.transcriptions.create(
166
  model="whisper-1",
167
  file=audio_file,
168
- language=language
 
169
  )
170
  status.update(label="Transcription terminée", state="complete")
171
- return transcript.text
172
  except IOError as e:
173
  st.error(f"Erreur d'entrée/sortie lors de la transcription : {e}")
174
  return ""
175
  except Exception as e:
176
  st.error(f"Erreur lors de la transcription : {e}")
177
  return ""
 
178
 
179
  # Fonction pour détecter la langue d'un texte donné
180
  def detect_language(input_text: str, temperature: float = 0.01) -> str:
 
15
  from typing import Tuple
16
  from typing import Union
17
 
 
18
  # Third-party libraries
19
  import requests
20
  import streamlit as st
 
90
  except IOError as e:
91
  return f"{get_translation('erreur_lecture_fichier')} {str(e)}"
92
 
93
+
94
+
95
+ def split_audio(audio_file: str,
96
+ max_size_mb: int = 25) -> List[str]:
97
  """
98
+ Divise un fichier audio en segments de taille maximale spécifiée et retourne les chemins des segments.
99
 
100
  Args:
101
  audio_file (str): Chemin vers le fichier audio.
 
113
  )
114
 
115
  segments = []
116
+ with tempfile.TemporaryDirectory() as temp_dir:
117
+ for start in range(0, duration_ms, segment_duration_ms):
118
+ end = min(start + segment_duration_ms, duration_ms)
119
+ segment = audio[start:end]
120
+ temp_segment_path = os.path.join(temp_dir, f"segment_{start}_{end}.wav")
121
+ segment.export(temp_segment_path, format="wav")
122
+ segments.append(temp_segment_path)
123
+
124
+
125
+ # Start of Selection
126
+ # Traiter les segments ici
127
+ language = st.session_state.get('target_language', 'en') # Définir la variable
128
+ transcriptions = []
129
+ for segment_path in segments:
130
+ try:
131
+ with open(segment_path, "rb") as audio_segment:
132
+ transcript = client.audio.transcriptions.create(
133
+ model="whisper-1",
134
+ file=audio_segment,
135
+ # Start of Selection
136
+ language=language,
137
+ response_format="text"
138
+ )
139
+ transcriptions.append(transcript.text)
140
+ except Exception as e:
141
+ print(f"Erreur lors de la transcription du segment {segment_path} : {e}")
142
+ finally:
143
+ os.remove(segment_path) # Supprime le segment après traitement
144
+ # Fin du traitement des segments et suppression automatique du répertoire temporaire
145
+
146
  return segments
147
  except IOError as e:
148
  print(f"Erreur lors de la lecture ou de l'écriture du fichier audio : {e}")
 
150
  except ValueError as e:
151
  print(f"Erreur de valeur lors du traitement de l'audio : {e}")
152
  return []
153
+ except Exception as e:
154
+ print(f"Une erreur inattendue s'est produite : {e}")
155
+ return []
156
 
157
  # Fonction modifiée pour transcrire l'audio en texte
158
  def transcribe_audio(audio_file: IO, language: Optional[str] = None) -> str:
 
181
  transcript = client.audio.transcriptions.create(
182
  model="whisper-1",
183
  file=audio_segment,
184
+ language=language,
185
+ response_format="text"
186
  )
187
+ full_transcript += f"{transcript} "
 
188
  status.update(label="Transcription terminée", state="complete")
189
  return full_transcript.strip()
190
  else:
 
193
  transcript = client.audio.transcriptions.create(
194
  model="whisper-1",
195
  file=audio_file,
196
+ language=language,
197
+ response_format="text"
198
  )
199
  status.update(label="Transcription terminée", state="complete")
200
+ return transcript
201
  except IOError as e:
202
  st.error(f"Erreur d'entrée/sortie lors de la transcription : {e}")
203
  return ""
204
  except Exception as e:
205
  st.error(f"Erreur lors de la transcription : {e}")
206
  return ""
207
+ ## def transcribe_audio(audio_file: IO, language: Optional[str] = None) -> str:
208
 
209
  # Fonction pour détecter la langue d'un texte donné
210
  def detect_language(input_text: str, temperature: float = 0.01) -> str: