Обновление OpenVINO до 2026.3, large-v3-turbo и ONNX по умолчанию #6
@@ -55,6 +55,9 @@ _PARAKEET_V3_LANGUAGES = frozenset(
|
||||
_WHISPER_MODEL_NAMES = frozenset(
|
||||
{"tiny", "base", "small", "medium", "large-v3", "large-v3-turbo"}
|
||||
)
|
||||
# faster-whisper не знает turbo, поэтому для cpu и cuda подсказываем medium.
|
||||
# Источник правды — MODEL_REPOS в backends/faster_whisper.py и backends/openvino.py
|
||||
_OPENVINO_ONLY_WHISPER_MODELS = frozenset({"large-v3-turbo"})
|
||||
|
||||
MODEL_CATALOG: dict[str, OnnxModelSpec] = {
|
||||
"gigaam-v3": OnnxModelSpec(
|
||||
@@ -253,11 +256,13 @@ class OnnxAsrBackend:
|
||||
if model_name in MODEL_ALIASES:
|
||||
return MODEL_ALIASES[model_name]
|
||||
if model_name in _WHISPER_MODEL_NAMES:
|
||||
fallback = _whisper_fallback_model(model_name)
|
||||
raise ValueError(
|
||||
f"Модель '{model_name}' относится к Whisper и не поддерживается "
|
||||
"ONNX-бэкендом. Без CUDA --device auto выбирает ONNX; "
|
||||
f"укажите --device openvino-cpu --model {model_name} "
|
||||
"или --device cuda --model medium."
|
||||
f"укажите --device openvino-cpu --model {model_name} на x86, "
|
||||
f"--device cpu --model {fallback} на любой платформе "
|
||||
f"или --device cuda --model {fallback} при NVIDIA GPU."
|
||||
)
|
||||
if "/" in model_name or model_name.count("-") >= 2:
|
||||
# Looks like a raw onnx-asr name — allow passthrough
|
||||
@@ -280,9 +285,10 @@ class OnnxAsrBackend:
|
||||
warnings.warn(
|
||||
f"Язык '{language}' не поддерживается моделью '{self._model_name}' "
|
||||
f"(поддерживаются: {supported}). Результат может быть некорректным. "
|
||||
"Для других языков используйте "
|
||||
"--device openvino-cpu --model medium "
|
||||
"или --device cuda --model medium.",
|
||||
"Для других языков возьмите Whisper: "
|
||||
"--device openvino-cpu --model medium на x86, "
|
||||
"--device cpu --model medium на любой платформе "
|
||||
"или --device cuda --model medium при NVIDIA GPU.",
|
||||
UserWarning,
|
||||
stacklevel=2,
|
||||
)
|
||||
@@ -304,6 +310,13 @@ def _preferred_compute_type(quantizations: frozenset[str | None]) -> str:
|
||||
raise ValueError("Для ONNX-модели не указаны доступные квантизации")
|
||||
|
||||
|
||||
def _whisper_fallback_model(model_name: str) -> str:
|
||||
"""Модель для подсказки про faster-whisper: turbo там недоступен."""
|
||||
if model_name in _OPENVINO_ONLY_WHISPER_MODELS:
|
||||
return "medium"
|
||||
return model_name
|
||||
|
||||
|
||||
def _model_language(spec: OnnxModelSpec | None) -> str | None:
|
||||
if spec is not None and len(spec.supported_languages) == 1:
|
||||
return next(iter(spec.supported_languages))
|
||||
|
||||
@@ -257,6 +257,7 @@ class TestTranscribe:
|
||||
UserWarning,
|
||||
match=(
|
||||
r"Язык 'en'.*--device openvino-cpu --model medium.*"
|
||||
r"--device cpu --model medium.*"
|
||||
r"--device cuda --model medium"
|
||||
),
|
||||
):
|
||||
@@ -460,6 +461,13 @@ class TestModelAliases:
|
||||
):
|
||||
backend._resolve_model("medium")
|
||||
|
||||
def test_whisper_error_offers_platform_independent_backend(self):
|
||||
"""На macOS и ARM нет ни OpenVINO, ни CUDA — нужен путь через cpu."""
|
||||
backend = OnnxAsrBackend()
|
||||
|
||||
with pytest.raises(ValueError, match=r"--device cpu --model medium"):
|
||||
backend._resolve_model("medium")
|
||||
|
||||
def test_turbo_whisper_error_suggests_models_supported_by_backends(self):
|
||||
backend = OnnxAsrBackend()
|
||||
|
||||
@@ -469,4 +477,6 @@ class TestModelAliases:
|
||||
message = str(exc_info.value)
|
||||
assert "--device openvino-cpu --model large-v3-turbo" in message
|
||||
assert "--device cuda --model medium" in message
|
||||
assert "--device cpu --model medium" in message
|
||||
assert "--device cuda --model large-v3-turbo" not in message
|
||||
assert "--device cpu --model large-v3-turbo" not in message
|
||||
|
||||
Reference in New Issue
Block a user