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.
This commit is contained in:
@@ -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
|
||||||
```
|
```
|
||||||
@@ -280,24 +283,28 @@ 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 | ✅ |
|
||||||
|
| `gigaam-v3-e2e-rnnt` | ~300 MB | 11,5×* | ru | ✅ |
|
||||||
| `parakeet-v3` | ~600 MB | 12-20× | 25 языков | ✅ |
|
| `parakeet-v3` | ~600 MB | 12-20× | 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).
|
||||||
|
|
||||||
> **Рекомендация**: для готового читаемого русского текста
|
> **Рекомендация**: для готового читаемого русского текста
|
||||||
> используйте `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` на русском воспроизводит проблемы из
|
||||||
|
> [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 сообщит о подстановке
|
||||||
|
|||||||
+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
|
||||||
|
|
||||||
## Цель
|
## Цель
|
||||||
@@ -40,6 +41,7 @@
|
|||||||
| 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 |
|
||||||
| 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 +57,13 @@ 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 | 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 | 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,6 +81,7 @@ 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 |
|
||||||
| GigaAM v3 E2E CTC | **219,7 с** | **11,91×** | 29,3% | 305 |
|
| GigaAM v3 E2E CTC | **219,7 с** | **11,91×** | 29,3% | 305 |
|
||||||
@@ -86,8 +91,10 @@ 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.
|
||||||
|
|
||||||
## Качественное чтение
|
## Качественное чтение
|
||||||
|
|
||||||
@@ -109,6 +116,10 @@ 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%. При ручном
|
||||||
|
чтении скрытой деградации не найдено, но пунктуации по-прежнему нет, а термины
|
||||||
|
передаются преимущественно фонетически (`файнбиай`, `найфай`, `терадата`).
|
||||||
|
|
||||||
Длинных автономных галлюцинаций не найдено. Есть локальные потенциально
|
Длинных автономных галлюцинаций не найдено. Есть локальные потенциально
|
||||||
опасные искажения имён и терминов: `Иришка`, `Lutriness`, «расчёт
|
опасные искажения имён и терминов: `Иришка`, `Lutriness`, «расчёт
|
||||||
@@ -131,8 +142,11 @@ 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 остаётся вариантом с приоритетом скорости.
|
||||||
|
- `gigaam-v3-e2e-ctc` преимуществ на этом наборе не показала.
|
||||||
- FasterWhisper medium остаётся выбором для важных записей с плотной
|
- FasterWhisper medium остаётся выбором для важных записей с плотной
|
||||||
терминологией, если допустима обработка около realtime. По трём файлам она в
|
терминологией, если допустима обработка около realtime. По трём файлам она в
|
||||||
11 раз медленнее GigaAM ради снижения WER примерно на 5–6 процентных пунктов.
|
11 раз медленнее GigaAM ради снижения WER примерно на 5–6 процентных пунктов.
|
||||||
|
|||||||
@@ -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` — пунктуация и нормализация текста.
|
||||||
|
|
||||||
Каталог моделей в бэкенде хранит, помимо имени, опубликованные для модели
|
Каталог моделей в бэкенде хранит, помимо имени, опубликованные для модели
|
||||||
@@ -142,9 +144,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 +156,9 @@ Python и зависимости при неизменных моделях —
|
|||||||
|
|
||||||
## Документация
|
## Документация
|
||||||
|
|
||||||
README: три модели в таблицу ONNX-моделей. Рекомендация остаётся прежней —
|
README: четыре модели в таблицу ONNX-моделей. Для русского без пунктуации
|
||||||
`gigaam-v3` для русского — пока нет данных, чтобы её менять; у новых моделей
|
рекомендуется `gigaam-v3`, для готового читаемого текста — E2E RNN-T, для
|
||||||
стоит оговорка, что скорость на слабых CPU не измерялась. Требование Python
|
смешанной речи с приоритетом качества — 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,
|
||||||
|
|||||||
@@ -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