65 lines
2.2 KiB
Python
65 lines
2.2 KiB
Python
#!/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())
|