fix(onnx-asr): исправлены баги интеграции после smoke-теста
- Зачем: - при smoke-тесте выявлены расхождения между onnx-asr API и мок-тестами. - Что: - убран deprecated cpu_preprocessing из load_model. - sample_rate передан как keyword-аргумент в recognize(). - исправлены имена полей SegmentResult: start_ts→start, end_ts→end. - добавлен device "onnx" в DEVICE_DEFAULTS и _VALID_DEVICES. - Проверка: - uv run pytest -q (172 passed). - uv run transcribe file.mp4 --device onnx --model gigaam-v3.
This commit is contained in:
@@ -59,7 +59,6 @@ class OnnxAsrBackend:
|
|||||||
model = onnx_asr.load_model(
|
model = onnx_asr.load_model(
|
||||||
model=model_path,
|
model=model_path,
|
||||||
quantization=ct,
|
quantization=ct,
|
||||||
cpu_preprocessing=True,
|
|
||||||
)
|
)
|
||||||
vad = onnx_asr.load_vad("silero")
|
vad = onnx_asr.load_vad("silero")
|
||||||
self._vad = vad
|
self._vad = vad
|
||||||
@@ -89,10 +88,10 @@ class OnnxAsrBackend:
|
|||||||
segments: list[Segment] = []
|
segments: list[Segment] = []
|
||||||
detected_language = language or "unknown"
|
detected_language = language or "unknown"
|
||||||
|
|
||||||
for vad_seg in model.recognize(audio_array, 16000, language=language):
|
for vad_seg in model.recognize(audio_array, sample_rate=16000, language=language):
|
||||||
seg = Segment(
|
seg = Segment(
|
||||||
start=max(0.0, vad_seg.start_ts),
|
start=max(0.0, vad_seg.start),
|
||||||
end=max(0.0, vad_seg.end_ts),
|
end=max(0.0, vad_seg.end),
|
||||||
text=vad_seg.text,
|
text=vad_seg.text,
|
||||||
)
|
)
|
||||||
if on_segment is not None:
|
if on_segment is not None:
|
||||||
|
|||||||
@@ -22,11 +22,12 @@ DEVICE_DEFAULTS: dict[str, dict[str, str]] = {
|
|||||||
"openvino": {"model": "medium", "compute_type": "int8"},
|
"openvino": {"model": "medium", "compute_type": "int8"},
|
||||||
"openvino-gpu": {"model": "medium", "compute_type": "int8"},
|
"openvino-gpu": {"model": "medium", "compute_type": "int8"},
|
||||||
"openvino-cpu": {"model": "medium", "compute_type": "int8"},
|
"openvino-cpu": {"model": "medium", "compute_type": "int8"},
|
||||||
|
"onnx": {"model": "gigaam-v3", "compute_type": "int8"},
|
||||||
}
|
}
|
||||||
|
|
||||||
# Одно место правды для допустимых ключей конфига
|
# Одно место правды для допустимых ключей конфига
|
||||||
_VALID_KEYS = set(HARDCODED_DEFAULTS)
|
_VALID_KEYS = set(HARDCODED_DEFAULTS)
|
||||||
_VALID_DEVICES = {"auto", "cpu", "cuda", "openvino", "openvino-gpu", "openvino-cpu"}
|
_VALID_DEVICES = {"auto", "cpu", "cuda", "openvino", "openvino-gpu", "openvino-cpu", "onnx"}
|
||||||
|
|
||||||
|
|
||||||
def find_config_file() -> Path | None:
|
def find_config_file() -> Path | None:
|
||||||
|
|||||||
@@ -10,9 +10,9 @@ from local_transcriber.types import Segment, TranscribeResult
|
|||||||
class FakeVadSegment:
|
class FakeVadSegment:
|
||||||
"""Mimics onnx-asr SegmentResult."""
|
"""Mimics onnx-asr SegmentResult."""
|
||||||
|
|
||||||
def __init__(self, start_ts, end_ts, text):
|
def __init__(self, start, end, text):
|
||||||
self.start_ts = start_ts
|
self.start = start
|
||||||
self.end_ts = end_ts
|
self.end = end
|
||||||
self.text = text
|
self.text = text
|
||||||
|
|
||||||
|
|
||||||
@@ -40,10 +40,9 @@ class TestCreateModel:
|
|||||||
calls = []
|
calls = []
|
||||||
|
|
||||||
def fake_load_model(model=None, path=None, quantization=None,
|
def fake_load_model(model=None, path=None, quantization=None,
|
||||||
cpu_preprocessing=None, **kwargs):
|
**kwargs):
|
||||||
calls.append({
|
calls.append({
|
||||||
"model": model, "path": path, "quantization": quantization,
|
"model": model, "path": path, "quantization": quantization,
|
||||||
"cpu_preprocessing": cpu_preprocessing,
|
|
||||||
})
|
})
|
||||||
return FakeAsrAdapter()
|
return FakeAsrAdapter()
|
||||||
|
|
||||||
@@ -59,7 +58,6 @@ class TestCreateModel:
|
|||||||
|
|
||||||
assert len(calls) == 1
|
assert len(calls) == 1
|
||||||
assert calls[0]["quantization"] == "int8"
|
assert calls[0]["quantization"] == "int8"
|
||||||
assert calls[0]["cpu_preprocessing"] is True
|
|
||||||
assert model is not None
|
assert model is not None
|
||||||
|
|
||||||
def test_loads_silero_vad(self, monkeypatch):
|
def test_loads_silero_vad(self, monkeypatch):
|
||||||
|
|||||||
Reference in New Issue
Block a user