From 53142fd341f20f1664e9fa6f1e98a920feaffd32 Mon Sep 17 00:00:00 2001 From: Dmitry Dementev Date: Sat, 25 Apr 2026 22:31:51 +0300 Subject: [PATCH] =?UTF-8?q?docs(adr):=20ADR-005=20=E2=80=94=20=D1=80=D0=B5?= =?UTF-8?q?=D0=B7=D1=83=D0=BB=D1=8C=D1=82=D0=B0=D1=82=D1=8B=20=D1=8D=D0=BA?= =?UTF-8?q?=D1=81=D0=BF=D0=B5=D1=80=D0=B8=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=20?= =?UTF-8?q?=D1=81=20onnx-asr=20=D0=B1=D1=8D=D0=BA=D0=B5=D0=BD=D0=B4=D0=BE?= =?UTF-8?q?=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Зачем: - задокументировать результаты сравнения gigaam-v3 vs OpenVINO на CPU. - Что: - таблица скорости по 3 файлам (3-5x ускорение). - сравнение качества русской речи с GPU faster-whisper. - решение: оставить бэкенд как экспериментальный (--device onnx). - Проверка: - просмотр docs/adr/005-onnx-asr-backend.md. --- docs/adr/005-onnx-asr-backend.md | 61 ++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 docs/adr/005-onnx-asr-backend.md diff --git a/docs/adr/005-onnx-asr-backend.md b/docs/adr/005-onnx-asr-backend.md new file mode 100644 index 0000000..e036051 --- /dev/null +++ b/docs/adr/005-onnx-asr-backend.md @@ -0,0 +1,61 @@ +# ADR-005: onnx-asr бэкенд (Parakeet / GigaAM) — эксперимент и решение + +**Статус**: Принято +**Дата**: 2026-04-25 + +## Контекст + +Целевая аудитория `local-transcriber` — пользователи с Intel iGPU / CPU, без дискретного NVIDIA GPU. +Существующие CPU-бэкенды (faster-whisper, OpenVINO) дают 0.5-6x RTF для средних моделей — транскрипция часовой записи занимает 10-120 минут. + +[onnx-asr](https://github.com/istupakov/onnx-asr) — легковесная обёртка (onnxruntime + numpy) над ONNX-моделями Parakeet, GigaAM, FastConformer и Canary. Заявляет 30-90x RTF на CPU при сравнимом с Whisper качестве для русского языка. + +## Эксперимент + +Проведено сравнение на трёх реальных русскоязычных записях встреч (22-81 мин, mp4), ноутбук с Intel i7-11800H (CPU-only). + +Сравнивались: **onnx-asr GigaAM v3 CTC** (int8, CPU) против **OpenVINO Whisper medium** (int8, CPU). Эталон — faster-whisper large-v3 на RTX 3060 (GPU). + +### Результаты + +| Файл | Длит. | gigaam-v3 (CPU) | OpenVINO medium (CPU) | Ускорение | +|------|-------|-----------------|----------------------|-----------| +| 10-59-59 | 22:26 | 81с (16.6×) | 265с (5.1×) | **3.3×** | +| Vasya | 45:51 | 95с (29×) | 455с (6×) | **4.8×** | +| 12-02-37 | 1:20:44 | 170с (28.5×) | 779с (6.2×) | **4.6×** | + +### Качество (русская речь, файл 12-02-37) + +| Модель | Пунктуация | Читаемость | Контекст | +|--------|-----------|-----------|----------| +| GPU f-whisper large-v3 | ✅ | Отлично | ✅ | +| **GigaAM v3 CTC (CPU)** | ❌ | Хорошо | ✅ | +| OpenVINO medium (CPU) | ✅ | Хорошо | ✅ | + +GigaAM v3 не расставляет знаки препинания, но контекст разговора полностью сохраняется — пригоден для конспектирования и дальнейшей LLM-обработки. VAD даёт более дробные сегменты (удобнее для навигации). Английскую речь не понимает (модель обучена только на русском). + +## Решение + +**Оставить onnx-asr как экспериментальный бэкенд.** Доступен через `--device onnx`, не в цепочке авто-детекта. + +Модели: +- `gigaam-v3` — по умолчанию для `--device onnx`. Русский, 4.7% WER, 17-29x RTF на CPU. +- `parakeet-v3` — мультиязычный fallback (25 языков, включая русский). 11% WER, 34x RTF. + +Обе модели в int8-квантизации (~300 MB, минимальная потеря качества). + +## Последствия + +- Пользователи CPU получают 3-5x ускорение для русской речи по сравнению с OpenVINO +- Пунктуация отсутствует (GigaAM не обучен её ставить) — приемлемо для конспектирования +- Мультиязычные записи требуют `--model parakeet-v3` +- Бэкенд не в авто-детекте — пользователь должен явно указать `--device onnx` +- В будущем: добавить parakeet-v3 в авто-детект для мультиязыка, рассмотреть Canary для лучшего качества + +## Отклонённые альтернативы + +| Альтернатива | Почему отклонена | +|---|---| +| NeMo Parakeet напрямую | Требует PyTorch + CUDA, Python ≥ 3.12, ~2 GB зависимостей — слишком тяжело для CLI | +| Замена faster-whisper на onnx-asr | faster-whisper поддерживает 99+ языков и пунктуацию, остаётся лучшим GPU-бэкендом | +| Интеграция в авто-детект | Экспериментальный бэкенд, не хотим сюрпризов у пользователей |