Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -173,7 +173,9 @@ async def download_file_from_url(url: str, retries: int = 3, delay: float = 2.0)
|
|
| 173 |
temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".wav")
|
| 174 |
temp_file.write(response.content)
|
| 175 |
temp_file.close()
|
| 176 |
-
|
|
|
|
|
|
|
| 177 |
download_cache[url] = temp_file.name
|
| 178 |
return temp_file.name
|
| 179 |
|
|
@@ -263,19 +265,27 @@ async def generate_story_audios(story: StoryCreationDTO, base_output: str):
|
|
| 263 |
|
| 264 |
from pydub import AudioSegment
|
| 265 |
import os
|
|
|
|
| 266 |
|
| 267 |
def ensure_wav(file_path: str) -> str:
|
| 268 |
"""
|
| 269 |
-
Convert
|
| 270 |
-
Returns path to WAV file.
|
| 271 |
-
If already WAV, returns original path.
|
| 272 |
"""
|
| 273 |
ext = os.path.splitext(file_path)[1].lower()
|
| 274 |
-
|
| 275 |
-
|
| 276 |
-
|
| 277 |
-
|
| 278 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 279 |
|
| 280 |
from pydub import AudioSegment
|
| 281 |
import asyncio
|
|
|
|
| 173 |
temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".wav")
|
| 174 |
temp_file.write(response.content)
|
| 175 |
temp_file.close()
|
| 176 |
+
|
| 177 |
+
print(f"{url} is downloaded and saved in cache")
|
| 178 |
+
|
| 179 |
download_cache[url] = temp_file.name
|
| 180 |
return temp_file.name
|
| 181 |
|
|
|
|
| 265 |
|
| 266 |
from pydub import AudioSegment
|
| 267 |
import os
|
| 268 |
+
import subprocess
|
| 269 |
|
| 270 |
def ensure_wav(file_path: str) -> str:
|
| 271 |
"""
|
| 272 |
+
Convert a single audio file to WAV using ffmpeg.
|
| 273 |
+
Returns the path to the WAV file.
|
| 274 |
+
If the file is already WAV, returns the original path.
|
| 275 |
"""
|
| 276 |
ext = os.path.splitext(file_path)[1].lower()
|
| 277 |
+
|
| 278 |
+
if ext == ".wav":
|
| 279 |
+
return file_path # Already WAV
|
| 280 |
+
|
| 281 |
+
# Output path: same folder, same name, .wav extension
|
| 282 |
+
wav_path = os.path.splitext(file_path)[0] + ".wav"
|
| 283 |
+
|
| 284 |
+
# Run ffmpeg conversion
|
| 285 |
+
subprocess.run(["ffmpeg", "-y", "-i", file_path, wav_path], check=True)
|
| 286 |
+
|
| 287 |
+
print(f"Converted: {file_path} → {wav_path}")
|
| 288 |
+
return wav_path
|
| 289 |
|
| 290 |
from pydub import AudioSegment
|
| 291 |
import asyncio
|