Update app.py
Browse files
app.py
CHANGED
@@ -32,7 +32,13 @@ async def procesar_audio(texto, voz, duracion_total):
|
|
32 |
communicate = edge_tts.Communicate(texto, voz)
|
33 |
with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as tmp_tts:
|
34 |
await communicate.save(tmp_tts.name)
|
35 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
|
37 |
# Preparar m煤sica de fondo en loop
|
38 |
bg_music = AudioSegment.from_mp3(MUSIC_BG) - 10 # 10% volumen
|
@@ -44,9 +50,14 @@ async def procesar_audio(texto, voz, duracion_total):
|
|
44 |
intro_duration = VideoFileClip(INTRO_VIDEO).duration * 1000 # Duraci贸n en ms
|
45 |
audio_final = bg_music_final.overlay(tts_audio, position=intro_duration)
|
46 |
|
47 |
-
|
48 |
-
|
49 |
-
|
|
|
|
|
|
|
|
|
|
|
50 |
except Exception as e:
|
51 |
logging.error(f"Error procesando audio: {e}")
|
52 |
raise
|
@@ -131,9 +142,9 @@ async def procesar_video(
|
|
131 |
raise
|
132 |
finally:
|
133 |
# Eliminar archivos temporales
|
134 |
-
for file in temp_files
|
135 |
try:
|
136 |
-
if
|
137 |
os.remove(file)
|
138 |
except Exception as e:
|
139 |
logging.warning(f"Error eliminando {file}: {e}")
|
|
|
32 |
communicate = edge_tts.Communicate(texto, voz)
|
33 |
with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as tmp_tts:
|
34 |
await communicate.save(tmp_tts.name)
|
35 |
+
tts_path = tmp_tts.name
|
36 |
+
|
37 |
+
# Verificar que el archivo TTS es v谩lido
|
38 |
+
if not os.path.exists(tts_path) or os.path.getsize(tts_path) == 0:
|
39 |
+
raise ValueError("El archivo TTS generado est谩 vac铆o o corrupto.")
|
40 |
+
|
41 |
+
tts_audio = AudioSegment.from_mp3(tts_path)
|
42 |
|
43 |
# Preparar m煤sica de fondo en loop
|
44 |
bg_music = AudioSegment.from_mp3(MUSIC_BG) - 10 # 10% volumen
|
|
|
50 |
intro_duration = VideoFileClip(INTRO_VIDEO).duration * 1000 # Duraci贸n en ms
|
51 |
audio_final = bg_music_final.overlay(tts_audio, position=intro_duration)
|
52 |
|
53 |
+
# Guardar como WAV primero (para evitar problemas de formato)
|
54 |
+
with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as tmp_wav:
|
55 |
+
audio_final.export(tmp_wav.name, format="wav")
|
56 |
+
|
57 |
+
# Convertir a MP3 (si es necesario)
|
58 |
+
with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as tmp_mp3:
|
59 |
+
AudioSegment.from_wav(tmp_wav.name).export(tmp_mp3.name, format="mp3")
|
60 |
+
return tmp_mp3.name
|
61 |
except Exception as e:
|
62 |
logging.error(f"Error procesando audio: {e}")
|
63 |
raise
|
|
|
142 |
raise
|
143 |
finally:
|
144 |
# Eliminar archivos temporales
|
145 |
+
for file in temp_files:
|
146 |
try:
|
147 |
+
if os.path.exists(file):
|
148 |
os.remove(file)
|
149 |
except Exception as e:
|
150 |
logging.warning(f"Error eliminando {file}: {e}")
|