- Зачем: - пользователям нужен читаемый транскрипт без обязательной LLM-обработки. - Что: - моделью ONNX по умолчанию выбрана `gigaam-v3-e2e-rnnt`. - сохранён явный профиль `gigaam-v3` для более точного сырого текста. - обновлены тест, README, спецификация, ADR и benchmark. - Проверка: - `uv run pytest -q` — 226 passed, 1 skipped. - `git diff --check`.
218 lines
16 KiB
Markdown
218 lines
16 KiB
Markdown
# Сравнение GigaAM v3, E2E и Whisper на русских встречах
|
||
|
||
**Дата:** 2026-08-11
|
||
|
||
**Статус:** завершённый benchmark на трёх записях
|
||
|
||
**Машина:** AMD Ryzen 7 8845H, Windows, CPU
|
||
|
||
**Квантизация ONNX:** int8
|
||
|
||
## Цель
|
||
|
||
Выбрать практический CPU-профиль на случай, когда OpenVINO недоступен или
|
||
нестабилен. Сравниваются скорость, близость к внешнему транскрипту, сохранность
|
||
смысла и терминов, пунктуация и пригодность результата для чтения.
|
||
|
||
Внешний транскрипт используется как неточный ориентир, а не ground truth: он
|
||
сам содержит ошибки, редактирует разговорную речь и добавляет диаризацию.
|
||
Поэтому WER — сравнительный сигнал внутри одного файла, а не абсолютная оценка.
|
||
|
||
## Набор данных
|
||
|
||
Три реальные записи общей длительностью 43:37:
|
||
|
||
| Запись | Длительность | Характер речи | Ориентир |
|
||
|---|---:|---|---|
|
||
| Уточнение задачи BDMA | 14:51 | 2 говорящих, русский с IT-терминами | внешний транскрипт |
|
||
| RSQM, внутренний дейлик | 14:04 | 5 говорящих, короткие реплики и задачи | внешний транскрипт с диаризацией |
|
||
| DataCat, обсуждение архитектуры | 14:42 | 3 говорящих, высокая плотность английских терминов | внешний транскрипт с диаризацией |
|
||
|
||
Сырые записи и внешние транскрипты не коммитятся в репозиторий.
|
||
|
||
### Манифест файлов
|
||
|
||
На тестовом ноутбуке все файлы находятся в `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,
|
||
преимущественно русская речь с IT- и продуктовыми терминами.
|
||
|
||
| Модель | Время | RTFx | WER к внешнему тексту | Пунктуация / 1000 слов |
|
||
|---|---:|---:|---:|---:|
|
||
| FasterWhisper medium CPU | 1133,9 с* | 0,79×* | **20,8%** | 313 |
|
||
| 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 |
|
||
|
||
\* FasterWhisper включает около 263 секунд первой загрузки модели. Оценка
|
||
самого распознавания — около 871 секунды, то есть 1,02× RTFx. Нужен отдельный
|
||
cached-прогон для точного замера.
|
||
|
||
Все модели дошли до конца записи без предупреждений о потере хвоста.
|
||
|
||
## Расширенный прогон
|
||
|
||
| Запись | Модель | Время | RTFx | WER |
|
||
|---|---|---:|---:|---:|
|
||
| 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%** |
|
||
|
||
Все модели обработали записи до конца. Разрыв между длительностью файла и
|
||
последним сегментом составил 0,3–5,9 секунды, предупреждений о потере хвоста или
|
||
повторах не было.
|
||
|
||
### Сводка по трём записям
|
||
|
||
WER ниже посчитан как micro-average: сумма ошибок по трём файлам делится на
|
||
суммарное число слов во внешних транскриптах.
|
||
|
||
| Модель | Суммарное время | RTFx | WER | Пунктуация / 1000 слов |
|
||
|---|---:|---:|---:|---:|
|
||
| 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: первый запуск
|
||
FasterWhisper включал ещё около 263 секунд загрузки. RSQM и DataCat измерены на
|
||
прогретом кеше — 686,1 и 954,5 секунды соответственно.
|
||
|
||
RNN-T оказалась лишь на 2% медленнее обычного GigaAM по суммарному времени.
|
||
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 интересна как более быстрый вариант с пунктуацией, но для русских
|
||
встреч требует обязательной ручной проверки и не рекомендуется как основной
|
||
профиль.
|
||
|
||
## Качественное чтение
|
||
|
||
Независимый reviewer сначала прочитал полные тексты без таблицы метрик, затем
|
||
сверил вывод с WER:
|
||
|
||
- FasterWhisper лучше сохраняет логику разговора и техническую лексику:
|
||
`Teradata`, `ClickHouse`, `ETL`, `legacy`, `MPP`, `SAP/BW/HANA`, `GUI`,
|
||
`Apex`. Значимых пропусков целых смысловых фрагментов не обнаружено.
|
||
- OpenVINO близок к FasterWhisper, но чаще склеивает слова и иногда локально
|
||
меняет смысл: около 00:59 «расчёт маржинальности называется» превращается в
|
||
«расчёт маржинальности не бывает».
|
||
- Обычный GigaAM v3 сохраняет почти весь смысл, числа и структуру обсуждения,
|
||
но фонетические ошибки и отсутствие пунктуации ухудшают чтение и поиск.
|
||
- E2E RNN-T читается лучше обычного GigaAM и устойчивее E2E CTC, но агрессивно
|
||
дробит живую речь. На DataCat она лучше обычного GigaAM по WER, однако на
|
||
BDMA и RSQM хуже на 2,3–2,5 процентного пункта.
|
||
- E2E CTC даёт больше обрывков, ложных границ и смешанных артефактов:
|
||
`и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`, «расчёт
|
||
маржинальности не бывает», «расчёты по губам», «понюхаю дело».
|
||
|
||
На RSQM FasterWhisper сохраняет `edge-кейсы`, `Confluence` и `Backlog`; GigaAM
|
||
передаёт их фонетически и нестабильно (`еджкейсы`, `ичкейсы`). На DataCat
|
||
FasterWhisper лучше сохраняет `API`, `ETL`, `Open Platform`; обычный GigaAM
|
||
хорошо удерживает сам смысл архитектурного обсуждения и большинство названий
|
||
фонетически. RNN-T делает текст визуально аккуратнее, но название одного и того
|
||
же продукта может плавать между `Fine BI`, `Fine Bia`, `FNB`, а `API` — между
|
||
`API`, `AP`, `пи`.
|
||
|
||
## Рекомендация
|
||
|
||
- Для чтения человеком без дополнительного постпроцессинга —
|
||
`gigaam-v3-e2e-rnnt`: по трём записям всего на 2% медленнее обычного GigaAM,
|
||
но уже содержит пунктуацию и нормализацию. Это выбор цена/качество, а не
|
||
максимум дословной точности.
|
||
- Для последующей машинной обработки, поиска или собственной расстановки
|
||
пунктуации — `gigaam-v3`: лучший совокупный WER среди быстрых ONNX-вариантов
|
||
и более стабильный сырой текст.
|
||
- Для смешанной речи с приоритетом качества сырого текста —
|
||
`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 выбрана моделью
|
||
по умолчанию для явного `--device onnx`: небольшая потеря дословной точности
|
||
принята ради читаемого результата с пунктуацией. Для LLM-пайплайнов и поиска,
|
||
где важнее сырой текст, `gigaam-v3` остаётся явным профилем.
|
||
|
||
## Воспроизводимость
|
||
|
||
Для каждого ONNX-профиля использовалась команда вида:
|
||
|
||
```powershell
|
||
uv run transcribe <recording.mp4> --device onnx --model <model> --compute-type int8
|
||
```
|
||
|
||
Для всех прогонов явно передавался язык `--language ru`.
|
||
|
||
Время измерялось на прогретом кеше модели. WER считался после удаления
|
||
метаданных и таймкодов, приведения к нижнему регистру, замены `ё` на `е` и
|
||
удаления пунктуации.
|