Download src/nida/bench/workers/common.py from Bilal7Dev/nida-tts: direct link, hf CLI and curl.
- Browser
- Download file 2.64 kB
-
https://huggingface.co/Bilal7Dev/nida-tts/resolve/main/src/nida/bench/workers/common.py
- Command line
-
hf download hf://Bilal7Dev/nida-tts/src/nida/bench/workers/common.py
-
curl -L -o common.py https://huggingface.co/Bilal7Dev/nida-tts/resolve/main/src/nida/bench/workers/common.py
2.64 kB
| """Small helpers shared by adapters (stdlib only).""" | |
| from __future__ import annotations | |
| import importlib | |
| from collections.abc import Mapping, Sequence | |
| from typing import Any | |
| from nida.bench.protocol import WorkRequest | |
| __all__ = ["HF_WEIGHT_PATTERNS", "LANGUAGES", "language_for", "load_mono_16k", "snapshot"] | |
| #: Files needed to load a transformers checkpoint in safetensors form. Excludes duplicate | |
| #: formats (flax, pytorch .bin, fp32 shards) that some repos also ship. | |
| HF_WEIGHT_PATTERNS: tuple[str, ...] = ( | |
| "*.json", | |
| "*.txt", | |
| "*.model", | |
| "*.tiktoken", | |
| "model.safetensors", | |
| "model-*.safetensors", | |
| ) | |
| #: ISO 639-1 code → spelling each model family expects. | |
| LANGUAGES: Mapping[str, Mapping[str, str]] = { | |
| "tr": {"whisper": "turkish", "qwen": "Turkish", "omni": "tur_Latn"}, | |
| "en": {"whisper": "english", "qwen": "English", "omni": "eng_Latn"}, | |
| } | |
| def language_for(request: WorkRequest, family: str) -> str: | |
| """Model-specific language name for ``request.params["language"]`` (required). | |
| Raises: | |
| ValueError: if the language parameter is missing or unsupported. | |
| """ | |
| code = request.params.get("language") | |
| if code is None: | |
| raise ValueError(f"{request.clip_id}: missing params.language") | |
| try: | |
| return LANGUAGES[code][family] | |
| except KeyError as err: | |
| raise ValueError(f"{request.clip_id}: unsupported language {code!r} for {family}") from err | |
| def snapshot( | |
| model_id: str, revision: str, allow_patterns: Sequence[str] = HF_WEIGHT_PATTERNS | |
| ) -> str: | |
| """Download (or reuse) a pinned Hugging Face snapshot and return its local path. | |
| An empty ``revision`` is refused: benchmark runs must be reproducible. Only files | |
| matching ``allow_patterns`` are fetched. | |
| """ | |
| if not revision: | |
| raise ValueError(f"{model_id}: a pinned revision is required") | |
| hub = importlib.import_module("huggingface_hub") | |
| path: str = hub.snapshot_download( | |
| repo_id=model_id, revision=revision, allow_patterns=list(allow_patterns) | |
| ) | |
| return path | |
| # Any: numpy is only present inside worker environments and has no stub here. | |
| def load_mono_16k(path: str) -> Any: | |
| """Read a 16 kHz mono file as float32 (the orchestrator guarantees this format). | |
| Raises: | |
| ValueError: if the file is not 16 kHz mono. | |
| """ | |
| soundfile = importlib.import_module("soundfile") | |
| audio, sample_rate_hz = soundfile.read(path, dtype="float32", always_2d=False) | |
| if sample_rate_hz != 16000 or audio.ndim != 1: | |
| raise ValueError(f"{path}: expected 16 kHz mono, got {sample_rate_hz} Hz, {audio.ndim}-D") | |
| return audio | |