Spaces:
Sleeping
Sleeping
| import asyncio | |
| import sys | |
| from pathlib import Path | |
| PROJECT_ROOT = Path(__file__).resolve().parent.parent | |
| AUDIO_DIR = PROJECT_ROOT / "frontend" / "audio" | |
| STARTER_PHRASES = [ | |
| ("starter_1", "One moment please."), | |
| ("starter_2", "Sure, one moment."), | |
| ("starter_3", "Got it, hold on."), | |
| ("starter_4", "On it right now."), | |
| ("starter_5", "Alright, give me a sec."), | |
| ("starter_6", "Right, one moment."), | |
| ("starter_7", "Okay, hold on."), | |
| ("starter_8", "One second please."), | |
| ("starter_9", "Give me a moment."), | |
| ("starter_10", "Just a moment please."), | |
| ] | |
| PHRASES = STARTER_PHRASES | |
| VOICE = "en-GB-RyanNeural" | |
| RATE = "+15%" | |
| async def generate_one(name: str, text: str) -> bool: | |
| try: | |
| import edge_tts | |
| except ImportError: | |
| return False | |
| path = AUDIO_DIR / f"{name}.mp3" | |
| try: | |
| communicate = edge_tts.Communicate(text, VOICE, rate=RATE) | |
| await communicate.save(str(path)) | |
| print(f" [OK] {name}.mp3") | |
| return True | |
| except Exception as e: | |
| print(f" [FAIL] {name}.mp3: {e}") | |
| return False | |
| async def main(): | |
| try: | |
| import edge_tts | |
| except ImportError: | |
| print("edge-tts not installed. Run: pip install edge-tts") | |
| return 1 | |
| AUDIO_DIR.mkdir(parents=True, exist_ok=True) | |
| for f in AUDIO_DIR.glob("followup_*.mp3"): | |
| try: | |
| f.unlink() | |
| print(f" [REMOVED] {f.name}") | |
| except OSError: | |
| pass | |
| print(f"Generating thinking audio in {AUDIO_DIR}...") | |
| success = 0 | |
| for name, text in PHRASES: | |
| if await generate_one(name, text): | |
| success += 1 | |
| print(f"Done: {success}/{len(PHRASES)} files.") | |
| return 0 if success == len(PHRASES) else 1 | |
| if __name__ == "__main__": | |
| try: | |
| exit_code = asyncio.run(main()) | |
| except KeyboardInterrupt: | |
| exit_code = 130 | |
| sys.exit(exit_code) |