# File: src/audio_store.py # Purpose: Serve synthesised MP3 audio files over HTTP so Twilio can play them. # Files are stored in /tmp and served via a FastAPI static route. # For production, swap to S3 presigned URLs. import uuid from pathlib import Path AUDIO_DIR = Path("/tmp/ai_recruiter_audio") AUDIO_DIR.mkdir(parents=True, exist_ok=True) def save_tts_audio(audio_bytes: bytes) -> str: """ Save MP3 bytes to disk. Returns a unique filename (not full URL). The FastAPI app will mount AUDIO_DIR as a static route under /audio/. """ filename = f"{uuid.uuid4().hex}.mp3" (AUDIO_DIR / filename).write_bytes(audio_bytes) return filename def get_audio_path(filename: str) -> Path: return AUDIO_DIR / filename def public_audio_url(base_url: str, filename: str) -> str: """Build the public URL Twilio will fetch to play the audio.""" return f"{base_url}/audio/{filename}" def cleanup_audio(filename: str): """Delete audio file after use.""" path = AUDIO_DIR / filename path.unlink(missing_ok=True)