3 Commits
Author SHA1 Message Date
Dmitriy Dementiev 7f58a56913 feat(onnx): изменена модель по умолчанию на GigaAM RNN-T
- Зачем:
  - пользователям нужен читаемый транскрипт без обязательной LLM-обработки.
- Что:
  - моделью ONNX по умолчанию выбрана `gigaam-v3-e2e-rnnt`.
  - сохранён явный профиль `gigaam-v3` для более точного сырого текста.
  - обновлены тест, README, спецификация, ADR и benchmark.
- Проверка:
  - `uv run pytest -q` — 226 passed, 1 skipped.
  - `git diff --check`.
2026-08-11 16:47:09 +03:00
Dmitriy Dementiev a06dbe63a3 docs(benchmark): сравнены GigaAM Large и Parakeet
Зачем:
- зафиксировать сравнение моделей на одном и том же массиве записей
- сохранить воспроизводимый набор файлов для будущих прогонов

Что:
- добавлены метрики и качественный вывод по Parakeet v3
- записаны точные имена, размеры и SHA-256 видео и эталонов
- обновлена рекомендация в README

Проверка:
- git diff --check
2026-08-11 16:28:45 +03:00
Dmitriy Dementiev 8f85930616 feat(onnx): добавлена модель GigaAM Multilingual Large
- Зачем:
  - расширенный benchmark показал устойчивое улучшение multilingual large на трёх реальных записях.
- Что:
  - добавлен alias gigaam-multilingual-large-ctc с квантизациями int8 и float32.
  - обновлены README, спецификация, backlog и сравнительный benchmark.
- Проверка:
  - uv run pytest -q: 225 passed, 1 skipped.
  - uvx ruff check src/local_transcriber/backends/onnx_asr.py tests/test_onnx_asr.py.
2026-08-11 16:12:36 +03:00
9 changed files with 157 additions and 45 deletions
+25 -16
View File
@@ -124,6 +124,9 @@ transcribe podcast.wav --device onnx --model gigaam-v3-e2e-ctc
# Смешанная русско-английская речь
transcribe meeting.wav --device onnx --model gigaam-multilingual-ctc
# Повышенная точность смешанной речи (медленнее, ~590 MB)
transcribe meeting.wav --device onnx --model gigaam-multilingual-large-ctc
# Сохранить в конкретный файл
transcribe interview.m4a --output result.md
```
@@ -248,14 +251,15 @@ language = "en"
| Параметр | CUDA | OpenVINO (GPU) | OpenVINO (CPU) | ONNX | CPU |
|----------|------|----------------|----------------|------|-----|
| model | medium | medium | medium | gigaam-v3 | medium |
| model | medium | medium | medium | gigaam-v3-e2e-rnnt | medium |
| compute_type | float16 | int8 | int8 | int8 | float32 |
| language | ru | ru | ru | ru | ru |
## Модели и GPU
Рекомендации:
- **По умолчанию:** `medium` — хороший баланс скорости и качества
- **По умолчанию для ONNX:** `gigaam-v3-e2e-rnnt` — читаемый русский текст с
пунктуацией почти без потери скорости относительно сырого `gigaam-v3`
- **Макс. качество (NVIDIA):** `large-v3` + `--compute-type float16`
- **Макс. качество (Intel GPU):** `large-v3` + `--device openvino-gpu`
- **Макс. скорость CPU (русский):** `--device onnx --model gigaam-v3` (17-29× RTF, без пунктуации; рекомендуется LLM-нормализация терминов после)
@@ -280,24 +284,29 @@ language = "en"
| Модель | Размер (int8) | RTFx CPU | Языки | Пунктуация |
|--------|--------------|----------|-------|-----------|
| `gigaam-v3` | ~300 MB | 17-29× | 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 языков | ✅ |
| `gigaam-multilingual-ctc` | ~300 MB | 10,0×* | ru, en, kk, ky, uz | ❌ |
| `gigaam-multilingual-large-ctc` | ~590 MB | 4,8×* | ru, en, kk, ky, uz | |
| `gigaam-v3-e2e-ctc` | ~300 MB | 11,9×* | ru | ✅ |
| `gigaam-v3-e2e-rnnt` | ~300 MB | 11,5×* | ru | ✅ |
| `parakeet-v3` | ~600 MB | 7,6×* | 25 языков | ✅ |
\* Наблюдение на AMD Ryzen 7 8845H, Windows, `int8`, запись 14:51. Это не
приёмочный замер для целевого Intel Core i5. Методика и качественное сравнение:
\* Наблюдение на AMD Ryzen 7 8845H, Windows, `int8`, три записи общей
длительностью 43:37. Это не приёмочный замер для целевого Intel Core i5.
Методика и качественное сравнение:
[benchmark GigaAM и Whisper](docs/benchmarks/2026-08-11-gigaam-model-comparison.md).
> **Рекомендация**: для готового читаемого русского текста
> используйте `gigaam-v3-e2e-rnnt`, для последующей машинной обработки — более
> точный по словам `gigaam-v3` без пунктуации. Вывод проверен на трёх реальных
> записях общей длительностью 43:37. `parakeet-v3` на русском воспроизводит
> проблемы из [ADR-005](docs/adr/005-parakeet-evaluation.md).
> **Рекомендация**: ONNX по умолчанию использует `gigaam-v3-e2e-rnnt` для
> готового читаемого русского текста. Для последующей машинной обработки можно
> явно выбрать более точный по словам `gigaam-v3` без пунктуации. Для смешанной
> речи с приоритетом качества используйте `gigaam-multilingual-large-ctc`: она примерно вдвое
> медленнее small-варианта, но приблизилась к monolingual GigaAM по WER.
> `parakeet-v3` в 1,58 раза быстрее Large и ставит пунктуацию, но на тех же
> трёх записях хуже по WER и вставляет ложные английские фразы в русскую речь;
> это подтверждает проблемы из [ADR-005](docs/adr/005-parakeet-evaluation.md).
GigaAM Multilingual сама распознаёт русский, английский, казахский, кыргызский и
узбекский внутри одной записи. `onnx-asr` не передаёт этой модели подсказку
языка, поэтому `--language` не управляет её выбором языка.
Обе GigaAM Multilingual сами распознают русский, английский, казахский,
кыргызский и узбекский внутри одной записи. `onnx-asr` не передаёт этим моделям
подсказку языка, поэтому `--language` не управляет выбором языка.
Для моделей из таблицы опубликованы `int8` и `float32`. Если неявный
device-aware дефолт недоступен для выбранной модели, CLI сообщит о подстановке
+13 -8
View File
@@ -1,7 +1,8 @@
# ADR-006: onnx-asr бэкенд — GigaAM v3 как CPU-default для русских встреч
# ADR-006: GigaAM RNN-T как модель по умолчанию для ONNX-пути
**Статус**: Принято
**Дата**: 2026-04-25
**Обновлено**: 2026-08-11
## Контекст
@@ -100,19 +101,27 @@ Mm-hmm-редукция и иностранные вставки **не обна
## Решение
**Принять onnx-asr как экспериментальный бэкенд с явным `--device onnx`. GigaAM v3 — рекомендуемая модель для русских встреч на CPU.**
**Принять onnx-asr как экспериментальный бэкенд с явным `--device onnx`.
GigaAM v3 E2E RNN-T — модель по умолчанию для русских встреч на CPU.**
Бэкенд **не в auto-detect** — только при явном указании пользователем (политика experimental backend, как для openvino).
Модели:
- **`gigaam-v3`** — рекомендуемая для русских встреч на CPU. 17-29× RTF, summary utility 4/5 на всех протестированных файлах. Без пунктуации, без латиницы; ошибки локальны, чинятся LLM-нормализацией.
- **`gigaam-v3-e2e-rnnt`** — модель по умолчанию: практически равна обычному
GigaAM по скорости, немного уступает по WER, но выдаёт готовую пунктуацию для
пользователей, которые читают транскрипт напрямую.
- **`gigaam-v3`** — явный профиль для последующей машинной обработки. 17-29×
RTF, summary utility 4/5 на всех протестированных файлах. Без пунктуации и
латиницы; ошибки локальны, чинятся LLM-нормализацией.
- **`parakeet-v3`** — multilingual (25 языков), формально доступен. **Не рекомендуется для русских встреч**: Mm-hmm-редукция и иноязычные вставки воспроизводятся систематически (см. выше). Уместен только для англоязычного контента.
Обе модели в int8-квантизации (~300 MB).
Все перечисленные модели доступны в int8-квантизации.
## Последствия
- Пользователи CPU-only с русскоязычным контентом получают 3-5× ускорение по сравнению с OpenVINO medium **при превосходящем качестве** (4/5 vs 1-2/5 summary utility на длинных файлах).
- Пользователи ONNX без явного `--model` получают пунктуацию и нормализацию
RNN-T; более точный сырой CTC остаётся доступен как `--model gigaam-v3`.
- Whisper medium (`--device openvino-cpu`) **остаётся допустимым** для коротких (≤30 мин) встреч с равномерной громкостью; на длинных файлах с тихими участками он галлюцинирует целыми блоками — этот риск зафиксирован, но решение не выводит OpenVINO из списка дефолтов (часть пользователей всё ещё нуждается в пунктуации, и для коротких файлов галлюцинации не воспроизводятся).
- Parakeet-v3 формально доступен, но в README рекомендуется только для англоязычного контента — для русского явно не годится.
- GPU faster-whisper large-v3 остаётся эталоном по качеству (для пользователей с NVIDIA GPU).
@@ -121,10 +130,6 @@ Mm-hmm-редукция и иностранные вставки **не обна
## Открытые вопросы / следующие шаги
- **Galлюцинации Whisper medium на длинных файлах** — отдельный продуктовый риск, требующий собственного исследования. Возможно, имеет смысл ограничить максимальную длину чанка для openvino-medium, или дать предупреждение пользователю.
- **GigaAM v3 E2E RNN-T** протестирована позднее на трёх 14–15-минутных
записях: она практически равна обычному GigaAM по скорости и даёт готовую
пунктуацию, но немного уступает по совокупному WER. Результаты и обновлённая
рекомендация: [benchmark 2026-08-11](../benchmarks/2026-08-11-gigaam-model-comparison.md).
- **Canary** (`nemo-canary-1b-v2`) — тяжелее, но multilingual + пунктуация. Кандидат на «лучшее качество за разумную скорость» для тех, кому важна пунктуация.
- **Auto-detect onnx**: после стабилизации в production-использовании (несколько недель) — рассмотреть включение в auto-detect как первый CPU-бэкенд (ниже CUDA, выше OpenVINO).
+6 -1
View File
@@ -10,6 +10,11 @@
### Переоценка CPU-дефолта после обновления `onnx-asr` 0.12
**Промежуточный статус 2026-08-11:** короткая матрица на трёх записях завершена
и описана в [benchmark GigaAM и Whisper](benchmarks/2026-08-11-gigaam-model-comparison.md).
Multilingual Large добавлена как явный качественный профиль; решение о default
по-прежнему ждёт целевого Intel Core i5 и длинных негативных примеров.
**Проблема:** текущий CPU-путь через OpenVINO Whisper medium нестабилен на
длинных записях с тихими участками: модель генерирует правдоподобные повторы и
несуществующий текст. На файле `2026-07-29 13-58-39.mp4` разговор заканчивается
@@ -28,7 +33,7 @@
Python 3.10.
Шаг 1 в части onnx-пути вынесен в отдельную работу —
[спека «Onnx-каталог, Python 3.13 и границы версий»](specs/2026-08-11-onnx-model-catalog.md): движок
обновляется, три модели становятся поддерживаемыми, дефолт и OpenVINO не
обновляется, четыре модели становятся поддерживаемыми, дефолт и OpenVINO не
трогаются намеренно, чтобы сохранить точку отсчёта для будущего сравнения.
2. После интеграционных тестов провести сравнительный бенчмарк моделей. Не
менять CPU-дефолт только по model card или результату на одном файле.
@@ -5,6 +5,7 @@
**Статус:** завершённый benchmark на трёх записях
**Машина:** AMD Ryzen 7 8845H, Windows, CPU
**Квантизация ONNX:** int8
## Цель
@@ -29,6 +30,21 @@
Сырые записи и внешние транскрипты не коммитятся в репозиторий.
### Манифест файлов
На тестовом ноутбуке все файлы находятся в `C:\Users\ddmitry\Videos\OBS`.
Размер и SHA-256 позволяют проверить, что в повторном прогоне используется та
же версия записи или ориентира.
| Набор | Роль | Имя файла | Размер, байт | SHA-256 |
|---|---|---|---:|---|
| BDMA | видео | `2026-07-29 T2 BDMA уточнение задачи от Ильи.mp4` | 19 216 865 | `51866D247FE3EDA134CDD884F707B1F1DB8855B492E8BD14D2B56B62476255ED` |
| BDMA | ориентир | `2026-07-29 T2 BDMA уточнение задачи от Ильи.md` | 18 000 | `9098548743A86F868DFCDD906BCDE34ED1CE5A935602CBE399F4BCEDA8685B3C` |
| RSQM | видео | `2026-02-18 RSQM дейлик внутренний.mp4` | 19 694 785 | `E72000BE43A5E04BFB670B0A16D85D8AEA51A02A285ED778FF5726767E97E9B0` |
| RSQM | ориентир | `2026-02-18 RSQM дейлик внутренний_transcript.md` | 16 128 | `260DF5D6964817434092005936127C0DC2C22682B7CB20FF07D14C5D81B8D287` |
| DataCat | видео | `2026-03-23 T2 DataCat - архитектура в контуре заказчика - первое обсуждение с Машей.mp4` | 22 584 108 | `ACFF960A68AAA6A305F7E7053BB0642B5DA265B68865ABD018E7C9A8980AC3F5` |
| DataCat | ориентир | `2026-03-23 T2 DataCat - архитектура в контуре заказчика - первое обсуждение с Машей-transcript-whsper.md` | 24 874 | `7943944A0A046EAA3A1384CAC47D36B381FBEF2FCFDF18089411619F00725456` |
## Запись 1: уточнение задачи BDMA
Файл `2026-07-29 T2 BDMA уточнение задачи от Ильи.mp4`, длительность 14:51,
@@ -40,6 +56,8 @@
| OpenVINO medium | 190,6 с | 4,67× | **23,9%** | 187 |
| GigaAM v3 | **72,6 с** | **12,27×** | 26,5% | 0 |
| GigaAM Multilingual CTC | 84,8 с | 10,51× | 27,9% | 0 |
| GigaAM Multilingual Large CTC | 192,0 с | 4,64× | 27,5% | 0 |
| Parakeet v3 | 119,2 с | 7,47× | 28,2% | 338 |
| GigaAM v3 E2E RNN-T | 76,1 с | 11,71× | 29,0% | 326 |
| GigaAM v3 E2E CTC | **72,6 с** | **12,27×** | 31,8% | 338 |
@@ -55,11 +73,15 @@ cached-прогон для точного замера.
|---|---|---:|---:|---:|
| RSQM | GigaAM v3 | 75,1 с | 11,25× | **23,1%** |
| RSQM | Multilingual CTC | 82,7 с | 10,21× | 24,4% |
| RSQM | Multilingual Large CTC | 163,4 с | 5,17× | 23,8% |
| RSQM | Parakeet v3 | 103,7 с | 8,14× | 29,1% |
| RSQM | E2E RNN-T | 72,8 с | 11,60× | 25,4% |
| RSQM | E2E CTC | **71,1 с** | **11,88×** | 28,0% |
| RSQM | FasterWhisper medium | 686,1 с | 1,23× | **19,7%** |
| DataCat | GigaAM v3 | **74,8 с** | **11,79×** | 27,5% |
| DataCat | Multilingual CTC | 94,2 с | 9,36× | 27,9% |
| DataCat | Multilingual Large CTC | 189,6 с | 4,65× | 26,7% |
| DataCat | Parakeet v3 | 122,7 с | 7,19× | 27,9% |
| DataCat | E2E RNN-T | 78,0 с | 11,31× | **26,4%** |
| DataCat | E2E CTC | 76,0 с | 11,60× | 28,3% |
| DataCat | FasterWhisper medium | 954,5 с | 0,92× | **21,9%** |
@@ -77,8 +99,10 @@ WER ниже посчитан как micro-average: сумма ошибок по
|---|---:|---:|---:|---:|
| FasterWhisper medium CPU | 2511,6 с* | 1,04× | **20,9%** | 269 |
| GigaAM v3 | 222,5 с | 11,76× | **26,0%** | 0 |
| GigaAM Multilingual Large CTC | 545,0 с | 4,80× | **26,2%** | 0 |
| GigaAM v3 E2E RNN-T | 226,9 с | 11,54× | 26,9% | 290 |
| GigaAM Multilingual CTC | 261,7 с | 10,00× | 26,9% | 0 |
| Parakeet v3 | 345,6 с | 7,57× | 28,3% | 301 |
| GigaAM v3 E2E CTC | **219,7 с** | **11,91×** | 29,3% | 305 |
\* Для BDMA использована оценка 871 секунд чистого inference: первый запуск
@@ -86,8 +110,30 @@ FasterWhisper включал ещё около 263 секунд загрузки
прогретом кеше — 686,1 и 954,5 секунды соответственно.
RNN-T оказалась лишь на 2% медленнее обычного GigaAM по суммарному времени.
Multilingual медленнее обычного GigaAM на 18%, а выигрыш E2E CTC относительно
RNN-T составляет только 3% и не компенсирует ухудшение текста.
Multilingual Small медленнее обычного GigaAM на 18%, а выигрыш E2E CTC
относительно RNN-T составляет только 3% и не компенсирует ухудшение текста.
Multilingual Large в 2,08 раза медленнее Small и в 2,45 раза медленнее обычного
GigaAM, но всё ещё в 4,6 раза быстрее FasterWhisper.
### GigaAM Multilingual Large против Parakeet v3
Large точнее Parakeet на каждой записи: 27,5% против 28,2% WER на BDMA,
23,8% против 29,1% на RSQM и 26,7% против 27,9% на DataCat. В сумме Large
получила 26,2% WER против 28,3%. Особенно заметна разница в пропусках:
103 удаления у Large против 264 у Parakeet.
Parakeet обработала набор за 345,6 секунды против 545,0 секунды у Large, то
есть была в 1,58 раза быстрее, и сразу расставила пунктуацию. Однако ручное
чтение выявило частые ложные переключения языка. В русских репликах RSQM
появляются `Yeah`, `No`, `Just die`, `What foo`; в DataCat — `Don't`,
`Skid of all`, `Talk no`, `Boy`. Это не единичная орфографическая ошибка, а
искажение обычной русской речи. Large в тех же местах сохраняет русский смысл,
хотя передаёт английские термины фонетически и не ставит пунктуацию.
На этом массиве Large предпочтительнее по качеству и сохранности содержания.
Parakeet интересна как более быстрый вариант с пунктуацией, но для русских
встреч требует обязательной ручной проверки и не рекомендуется как основной
профиль.
## Качественное чтение
@@ -109,6 +155,13 @@ RNN-T составляет только 3% и не компенсирует ух
`иnженter`, `мetднные`, `оrкl`, `линейдgами`.
- Multilingual CTC не улучшила даже терминологически насыщенный DataCat и
оказалась на 15–26% медленнее обычного GigaAM на новых записях.
- Multilingual Large CTC улучшила Small на всех трёх записях и почти сравнялась
с monolingual GigaAM по совокупному WER: 26,2% против 26,0%. При ручном
чтении скрытой деградации не найдено, но пунктуации по-прежнему нет, а термины
передаются преимущественно фонетически (`файнбиай`, `найфай`, `терадата`).
- Parakeet v3 быстрее Large и выдаёт пунктуацию, но хуже по WER на всех трёх
записях, чаще пропускает слова и вставляет ложные английские фразы в русскую
речь. Для этого массива преимущество в читаемости не компенсирует искажения.
Длинных автономных галлюцинаций не найдено. Есть локальные потенциально
опасные искажения имён и терминов: `Иришка`, `Lutriness`, «расчёт
@@ -131,17 +184,23 @@ FasterWhisper лучше сохраняет `API`, `ETL`, `Open Platform`; об
- Для последующей машинной обработки, поиска или собственной расстановки
пунктуации — `gigaam-v3`: лучший совокупный WER среди быстрых ONNX-вариантов
и более стабильный сырой текст.
- `gigaam-v3-e2e-ctc` и `gigaam-multilingual-ctc` на этой записи преимуществ
не показали.
- Для смешанной речи с приоритетом качества сырого текста —
`gigaam-multilingual-large-ctc`. Она устойчиво лучше Small и почти равна
monolingual GigaAM по WER, но требует 545 секунд против 262 секунд на том же
наборе. Small остаётся вариантом с приоритетом скорости.
- `parakeet-v3` в 1,58 раза быстрее Large и содержит пунктуацию, однако хуже
по WER на всех трёх записях и нестабилен на русской речи. Использовать его
стоит только там, где скорость и готовая пунктуация важнее сохранности текста.
- `gigaam-v3-e2e-ctc` преимуществ на этом наборе не показала.
- FasterWhisper medium остаётся выбором для важных записей с плотной
терминологией, если допустима обработка около realtime. По трём файлам она в
11 раз медленнее GigaAM ради снижения WER примерно на 5–6 процентных пунктов.
На CUDA соотношение необходимо измерять отдельно.
Три записи подтверждают RNN-T как практический профиль для готового текста, но
не дают оснований молча менять общий default: существующие пользователи могут
предпочитать более точный сырой `gigaam-v3`, а пунктуация RNN-T заметно дробит
живую речь. Лучше выразить выбор явными профилями CLI или конфигурации.
По итогам сравнения и обсуждения двух основных сценариев RNN-T выбрана моделью
по умолчанию для явного `--device onnx`: небольшая потеря дословной точности
принята ради читаемого результата с пунктуацией. Для LLM-пайплайнов и поиска,
где важнее сырой текст, `gigaam-v3` остаётся явным профилем.
## Воспроизводимость
@@ -151,6 +210,8 @@ FasterWhisper лучше сохраняет `API`, `ETL`, `Open Platform`; об
uv run transcribe <recording.mp4> --device onnx --model <model> --compute-type int8
```
Для всех прогонов явно передавался язык `--language ru`.
Время измерялось на прогретом кеше модели. WER считался после удаления
метаданных и таймкодов, приведения к нижнему регистру, замены `ё` на `е` и
удаления пунктуации.
+23 -11
View File
@@ -14,9 +14,11 @@
## Что делаем
Снимаем ограничение версии, поднимаем `onnx-asr` до 0.12 и делаем
поддерживаемыми три модели:
поддерживаемыми четыре модели:
- `gigaam-multilingual-ctc` — смешанная речь с англоязычными терминами;
- `gigaam-multilingual-ctc` и `gigaam-multilingual-large-ctc` — смешанная речь
с англоязычными терминами; large добавлена после сравнительного benchmark по
явному решению пользователя;
- `gigaam-v3-e2e-ctc` и `gigaam-v3-e2e-rnnt` — пунктуация и нормализация текста.
Каталог моделей в бэкенде хранит, помимо имени, опубликованные для модели
@@ -81,11 +83,18 @@ CTranslate2, а onnx-путь ставится в CPU-варианте.
Конкретные номера берутся из `uv.lock` при реализации.
## Последующее решение о модели по умолчанию
После сравнительного прогона на трёх реальных записях и обсуждения двух
основных потребителей транскрипта модель `gigaam-v3-e2e-rnnt` выбрана моделью
по умолчанию для явного `--device onnx`. Она всего на 2% медленнее сырого
`gigaam-v3`, но выдаёт пунктуацию для чтения человеком; `gigaam-v3` остаётся
явным профилем с приоритетом дословной точности и последующей обработки LLM.
Это решение не включает ONNX в auto-detect.
## Чего не делаем
- Не меняем модель по умолчанию и auto-detect: `gigaam-v3` остаётся дефолтом
`--device onnx`. Решение о CPU-дефолте требует замеров на целевом Intel Core
i5, которого сейчас нет в доступе.
- Не меняем auto-detect: ONNX остаётся только явным выбором пользователя.
- Не обновляем OpenVINO, OpenVINO GenAI и CTranslate2. Whisper medium на
OpenVINO — то, с чем сравниваются новые модели; менять его движок
одновременно значит потерять точку отсчёта. Верхние границы версий им при
@@ -142,9 +151,10 @@ Python и зависимости при неизменных моделях —
- **скорость на Intel Core i5 не измерялась.** Замеры делаются на Ryzen 7
8845H и записываются как наблюдение с указанием CPU — для решения о
CPU-дефолте этого недостаточно;
- **качество моделей друг относительно друга не измерялось.** Ручная проверка
отвечает на вопрос «работает ли», а не «лучше ли»; сравнение — отдельная
работа, см. [backlog](../backlog.md).
- **качество моделей измерено предварительно на трёх 14–15-минутных записях.**
Результат фиксирует WER, скорость и ручное чтение, но не заменяет приёмку на
целевом Intel Core i5 и длинных записях; см.
[benchmark](../benchmarks/2026-08-11-gigaam-model-comparison.md).
Пошаговый чеклист и практика прогона нужны только на время работ и живут в
задаче трекера
@@ -153,8 +163,10 @@ Python и зависимости при неизменных моделях —
## Документация
README: три модели в таблицу ONNX-моделей. Рекомендация остаётся прежней —
`gigaam-v3` для русского — пока нет данных, чтобы её менять; у новых моделей
стоит оговорка, что скорость на слабых CPU не измерялась. Требование Python
README: поддерживаемые модели добавляются в таблицу ONNX-моделей. Для готового
читаемого русского текста и как модель по умолчанию используется E2E RNN-T,
для русского без пунктуации и LLM-пайплайнов остаётся явный `gigaam-v3`, для
смешанной речи с приоритетом качества — multilingual large. Скорость на слабых
CPU не измерялась. Требование Python
правится в [`docs/PRD.md`](../PRD.md) — раздел «Требования» и таблица
технологий; в README версии Python не упоминаются.
@@ -30,6 +30,10 @@ MODEL_CATALOG: dict[str, OnnxModelSpec] = {
"gigaam-multilingual-ctc",
_INT8_AND_FLOAT32,
),
"gigaam-multilingual-large-ctc": OnnxModelSpec(
"gigaam-multilingual-large-ctc",
_INT8_AND_FLOAT32,
),
"gigaam-v3-e2e-ctc": OnnxModelSpec(
"gigaam-v3-e2e-ctc",
_INT8_AND_FLOAT32,
+1 -1
View File
@@ -17,7 +17,7 @@ DEVICE_DEFAULTS: dict[str, dict[str, str]] = {
"openvino": {"model": "medium", "compute_type": "int8"},
"openvino-gpu": {"model": "medium", "compute_type": "int8"},
"openvino-cpu": {"model": "medium", "compute_type": "int8"},
"onnx": {"model": "gigaam-v3", "compute_type": "int8"},
"onnx": {"model": "gigaam-v3-e2e-rnnt", "compute_type": "int8"},
}
# Одно место правды для допустимых ключей конфига
+15
View File
@@ -113,6 +113,21 @@ def test_apply_device_defaults_cpu():
assert result["compute_type"] == "float32"
def test_apply_device_defaults_onnx_uses_readable_model():
defaults = {
"model": "medium",
"language": "ru",
"device": "auto",
"compute_type": "float32",
}
cli = {"model": None, "language": None, "device": None, "compute_type": None}
result = apply_device_defaults(defaults, "onnx", cli, {})
assert result["model"] == "gigaam-v3-e2e-rnnt"
assert result["compute_type"] == "int8"
def test_apply_device_defaults_cli_overrides():
defaults = {"model": "large-v3", "language": "ru", "device": "auto", "compute_type": "int8"}
cli = {"model": "large-v3", "language": None, "device": None, "compute_type": "int8"}
+1
View File
@@ -36,6 +36,7 @@ class TestEnsureModelAvailable:
"model_name",
[
"gigaam-multilingual-ctc",
"gigaam-multilingual-large-ctc",
"gigaam-v3-e2e-ctc",
"gigaam-v3-e2e-rnnt",
],