From 79dbd170ce754d18b1bbe00ab4a87870f277f65f Mon Sep 17 00:00:00 2001 From: Dmitry Dementev Date: Sat, 25 Apr 2026 21:25:28 +0300 Subject: [PATCH] =?UTF-8?q?feat(onnx-asr):=20=D0=B7=D0=B0=D1=80=D0=B5?= =?UTF-8?q?=D0=B3=D0=B8=D1=81=D1=82=D1=80=D0=B8=D1=80=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D1=82=D1=8C=20=D0=B1=D1=8D=D0=BA=D0=B5=D0=BD=D0=B4=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20--device=20onnx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Зачем: - Бэкенд должен быть доступен через CLI по --device onnx. - Что: - в backends/__init__.py добавлена ветка device == "onnx" с ленивым импортом OnnxAsrBackend. - при отсутствии onnx-asr выдаётся понятная ошибка. - добавлен тест TestBackendRegistration. - Проверка: - uv run pytest -v (172 passed) --- src/local_transcriber/backends/__init__.py | 9 +++++++++ tests/test_onnx_asr.py | 7 +++++++ 2 files changed, 16 insertions(+) diff --git a/src/local_transcriber/backends/__init__.py b/src/local_transcriber/backends/__init__.py index 7a11cdb..99fcfa3 100644 --- a/src/local_transcriber/backends/__init__.py +++ b/src/local_transcriber/backends/__init__.py @@ -25,6 +25,15 @@ def get_backend(device: str, *, compute_type_explicit: bool = True) -> Backend: ov_device=device, compute_type_explicit=compute_type_explicit ) + if device == "onnx": + try: + from .onnx_asr import OnnxAsrBackend + except ImportError: + raise ValueError( + "onnx-asr бэкенд недоступен. Установите: pip install onnx-asr[cpu,hub]" + ) from None + return OnnxAsrBackend() + # cuda, cpu и всё остальное → faster-whisper from .faster_whisper import FasterWhisperBackend diff --git a/tests/test_onnx_asr.py b/tests/test_onnx_asr.py index f495519..31e31f3 100644 --- a/tests/test_onnx_asr.py +++ b/tests/test_onnx_asr.py @@ -214,6 +214,13 @@ class TestTranscribe: assert result.duration == 1.0 +class TestBackendRegistration: + def test_get_backend_returns_onnx_backend(self): + from local_transcriber.backends import get_backend + backend = get_backend("onnx") + assert isinstance(backend, OnnxAsrBackend) + + class TestModelAliases: def test_gigaam_v3_resolves(self): backend = OnnxAsrBackend()