feat(onnx): добавлен каталог моделей GigaAM и Python 3.13 #3
+1
-1
@@ -1 +1 @@
|
||||
3.13
|
||||
3.13.13
|
||||
|
||||
@@ -280,11 +280,14 @@ language = "en"
|
||||
| Модель | Размер (int8) | RTFx CPU | Языки | Пунктуация |
|
||||
|--------|--------------|----------|-------|-----------|
|
||||
| `gigaam-v3` | ~300 MB | 17-29× | ru | ❌ |
|
||||
| `gigaam-multilingual-ctc` | ~300 MB | не измерено | ru, en, kk, ky, uz | ❌ |
|
||||
| `gigaam-v3-e2e-ctc` | ~300 MB | не измерено | ru | ✅ |
|
||||
| `gigaam-v3-e2e-rnnt` | ~300 MB | не измерено | ru | ✅ |
|
||||
| `gigaam-multilingual-ctc` | ~300 MB | 10,5×* | ru, en, kk, ky, uz | ❌ |
|
||||
| `gigaam-v3-e2e-ctc` | ~300 MB | 12,3×* | ru | ✅ |
|
||||
| `gigaam-v3-e2e-rnnt` | ~300 MB | 11,7×* | ru | ✅ |
|
||||
| `parakeet-v3` | ~600 MB | 12-20× | 25 языков | ✅ |
|
||||
|
||||
\* Наблюдение на AMD Ryzen 7 8845H, Windows, `int8`, запись 14:51. Это не
|
||||
приёмочный замер для целевого Intel Core i5.
|
||||
|
||||
> **Рекомендация**: для русского по-прежнему используйте проверенный `gigaam-v3`
|
||||
> (см. [ADR-006](docs/adr/006-onnx-asr-backend.md)). E2E-модели добавляют
|
||||
> пунктуацию и нормализацию, но их скорость на слабых CPU не измерялась;
|
||||
|
||||
@@ -169,9 +169,13 @@ class OnnxAsrBackend:
|
||||
for vad_seg in model.recognize(
|
||||
audio_array, sample_rate=16000, language=language
|
||||
):
|
||||
start = max(0.0, vad_seg.start)
|
||||
end = max(0.0, vad_seg.end)
|
||||
if end <= start:
|
||||
continue
|
||||
seg = Segment(
|
||||
start=max(0.0, vad_seg.start),
|
||||
end=max(0.0, vad_seg.end),
|
||||
start=start,
|
||||
end=end,
|
||||
text=vad_seg.text,
|
||||
)
|
||||
if on_segment is not None:
|
||||
|
||||
@@ -328,6 +328,27 @@ class TestTranscribe:
|
||||
assert result.language == "unknown"
|
||||
assert result.duration == 1.0
|
||||
|
||||
def test_transcribe_skips_zero_length_vad_segments(self, monkeypatch, tmp_path):
|
||||
wav_file = tmp_path / "test.wav"
|
||||
wav_file.write_bytes(b"fake audio")
|
||||
|
||||
def fake_decode_audio(path, sampling_rate=16000):
|
||||
import numpy as np
|
||||
|
||||
return np.array([0.0] * 16000, dtype=np.float32)
|
||||
|
||||
class FakeModel:
|
||||
def recognize(self, waveform, sample_rate, language=None):
|
||||
yield FakeVadSegment(0.5, 0.5, "нулевой")
|
||||
yield FakeVadSegment(0.75, 0.5, "обратный")
|
||||
yield FakeVadSegment(0.5, 1.0, "валидный")
|
||||
|
||||
monkeypatch.setattr("faster_whisper.decode_audio", fake_decode_audio)
|
||||
|
||||
result = OnnxAsrBackend().transcribe(FakeModel(), wav_file, language=None)
|
||||
|
||||
assert result.segments == [Segment(start=0.5, end=1.0, text="валидный")]
|
||||
|
||||
|
||||
class TestBackendRegistration:
|
||||
def test_get_backend_returns_onnx_backend(self):
|
||||
|
||||
Reference in New Issue
Block a user