binaryMao commited on
Commit
2f3ab1a
·
verified ·
1 Parent(s): 76c0b41

Update app.py

Browse files

Correction de la fonction extract_audio

Files changed (1) hide show
  1. app.py +11 -8
app.py CHANGED
@@ -111,23 +111,26 @@ def load_model(name):
111
  # ---------------------------- # AUDIO EXTRACTION & CLEANING (ROBUSTE) # ----------------------------
112
  def extract_audio(video_path, out_wav):
113
  """
114
- Extrait l'audio en deux étapes pour stabiliser le fichier webcam/corrompu (Remuxage).
 
115
  """
116
  # Chemin du fichier intermédiaire stabilisé
117
  tmp_fd, stabilized_mp4 = tempfile.mkstemp(suffix="_stabilized.mp4")
118
  os.close(tmp_fd)
119
 
120
- # ÉTAPE 1: Stabilisation par Copie de Flux (Remuxage) du fichier d'entrée vers un conteneur MP4 stable.
121
- # Ceci réécrit les métadonnées de l'en-tête (duration) sans réencoder.
122
  remux_cmd = (
123
  f'ffmpeg -hide_banner -loglevel error -y '
124
  f'-analyzeduration 2147483647 -probesize 2147483647 -ignore_unknown '
125
- f'-i {shlex.quote(video_path)} -c copy {shlex.quote(stabilized_mp4)}'
 
 
126
  )
127
- print("RUN: Remuxage du fichier pour stabilisation...")
128
  run_cmd(remux_cmd)
129
 
130
- # ÉTAPE 2: Extraction de l'audio 16k WAV à partir du fichier stabilisé.
131
  extract_cmd = (
132
  f'ffmpeg -hide_banner -loglevel error -y '
133
  f'-i {shlex.quote(stabilized_mp4)} -vn -ac 1 -ar 16000 -f wav {shlex.quote(out_wav)}'
@@ -135,10 +138,10 @@ def extract_audio(video_path, out_wav):
135
  print("RUN: Extraction de l'audio depuis le fichier stabilisé...")
136
  run_cmd(extract_cmd)
137
 
138
- # Nettoyage du fichier intermédiaire stabilisé
139
  if os.path.exists(stabilized_mp4):
140
  os.remove(stabilized_mp4)
141
-
142
  def clean_audio(wav_path, target_sr=16000):
143
  """Load audio, ensure mono, resample to target_sr, normalize, write cleaned wav."""
144
  audio, sr = sf.read(wav_path)
 
111
  # ---------------------------- # AUDIO EXTRACTION & CLEANING (ROBUSTE) # ----------------------------
112
  def extract_audio(video_path, out_wav):
113
  """
114
+ Extrait l'audio en deux étapes pour stabiliser le fichier webcam/corrompu.
115
+ Correction : On réencode en libx264 car MP4 ne supporte pas le VP8 (Webcam).
116
  """
117
  # Chemin du fichier intermédiaire stabilisé
118
  tmp_fd, stabilized_mp4 = tempfile.mkstemp(suffix="_stabilized.mp4")
119
  os.close(tmp_fd)
120
 
121
+ # ÉTAPE 1: Stabilisation avec RÉENCODAGE (obligatoire pour la compatibilité WebM -> MP4)
122
+ # On utilise -c:v libx264 au lieu de -c copy
123
  remux_cmd = (
124
  f'ffmpeg -hide_banner -loglevel error -y '
125
  f'-analyzeduration 2147483647 -probesize 2147483647 -ignore_unknown '
126
+ f'-i {shlex.quote(video_path)} '
127
+ f'-c:v libx264 -preset ultrafast -crf 23 -c:a aac '
128
+ f'{shlex.quote(stabilized_mp4)}'
129
  )
130
+ print("RUN: Conversion et stabilisation du flux (Webcam compatible)...")
131
  run_cmd(remux_cmd)
132
 
133
+ # ÉTAPE 2: Extraction de l'audio 16k WAV
134
  extract_cmd = (
135
  f'ffmpeg -hide_banner -loglevel error -y '
136
  f'-i {shlex.quote(stabilized_mp4)} -vn -ac 1 -ar 16000 -f wav {shlex.quote(out_wav)}'
 
138
  print("RUN: Extraction de l'audio depuis le fichier stabilisé...")
139
  run_cmd(extract_cmd)
140
 
141
+ # Nettoyage
142
  if os.path.exists(stabilized_mp4):
143
  os.remove(stabilized_mp4)
144
+
145
  def clean_audio(wav_path, target_sr=16000):
146
  """Load audio, ensure mono, resample to target_sr, normalize, write cleaned wav."""
147
  audio, sr = sf.read(wav_path)