Compare commits
3
Commits
f0d7d06f93
...
7f58a56913
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7f58a56913 | ||
|
|
a06dbe63a3 | ||
|
|
8f85930616 |
@@ -124,6 +124,9 @@ transcribe podcast.wav --device onnx --model gigaam-v3-e2e-ctc
|
|||||||
# Смешанная русско-английская речь
|
# Смешанная русско-английская речь
|
||||||
transcribe meeting.wav --device onnx --model gigaam-multilingual-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
|
transcribe interview.m4a --output result.md
|
||||||
```
|
```
|
||||||
@@ -248,14 +251,15 @@ language = "en"
|
|||||||
|
|
||||||
| Параметр | CUDA | OpenVINO (GPU) | OpenVINO (CPU) | ONNX | CPU |
|
| Параметр | 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 |
|
| compute_type | float16 | int8 | int8 | int8 | float32 |
|
||||||
| language | ru | ru | ru | ru | ru |
|
| language | ru | ru | ru | ru | ru |
|
||||||
|
|
||||||
## Модели и GPU
|
## Модели и GPU
|
||||||
|
|
||||||
Рекомендации:
|
Рекомендации:
|
||||||
- **По умолчанию:** `medium` — хороший баланс скорости и качества
|
- **По умолчанию для ONNX:** `gigaam-v3-e2e-rnnt` — читаемый русский текст с
|
||||||
|
пунктуацией почти без потери скорости относительно сырого `gigaam-v3`
|
||||||
- **Макс. качество (NVIDIA):** `large-v3` + `--compute-type float16`
|
- **Макс. качество (NVIDIA):** `large-v3` + `--compute-type float16`
|
||||||
- **Макс. качество (Intel GPU):** `large-v3` + `--device openvino-gpu`
|
- **Макс. качество (Intel GPU):** `large-v3` + `--device openvino-gpu`
|
||||||
- **Макс. скорость CPU (русский):** `--device onnx --model gigaam-v3` (17-29× RTF, без пунктуации; рекомендуется LLM-нормализация терминов после)
|
- **Макс. скорость CPU (русский):** `--device onnx --model gigaam-v3` (17-29× RTF, без пунктуации; рекомендуется LLM-нормализация терминов после)
|
||||||
@@ -280,24 +284,29 @@ language = "en"
|
|||||||
| Модель | Размер (int8) | RTFx CPU | Языки | Пунктуация |
|
| Модель | Размер (int8) | RTFx CPU | Языки | Пунктуация |
|
||||||
|--------|--------------|----------|-------|-----------|
|
|--------|--------------|----------|-------|-----------|
|
||||||
| `gigaam-v3` | ~300 MB | 17-29× | ru | ❌ |
|
| `gigaam-v3` | ~300 MB | 17-29× | ru | ❌ |
|
||||||
| `gigaam-multilingual-ctc` | ~300 MB | 10,5×* | ru, en, kk, ky, uz | ❌ |
|
| `gigaam-multilingual-ctc` | ~300 MB | 10,0×* | ru, en, kk, ky, uz | ❌ |
|
||||||
| `gigaam-v3-e2e-ctc` | ~300 MB | 12,3×* | ru | ✅ |
|
| `gigaam-multilingual-large-ctc` | ~590 MB | 4,8×* | ru, en, kk, ky, uz | ❌ |
|
||||||
| `gigaam-v3-e2e-rnnt` | ~300 MB | 11,7×* | ru | ✅ |
|
| `gigaam-v3-e2e-ctc` | ~300 MB | 11,9×* | ru | ✅ |
|
||||||
| `parakeet-v3` | ~600 MB | 12-20× | 25 языков | ✅ |
|
| `gigaam-v3-e2e-rnnt` | ~300 MB | 11,5×* | ru | ✅ |
|
||||||
|
| `parakeet-v3` | ~600 MB | 7,6×* | 25 языков | ✅ |
|
||||||
|
|
||||||
\* Наблюдение на AMD Ryzen 7 8845H, Windows, `int8`, запись 14:51. Это не
|
\* Наблюдение на AMD Ryzen 7 8845H, Windows, `int8`, три записи общей
|
||||||
приёмочный замер для целевого Intel Core i5. Методика и качественное сравнение:
|
длительностью 43:37. Это не приёмочный замер для целевого Intel Core i5.
|
||||||
|
Методика и качественное сравнение:
|
||||||
[benchmark GigaAM и Whisper](docs/benchmarks/2026-08-11-gigaam-model-comparison.md).
|
[benchmark GigaAM и Whisper](docs/benchmarks/2026-08-11-gigaam-model-comparison.md).
|
||||||
|
|
||||||
> **Рекомендация**: для готового читаемого русского текста
|
> **Рекомендация**: ONNX по умолчанию использует `gigaam-v3-e2e-rnnt` для
|
||||||
> используйте `gigaam-v3-e2e-rnnt`, для последующей машинной обработки — более
|
> готового читаемого русского текста. Для последующей машинной обработки можно
|
||||||
> точный по словам `gigaam-v3` без пунктуации. Вывод проверен на трёх реальных
|
> явно выбрать более точный по словам `gigaam-v3` без пунктуации. Для смешанной
|
||||||
> записях общей длительностью 43:37. `parakeet-v3` на русском воспроизводит
|
> речи с приоритетом качества используйте `gigaam-multilingual-large-ctc`: она примерно вдвое
|
||||||
> проблемы из [ADR-005](docs/adr/005-parakeet-evaluation.md).
|
> медленнее small-варианта, но приблизилась к monolingual GigaAM по WER.
|
||||||
|
> `parakeet-v3` в 1,58 раза быстрее Large и ставит пунктуацию, но на тех же
|
||||||
|
> трёх записях хуже по WER и вставляет ложные английские фразы в русскую речь;
|
||||||
|
> это подтверждает проблемы из [ADR-005](docs/adr/005-parakeet-evaluation.md).
|
||||||
|
|
||||||
GigaAM Multilingual сама распознаёт русский, английский, казахский, кыргызский и
|
Обе GigaAM Multilingual сами распознают русский, английский, казахский,
|
||||||
узбекский внутри одной записи. `onnx-asr` не передаёт этой модели подсказку
|
кыргызский и узбекский внутри одной записи. `onnx-asr` не передаёт этим моделям
|
||||||
языка, поэтому `--language` не управляет её выбором языка.
|
подсказку языка, поэтому `--language` не управляет выбором языка.
|
||||||
|
|
||||||
Для моделей из таблицы опубликованы `int8` и `float32`. Если неявный
|
Для моделей из таблицы опубликованы `int8` и `float32`. Если неявный
|
||||||
device-aware дефолт недоступен для выбранной модели, CLI сообщит о подстановке
|
device-aware дефолт недоступен для выбранной модели, CLI сообщит о подстановке
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
# ADR-006: onnx-asr бэкенд — GigaAM v3 как CPU-default для русских встреч
|
# ADR-006: GigaAM RNN-T как модель по умолчанию для ONNX-пути
|
||||||
|
|
||||||
**Статус**: Принято
|
**Статус**: Принято
|
||||||
**Дата**: 2026-04-25
|
**Дата**: 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).
|
Бэкенд **не в 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-редукция и иноязычные вставки воспроизводятся систематически (см. выше). Уместен только для англоязычного контента.
|
- **`parakeet-v3`** — multilingual (25 языков), формально доступен. **Не рекомендуется для русских встреч**: Mm-hmm-редукция и иноязычные вставки воспроизводятся систематически (см. выше). Уместен только для англоязычного контента.
|
||||||
|
|
||||||
Обе модели в int8-квантизации (~300 MB).
|
Все перечисленные модели доступны в int8-квантизации.
|
||||||
|
|
||||||
## Последствия
|
## Последствия
|
||||||
|
|
||||||
- Пользователи CPU-only с русскоязычным контентом получают 3-5× ускорение по сравнению с OpenVINO medium **при превосходящем качестве** (4/5 vs 1-2/5 summary utility на длинных файлах).
|
- Пользователи 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 из списка дефолтов (часть пользователей всё ещё нуждается в пунктуации, и для коротких файлов галлюцинации не воспроизводятся).
|
- Whisper medium (`--device openvino-cpu`) **остаётся допустимым** для коротких (≤30 мин) встреч с равномерной громкостью; на длинных файлах с тихими участками он галлюцинирует целыми блоками — этот риск зафиксирован, но решение не выводит OpenVINO из списка дефолтов (часть пользователей всё ещё нуждается в пунктуации, и для коротких файлов галлюцинации не воспроизводятся).
|
||||||
- Parakeet-v3 формально доступен, но в README рекомендуется только для англоязычного контента — для русского явно не годится.
|
- Parakeet-v3 формально доступен, но в README рекомендуется только для англоязычного контента — для русского явно не годится.
|
||||||
- GPU faster-whisper large-v3 остаётся эталоном по качеству (для пользователей с NVIDIA GPU).
|
- GPU faster-whisper large-v3 остаётся эталоном по качеству (для пользователей с NVIDIA GPU).
|
||||||
@@ -121,10 +130,6 @@ Mm-hmm-редукция и иностранные вставки **не обна
|
|||||||
## Открытые вопросы / следующие шаги
|
## Открытые вопросы / следующие шаги
|
||||||
|
|
||||||
- **Galлюцинации Whisper medium на длинных файлах** — отдельный продуктовый риск, требующий собственного исследования. Возможно, имеет смысл ограничить максимальную длину чанка для openvino-medium, или дать предупреждение пользователю.
|
- **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 + пунктуация. Кандидат на «лучшее качество за разумную скорость» для тех, кому важна пунктуация.
|
- **Canary** (`nemo-canary-1b-v2`) — тяжелее, но multilingual + пунктуация. Кандидат на «лучшее качество за разумную скорость» для тех, кому важна пунктуация.
|
||||||
- **Auto-detect onnx**: после стабилизации в production-использовании (несколько недель) — рассмотреть включение в auto-detect как первый CPU-бэкенд (ниже CUDA, выше OpenVINO).
|
- **Auto-detect onnx**: после стабилизации в production-использовании (несколько недель) — рассмотреть включение в auto-detect как первый CPU-бэкенд (ниже CUDA, выше OpenVINO).
|
||||||
|
|
||||||
|
|||||||
+6
-1
@@ -10,6 +10,11 @@
|
|||||||
|
|
||||||
### Переоценка CPU-дефолта после обновления `onnx-asr` 0.12
|
### Переоценка 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 нестабилен на
|
**Проблема:** текущий CPU-путь через OpenVINO Whisper medium нестабилен на
|
||||||
длинных записях с тихими участками: модель генерирует правдоподобные повторы и
|
длинных записях с тихими участками: модель генерирует правдоподобные повторы и
|
||||||
несуществующий текст. На файле `2026-07-29 13-58-39.mp4` разговор заканчивается
|
несуществующий текст. На файле `2026-07-29 13-58-39.mp4` разговор заканчивается
|
||||||
@@ -28,7 +33,7 @@
|
|||||||
Python 3.10.
|
Python 3.10.
|
||||||
Шаг 1 в части onnx-пути вынесен в отдельную работу —
|
Шаг 1 в части onnx-пути вынесен в отдельную работу —
|
||||||
[спека «Onnx-каталог, Python 3.13 и границы версий»](specs/2026-08-11-onnx-model-catalog.md): движок
|
[спека «Onnx-каталог, Python 3.13 и границы версий»](specs/2026-08-11-onnx-model-catalog.md): движок
|
||||||
обновляется, три модели становятся поддерживаемыми, дефолт и OpenVINO не
|
обновляется, четыре модели становятся поддерживаемыми, дефолт и OpenVINO не
|
||||||
трогаются намеренно, чтобы сохранить точку отсчёта для будущего сравнения.
|
трогаются намеренно, чтобы сохранить точку отсчёта для будущего сравнения.
|
||||||
2. После интеграционных тестов провести сравнительный бенчмарк моделей. Не
|
2. После интеграционных тестов провести сравнительный бенчмарк моделей. Не
|
||||||
менять CPU-дефолт только по model card или результату на одном файле.
|
менять CPU-дефолт только по model card или результату на одном файле.
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
**Статус:** завершённый benchmark на трёх записях
|
**Статус:** завершённый benchmark на трёх записях
|
||||||
|
|
||||||
**Машина:** AMD Ryzen 7 8845H, Windows, CPU
|
**Машина:** AMD Ryzen 7 8845H, Windows, CPU
|
||||||
|
|
||||||
**Квантизация ONNX:** int8
|
**Квантизация 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
|
## Запись 1: уточнение задачи BDMA
|
||||||
|
|
||||||
Файл `2026-07-29 T2 BDMA уточнение задачи от Ильи.mp4`, длительность 14:51,
|
Файл `2026-07-29 T2 BDMA уточнение задачи от Ильи.mp4`, длительность 14:51,
|
||||||
@@ -40,6 +56,8 @@
|
|||||||
| OpenVINO medium | 190,6 с | 4,67× | **23,9%** | 187 |
|
| OpenVINO medium | 190,6 с | 4,67× | **23,9%** | 187 |
|
||||||
| GigaAM v3 | **72,6 с** | **12,27×** | 26,5% | 0 |
|
| GigaAM v3 | **72,6 с** | **12,27×** | 26,5% | 0 |
|
||||||
| GigaAM Multilingual CTC | 84,8 с | 10,51× | 27,9% | 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 RNN-T | 76,1 с | 11,71× | 29,0% | 326 |
|
||||||
| GigaAM v3 E2E CTC | **72,6 с** | **12,27×** | 31,8% | 338 |
|
| 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 | GigaAM v3 | 75,1 с | 11,25× | **23,1%** |
|
||||||
| RSQM | Multilingual CTC | 82,7 с | 10,21× | 24,4% |
|
| 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 RNN-T | 72,8 с | 11,60× | 25,4% |
|
||||||
| RSQM | E2E CTC | **71,1 с** | **11,88×** | 28,0% |
|
| RSQM | E2E CTC | **71,1 с** | **11,88×** | 28,0% |
|
||||||
| RSQM | FasterWhisper medium | 686,1 с | 1,23× | **19,7%** |
|
| RSQM | FasterWhisper medium | 686,1 с | 1,23× | **19,7%** |
|
||||||
| DataCat | GigaAM v3 | **74,8 с** | **11,79×** | 27,5% |
|
| DataCat | GigaAM v3 | **74,8 с** | **11,79×** | 27,5% |
|
||||||
| DataCat | Multilingual CTC | 94,2 с | 9,36× | 27,9% |
|
| 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 RNN-T | 78,0 с | 11,31× | **26,4%** |
|
||||||
| DataCat | E2E CTC | 76,0 с | 11,60× | 28,3% |
|
| DataCat | E2E CTC | 76,0 с | 11,60× | 28,3% |
|
||||||
| DataCat | FasterWhisper medium | 954,5 с | 0,92× | **21,9%** |
|
| 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 |
|
| FasterWhisper medium CPU | 2511,6 с* | 1,04× | **20,9%** | 269 |
|
||||||
| GigaAM v3 | 222,5 с | 11,76× | **26,0%** | 0 |
|
| 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 v3 E2E RNN-T | 226,9 с | 11,54× | 26,9% | 290 |
|
||||||
| GigaAM Multilingual CTC | 261,7 с | 10,00× | 26,9% | 0 |
|
| 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 |
|
| GigaAM v3 E2E CTC | **219,7 с** | **11,91×** | 29,3% | 305 |
|
||||||
|
|
||||||
\* Для BDMA использована оценка 871 секунд чистого inference: первый запуск
|
\* Для BDMA использована оценка 871 секунд чистого inference: первый запуск
|
||||||
@@ -86,8 +110,30 @@ FasterWhisper включал ещё около 263 секунд загрузки
|
|||||||
прогретом кеше — 686,1 и 954,5 секунды соответственно.
|
прогретом кеше — 686,1 и 954,5 секунды соответственно.
|
||||||
|
|
||||||
RNN-T оказалась лишь на 2% медленнее обычного GigaAM по суммарному времени.
|
RNN-T оказалась лишь на 2% медленнее обычного GigaAM по суммарному времени.
|
||||||
Multilingual медленнее обычного GigaAM на 18%, а выигрыш E2E CTC относительно
|
Multilingual Small медленнее обычного GigaAM на 18%, а выигрыш E2E CTC
|
||||||
RNN-T составляет только 3% и не компенсирует ухудшение текста.
|
относительно 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ами`.
|
`иnженter`, `мetднные`, `оrкl`, `линейдgами`.
|
||||||
- Multilingual CTC не улучшила даже терминологически насыщенный DataCat и
|
- Multilingual CTC не улучшила даже терминологически насыщенный DataCat и
|
||||||
оказалась на 15–26% медленнее обычного GigaAM на новых записях.
|
оказалась на 15–26% медленнее обычного GigaAM на новых записях.
|
||||||
|
- Multilingual Large CTC улучшила Small на всех трёх записях и почти сравнялась
|
||||||
|
с monolingual GigaAM по совокупному WER: 26,2% против 26,0%. При ручном
|
||||||
|
чтении скрытой деградации не найдено, но пунктуации по-прежнему нет, а термины
|
||||||
|
передаются преимущественно фонетически (`файнбиай`, `найфай`, `терадата`).
|
||||||
|
- Parakeet v3 быстрее Large и выдаёт пунктуацию, но хуже по WER на всех трёх
|
||||||
|
записях, чаще пропускает слова и вставляет ложные английские фразы в русскую
|
||||||
|
речь. Для этого массива преимущество в читаемости не компенсирует искажения.
|
||||||
|
|
||||||
Длинных автономных галлюцинаций не найдено. Есть локальные потенциально
|
Длинных автономных галлюцинаций не найдено. Есть локальные потенциально
|
||||||
опасные искажения имён и терминов: `Иришка`, `Lutriness`, «расчёт
|
опасные искажения имён и терминов: `Иришка`, `Lutriness`, «расчёт
|
||||||
@@ -131,17 +184,23 @@ FasterWhisper лучше сохраняет `API`, `ETL`, `Open Platform`; об
|
|||||||
- Для последующей машинной обработки, поиска или собственной расстановки
|
- Для последующей машинной обработки, поиска или собственной расстановки
|
||||||
пунктуации — `gigaam-v3`: лучший совокупный WER среди быстрых ONNX-вариантов
|
пунктуации — `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 остаётся выбором для важных записей с плотной
|
- FasterWhisper medium остаётся выбором для важных записей с плотной
|
||||||
терминологией, если допустима обработка около realtime. По трём файлам она в
|
терминологией, если допустима обработка около realtime. По трём файлам она в
|
||||||
11 раз медленнее GigaAM ради снижения WER примерно на 5–6 процентных пунктов.
|
11 раз медленнее GigaAM ради снижения WER примерно на 5–6 процентных пунктов.
|
||||||
На CUDA соотношение необходимо измерять отдельно.
|
На CUDA соотношение необходимо измерять отдельно.
|
||||||
|
|
||||||
Три записи подтверждают RNN-T как практический профиль для готового текста, но
|
По итогам сравнения и обсуждения двух основных сценариев RNN-T выбрана моделью
|
||||||
не дают оснований молча менять общий default: существующие пользователи могут
|
по умолчанию для явного `--device onnx`: небольшая потеря дословной точности
|
||||||
предпочитать более точный сырой `gigaam-v3`, а пунктуация RNN-T заметно дробит
|
принята ради читаемого результата с пунктуацией. Для LLM-пайплайнов и поиска,
|
||||||
живую речь. Лучше выразить выбор явными профилями CLI или конфигурации.
|
где важнее сырой текст, `gigaam-v3` остаётся явным профилем.
|
||||||
|
|
||||||
## Воспроизводимость
|
## Воспроизводимость
|
||||||
|
|
||||||
@@ -151,6 +210,8 @@ FasterWhisper лучше сохраняет `API`, `ETL`, `Open Platform`; об
|
|||||||
uv run transcribe <recording.mp4> --device onnx --model <model> --compute-type int8
|
uv run transcribe <recording.mp4> --device onnx --model <model> --compute-type int8
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Для всех прогонов явно передавался язык `--language ru`.
|
||||||
|
|
||||||
Время измерялось на прогретом кеше модели. WER считался после удаления
|
Время измерялось на прогретом кеше модели. WER считался после удаления
|
||||||
метаданных и таймкодов, приведения к нижнему регистру, замены `ё` на `е` и
|
метаданных и таймкодов, приведения к нижнему регистру, замены `ё` на `е` и
|
||||||
удаления пунктуации.
|
удаления пунктуации.
|
||||||
|
|||||||
@@ -14,9 +14,11 @@
|
|||||||
## Что делаем
|
## Что делаем
|
||||||
|
|
||||||
Снимаем ограничение версии, поднимаем `onnx-asr` до 0.12 и делаем
|
Снимаем ограничение версии, поднимаем `onnx-asr` до 0.12 и делаем
|
||||||
поддерживаемыми три модели:
|
поддерживаемыми четыре модели:
|
||||||
|
|
||||||
- `gigaam-multilingual-ctc` — смешанная речь с англоязычными терминами;
|
- `gigaam-multilingual-ctc` и `gigaam-multilingual-large-ctc` — смешанная речь
|
||||||
|
с англоязычными терминами; large добавлена после сравнительного benchmark по
|
||||||
|
явному решению пользователя;
|
||||||
- `gigaam-v3-e2e-ctc` и `gigaam-v3-e2e-rnnt` — пунктуация и нормализация текста.
|
- `gigaam-v3-e2e-ctc` и `gigaam-v3-e2e-rnnt` — пунктуация и нормализация текста.
|
||||||
|
|
||||||
Каталог моделей в бэкенде хранит, помимо имени, опубликованные для модели
|
Каталог моделей в бэкенде хранит, помимо имени, опубликованные для модели
|
||||||
@@ -81,11 +83,18 @@ CTranslate2, а onnx-путь ставится в CPU-варианте.
|
|||||||
|
|
||||||
Конкретные номера берутся из `uv.lock` при реализации.
|
Конкретные номера берутся из `uv.lock` при реализации.
|
||||||
|
|
||||||
|
## Последующее решение о модели по умолчанию
|
||||||
|
|
||||||
|
После сравнительного прогона на трёх реальных записях и обсуждения двух
|
||||||
|
основных потребителей транскрипта модель `gigaam-v3-e2e-rnnt` выбрана моделью
|
||||||
|
по умолчанию для явного `--device onnx`. Она всего на 2% медленнее сырого
|
||||||
|
`gigaam-v3`, но выдаёт пунктуацию для чтения человеком; `gigaam-v3` остаётся
|
||||||
|
явным профилем с приоритетом дословной точности и последующей обработки LLM.
|
||||||
|
Это решение не включает ONNX в auto-detect.
|
||||||
|
|
||||||
## Чего не делаем
|
## Чего не делаем
|
||||||
|
|
||||||
- Не меняем модель по умолчанию и auto-detect: `gigaam-v3` остаётся дефолтом
|
- Не меняем auto-detect: ONNX остаётся только явным выбором пользователя.
|
||||||
`--device onnx`. Решение о CPU-дефолте требует замеров на целевом Intel Core
|
|
||||||
i5, которого сейчас нет в доступе.
|
|
||||||
- Не обновляем OpenVINO, OpenVINO GenAI и CTranslate2. Whisper medium на
|
- Не обновляем OpenVINO, OpenVINO GenAI и CTranslate2. Whisper medium на
|
||||||
OpenVINO — то, с чем сравниваются новые модели; менять его движок
|
OpenVINO — то, с чем сравниваются новые модели; менять его движок
|
||||||
одновременно значит потерять точку отсчёта. Верхние границы версий им при
|
одновременно значит потерять точку отсчёта. Верхние границы версий им при
|
||||||
@@ -142,9 +151,10 @@ Python и зависимости при неизменных моделях —
|
|||||||
- **скорость на Intel Core i5 не измерялась.** Замеры делаются на Ryzen 7
|
- **скорость на Intel Core i5 не измерялась.** Замеры делаются на Ryzen 7
|
||||||
8845H и записываются как наблюдение с указанием CPU — для решения о
|
8845H и записываются как наблюдение с указанием CPU — для решения о
|
||||||
CPU-дефолте этого недостаточно;
|
CPU-дефолте этого недостаточно;
|
||||||
- **качество моделей друг относительно друга не измерялось.** Ручная проверка
|
- **качество моделей измерено предварительно на трёх 14–15-минутных записях.**
|
||||||
отвечает на вопрос «работает ли», а не «лучше ли»; сравнение — отдельная
|
Результат фиксирует WER, скорость и ручное чтение, но не заменяет приёмку на
|
||||||
работа, см. [backlog](../backlog.md).
|
целевом Intel Core i5 и длинных записях; см.
|
||||||
|
[benchmark](../benchmarks/2026-08-11-gigaam-model-comparison.md).
|
||||||
|
|
||||||
Пошаговый чеклист и практика прогона нужны только на время работ и живут в
|
Пошаговый чеклист и практика прогона нужны только на время работ и живут в
|
||||||
задаче трекера
|
задаче трекера
|
||||||
@@ -153,8 +163,10 @@ Python и зависимости при неизменных моделях —
|
|||||||
|
|
||||||
## Документация
|
## Документация
|
||||||
|
|
||||||
README: три модели в таблицу ONNX-моделей. Рекомендация остаётся прежней —
|
README: поддерживаемые модели добавляются в таблицу ONNX-моделей. Для готового
|
||||||
`gigaam-v3` для русского — пока нет данных, чтобы её менять; у новых моделей
|
читаемого русского текста и как модель по умолчанию используется E2E RNN-T,
|
||||||
стоит оговорка, что скорость на слабых CPU не измерялась. Требование Python
|
для русского без пунктуации и LLM-пайплайнов остаётся явный `gigaam-v3`, для
|
||||||
|
смешанной речи с приоритетом качества — multilingual large. Скорость на слабых
|
||||||
|
CPU не измерялась. Требование Python
|
||||||
правится в [`docs/PRD.md`](../PRD.md) — раздел «Требования» и таблица
|
правится в [`docs/PRD.md`](../PRD.md) — раздел «Требования» и таблица
|
||||||
технологий; в README версии Python не упоминаются.
|
технологий; в README версии Python не упоминаются.
|
||||||
|
|||||||
@@ -30,6 +30,10 @@ MODEL_CATALOG: dict[str, OnnxModelSpec] = {
|
|||||||
"gigaam-multilingual-ctc",
|
"gigaam-multilingual-ctc",
|
||||||
_INT8_AND_FLOAT32,
|
_INT8_AND_FLOAT32,
|
||||||
),
|
),
|
||||||
|
"gigaam-multilingual-large-ctc": OnnxModelSpec(
|
||||||
|
"gigaam-multilingual-large-ctc",
|
||||||
|
_INT8_AND_FLOAT32,
|
||||||
|
),
|
||||||
"gigaam-v3-e2e-ctc": OnnxModelSpec(
|
"gigaam-v3-e2e-ctc": OnnxModelSpec(
|
||||||
"gigaam-v3-e2e-ctc",
|
"gigaam-v3-e2e-ctc",
|
||||||
_INT8_AND_FLOAT32,
|
_INT8_AND_FLOAT32,
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ 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"},
|
"onnx": {"model": "gigaam-v3-e2e-rnnt", "compute_type": "int8"},
|
||||||
}
|
}
|
||||||
|
|
||||||
# Одно место правды для допустимых ключей конфига
|
# Одно место правды для допустимых ключей конфига
|
||||||
|
|||||||
@@ -113,6 +113,21 @@ def test_apply_device_defaults_cpu():
|
|||||||
assert result["compute_type"] == "float32"
|
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():
|
def test_apply_device_defaults_cli_overrides():
|
||||||
defaults = {"model": "large-v3", "language": "ru", "device": "auto", "compute_type": "int8"}
|
defaults = {"model": "large-v3", "language": "ru", "device": "auto", "compute_type": "int8"}
|
||||||
cli = {"model": "large-v3", "language": None, "device": None, "compute_type": "int8"}
|
cli = {"model": "large-v3", "language": None, "device": None, "compute_type": "int8"}
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ class TestEnsureModelAvailable:
|
|||||||
"model_name",
|
"model_name",
|
||||||
[
|
[
|
||||||
"gigaam-multilingual-ctc",
|
"gigaam-multilingual-ctc",
|
||||||
|
"gigaam-multilingual-large-ctc",
|
||||||
"gigaam-v3-e2e-ctc",
|
"gigaam-v3-e2e-ctc",
|
||||||
"gigaam-v3-e2e-rnnt",
|
"gigaam-v3-e2e-rnnt",
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user