ffasr / backends /registry.py
whojavumusic's picture
beautification, custom scripts loader, artefacts json to csv
c0dd455
Raw
History Blame Contribute Delete
1.71 kB
"""
Model family ids and lazy mapping to backend builders (heavy imports on first eval only).
"""
from __future__ import annotations
from collections.abc import Callable
from family_registry import (
DROPDOWN_CHOICES,
FAMILY_IDS,
FAMILY_META,
default_family_id,
normalize_family_id,
resolve_label,
)
__all__ = [
"DROPDOWN_CHOICES",
"FAMILY_IDS",
"FAMILY_META",
"build_transcriber",
"default_family_id",
"normalize_family_id",
"resolve_label",
]
def build_transcriber(
family_id: str,
model_id: str,
device_str: str,
device_int: int,
) -> tuple[Callable[..., str], Callable[[], None]]:
from family_registry import _FAMILY_ALIASES
from . import (
auto,
granite_speech,
speechbrain_asr,
transformers_ctc,
transformers_pipeline,
universal,
)
from .family_resolve import resolve_auto_family
fid = resolve_auto_family(model_id, _FAMILY_ALIASES.get(family_id, family_id))
if fid == "auto":
return auto.build_transcriber(model_id, device_str, device_int)
if fid == "transformers_pipeline":
return transformers_pipeline.build_transcriber(model_id, device_int)
if fid == "universal":
return universal.build_transcriber(model_id, device_str)
if fid == "granite_speech":
return granite_speech.build_transcriber(model_id, device_str)
if fid == "transformers_ctc":
return transformers_ctc.build_transcriber(model_id, device_str)
if fid == "speechbrain":
return speechbrain_asr.build_transcriber(model_id, device_str)
raise ValueError(f"Unknown model family: {family_id!r}. Choose one of {FAMILY_IDS}.")