from __future__ import annotations from pathlib import Path from faster_whisper.utils import download_model MODEL_SIZE = "small" MODEL_DIR = Path(__file__).resolve().parent.parent / "models" / f"faster-whisper-{MODEL_SIZE}" REQUIRED_FILES = ("config.json", "model.bin", "tokenizer.json", "vocabulary.txt") def main() -> int: missing = [name for name in REQUIRED_FILES if not (MODEL_DIR / name).is_file()] if not missing: print(f"Whisper model already exists: {MODEL_DIR}") return 0 MODEL_DIR.mkdir(parents=True, exist_ok=True) print(f"Downloading faster-whisper-{MODEL_SIZE} to {MODEL_DIR} ...") download_model(MODEL_SIZE, output_dir=str(MODEL_DIR)) missing = [name for name in REQUIRED_FILES if not (MODEL_DIR / name).is_file()] if missing: raise RuntimeError(f"Whisper model download is incomplete; missing: {', '.join(missing)}") print(f"Whisper model is ready: {MODEL_DIR}") return 0 if __name__ == "__main__": raise SystemExit(main())