Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -71,7 +71,8 @@ def check_for_faces(video_path):
|
|
| 71 |
if not ret:
|
| 72 |
break
|
| 73 |
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
|
| 74 |
-
|
|
|
|
| 75 |
return True
|
| 76 |
return False
|
| 77 |
|
|
@@ -158,18 +159,19 @@ def process_video(radio, video, target_language, has_closeup_face):
|
|
| 158 |
target_language_code, voice = language_mapping[target_language]
|
| 159 |
translator = Translator()
|
| 160 |
translated_text = translator.translate(whisper_text, dest=target_language_code).text
|
| 161 |
-
print(translated_text)
|
| 162 |
|
| 163 |
asyncio.run(text_to_speech(translated_text, voice, f"{run_uuid}_output_synth.wav"))
|
| 164 |
|
| 165 |
if has_closeup_face or check_for_faces(video_path):
|
| 166 |
try:
|
| 167 |
subprocess.run(f"python Wav2Lip/inference.py --checkpoint_path 'Wav2Lip/checkpoints/wav2lip_gan.pth' --face '{video_path}' --audio '{run_uuid}_output_synth.wav' --pads 0 15 0 0 --resize_factor 1 --nosmooth --outfile '{run_uuid}_output_video.mp4'", shell=True, check=True)
|
| 168 |
-
except subprocess.CalledProcessError:
|
| 169 |
-
|
| 170 |
-
|
|
|
|
| 171 |
else:
|
| 172 |
-
subprocess.run(f"ffmpeg -i {video_path} -i {run_uuid}_output_synth.wav -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 {run_uuid}_output_video.mp4", shell=True)
|
| 173 |
|
| 174 |
output_video_path = f"{run_uuid}_output_video.mp4"
|
| 175 |
if not os.path.exists(output_video_path):
|
|
|
|
| 71 |
if not ret:
|
| 72 |
break
|
| 73 |
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
|
| 74 |
+
faces = face_cascade.detectMultiScale(gray, 1.1, 4)
|
| 75 |
+
if len(faces) > 0:
|
| 76 |
return True
|
| 77 |
return False
|
| 78 |
|
|
|
|
| 159 |
target_language_code, voice = language_mapping[target_language]
|
| 160 |
translator = Translator()
|
| 161 |
translated_text = translator.translate(whisper_text, dest=target_language_code).text
|
| 162 |
+
print(f"Translated text: {translated_text}")
|
| 163 |
|
| 164 |
asyncio.run(text_to_speech(translated_text, voice, f"{run_uuid}_output_synth.wav"))
|
| 165 |
|
| 166 |
if has_closeup_face or check_for_faces(video_path):
|
| 167 |
try:
|
| 168 |
subprocess.run(f"python Wav2Lip/inference.py --checkpoint_path 'Wav2Lip/checkpoints/wav2lip_gan.pth' --face '{video_path}' --audio '{run_uuid}_output_synth.wav' --pads 0 15 0 0 --resize_factor 1 --nosmooth --outfile '{run_uuid}_output_video.mp4'", shell=True, check=True)
|
| 169 |
+
except subprocess.CalledProcessError as e:
|
| 170 |
+
print(f"Wav2Lip error: {str(e)}")
|
| 171 |
+
gr.Warning("Wav2lip didn't detect a face or encountered an error. Falling back to simple audio replacement.")
|
| 172 |
+
subprocess.run(f"ffmpeg -i {video_path} -i {run_uuid}_output_synth.wav -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 {run_uuid}_output_video.mp4", shell=True, check=True)
|
| 173 |
else:
|
| 174 |
+
subprocess.run(f"ffmpeg -i {video_path} -i {run_uuid}_output_synth.wav -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 {run_uuid}_output_video.mp4", shell=True, check=True)
|
| 175 |
|
| 176 |
output_video_path = f"{run_uuid}_output_video.mp4"
|
| 177 |
if not os.path.exists(output_video_path):
|