31 lines
1013 B
Python
31 lines
1013 B
Python
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())
|