| import subprocess, uuid, os |
| from logging_config import logger |
|
|
|
|
| def clip(source_path: str, start: float, end: float, out_dir: str = "/tmp") -> str: |
| """Extract an audio clip from source_path between start and end seconds. |
| |
| Returns path to generated mp3 file inside out_dir. |
| """ |
| out = os.path.join(out_dir, f"{uuid.uuid4()}.mp3") |
| cmd = [ |
| "ffmpeg", |
| "-hide_banner", |
| "-loglevel", |
| "error", |
| "-ss", |
| str(start), |
| "-to", |
| str(end), |
| "-i", |
| source_path, |
| "-vn", |
| "-acodec", |
| "libmp3lame", |
| "-ar", |
| "44100", |
| "-b:a", |
| "96k", |
| "-y", |
| out, |
| ] |
| logger.info(" ".join(cmd)) |
| subprocess.run(cmd, check=True) |
| return out |
|
|