#!/usr/bin/env python """Download XTTS model on-demand (runs once on first deployment).""" import os import sys from pathlib import Path def setup_models(): """Ensure all required models are available.""" print("[Setup] Checking model requirements...") # Ensure backend/models directory exists models_dir = Path(__file__).parent.parent / "models" models_dir.mkdir(parents=True, exist_ok=True) tts_model_dir = models_dir / "tts" / "tts_models--multilingual--multi-dataset--xtts_v2" if tts_model_dir.exists() and (tts_model_dir / "model.pth").exists(): print(f"[Setup] ✓ XTTS model already present: {tts_model_dir}") return True print("[Setup] Downloading XTTS-v2 model (1.8GB, first time only)...") print("[Setup] This may take 5-10 minutes on first deployment...") try: from TTS.api import TTS import io os.environ['TTS_HOME'] = str(models_dir) # Suppress interactive prompts old_stdin = sys.stdin sys.stdin = io.StringIO("y\n") try: tts = TTS( model_name="tts_models/multilingual/multi-dataset/xtts_v2", gpu=False ) print("[Setup] ✓ XTTS model downloaded successfully") # Verify model exists if (tts_model_dir / "model.pth").exists(): print(f"[Setup] ✓ Model verified at: {tts_model_dir}") return True else: print(f"[Setup] ✗ Model not found at expected location: {tts_model_dir}") return False finally: sys.stdin = old_stdin except Exception as e: print(f"[Setup] ✗ Failed to download XTTS model: {e}") print("[Setup] Hindi synthesis will not be available") return False if __name__ == "__main__": success = setup_models() sys.exit(0 if success else 1)