#!/usr/bin/env python3 """Populate ./models from local silero wheel + Hugging Face snapshots (ASR/TTS only; needs network for HF).""" from __future__ import annotations import argparse import importlib.resources as ir import sys from pathlib import Path _ROOT = Path(__file__).resolve().parent.parent _DEFAULT_ASR = _ROOT / "models" / "asr" / "SenseVoiceSmall" _DEFAULT_KOKORO = _ROOT / "models" / "tts" / "Kokoro-82M" _VAD_JIT = _ROOT / "models" / "vad" / "silero_vad.jit" def _copy_silero_vad() -> None: _VAD_JIT.parent.mkdir(parents=True, exist_ok=True) src = ir.files("silero_vad.data").joinpath("silero_vad.jit") _VAD_JIT.write_bytes(src.read_bytes()) print(f"VAD -> {_VAD_JIT}") def main() -> int: parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("--asr-repo", default="FunAudioLLM/SenseVoiceSmall") parser.add_argument("--kokoro-repo", default="hexgrad/Kokoro-82M") parser.add_argument("--asr-dir", type=Path, default=_DEFAULT_ASR) parser.add_argument("--kokoro-dir", type=Path, default=_DEFAULT_KOKORO) parser.add_argument("--asr-only", action="store_true") parser.add_argument("--kokoro-only", action="store_true") parser.add_argument("--skip-hf", action="store_true", help="Only copy Silero VAD from installed wheel") args = parser.parse_args() try: _copy_silero_vad() except Exception as exc: print(f"Silero VAD copy failed (pip install silero-vad): {exc}", file=sys.stderr) return 1 if args.skip_hf: print("Done (HF skipped).") return 0 try: from huggingface_hub import snapshot_download except ImportError: print("Install huggingface_hub for ASR/TTS downloads.", file=sys.stderr) return 1 if not args.kokoro_only: args.asr_dir.mkdir(parents=True, exist_ok=True) print(f"ASR -> {args.asr_dir}") snapshot_download(repo_id=args.asr_repo, local_dir=str(args.asr_dir)) if not args.asr_only: args.kokoro_dir.mkdir(parents=True, exist_ok=True) print(f"Kokoro -> {args.kokoro_dir}") snapshot_download(repo_id=args.kokoro_repo, local_dir=str(args.kokoro_dir)) print("Done.") return 0 if __name__ == "__main__": raise SystemExit(main())