diff --git a/README.md b/README.md index 97e4148..8c2684e 100644 --- a/README.md +++ b/README.md @@ -286,14 +286,14 @@ language = "en" | `parakeet-v3` | ~600 MB | 12-20× | 25 языков | ✅ | \* Наблюдение на AMD Ryzen 7 8845H, Windows, `int8`, запись 14:51. Это не -приёмочный замер для целевого Intel Core i5. +приёмочный замер для целевого Intel Core i5. Методика и качественное сравнение: +[benchmark GigaAM и Whisper](docs/benchmarks/2026-08-11-gigaam-model-comparison.md). -> **Рекомендация**: для русского по-прежнему используйте проверенный `gigaam-v3` -> (см. [ADR-006](docs/adr/006-onnx-asr-backend.md)). E2E-модели добавляют -> пунктуацию и нормализацию, но их скорость на слабых CPU не измерялась; -> `gigaam-v3-e2e-rnnt` декодирует последовательно и особенно медленна на длинных -> записях. `parakeet-v3` на русском воспроизводит проблемы из -> [ADR-005](docs/adr/005-parakeet-evaluation.md). +> **Рекомендация**: для готового читаемого русского текста +> используйте `gigaam-v3-e2e-rnnt`, для последующей машинной обработки — более +> точный по словам `gigaam-v3` без пунктуации. Вывод проверен на трёх реальных +> записях общей длительностью 43:37. `parakeet-v3` на русском воспроизводит +> проблемы из [ADR-005](docs/adr/005-parakeet-evaluation.md). GigaAM Multilingual сама распознаёт русский, английский, казахский, кыргызский и узбекский внутри одной записи. `onnx-asr` не передаёт этой модели подсказку diff --git a/docs/adr/006-onnx-asr-backend.md b/docs/adr/006-onnx-asr-backend.md index c9b3ddb..0b1b184 100644 --- a/docs/adr/006-onnx-asr-backend.md +++ b/docs/adr/006-onnx-asr-backend.md @@ -121,7 +121,10 @@ Mm-hmm-редукция и иностранные вставки **не обна ## Открытые вопросы / следующие шаги - **Galлюцинации Whisper medium на длинных файлах** — отдельный продуктовый риск, требующий собственного исследования. Возможно, имеет смысл ограничить максимальную длину чанка для openvino-medium, или дать предупреждение пользователю. -- **GigaAM v3 RNN-T** (вариант `gigaam-v3-rnnt` вместо `gigaam-v3-ctc`) — заявлен как немного качественнее CTC, не тестировался. Может закрыть часть GigaAM-ошибок на латинице. +- **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). diff --git a/docs/benchmarks/2026-08-11-gigaam-model-comparison.md b/docs/benchmarks/2026-08-11-gigaam-model-comparison.md new file mode 100644 index 0000000..1fe6d32 --- /dev/null +++ b/docs/benchmarks/2026-08-11-gigaam-model-comparison.md @@ -0,0 +1,156 @@ +# Сравнение 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 говорящих, высокая плотность английских терминов | внешний транскрипт с диаризацией | + +Сырые записи и внешние транскрипты не коммитятся в репозиторий. + +## Запись 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 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 | 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 | 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 v3 E2E RNN-T | 226,9 с | 11,54× | 26,9% | 290 | +| GigaAM Multilingual CTC | 261,7 с | 10,00× | 26,9% | 0 | +| 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 медленнее обычного GigaAM на 18%, а выигрыш E2E CTC относительно +RNN-T составляет только 3% и не компенсирует ухудшение текста. + +## Качественное чтение + +Независимый 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 на новых записях. + +Длинных автономных галлюцинаций не найдено. Есть локальные потенциально +опасные искажения имён и терминов: `Иришка`, `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-v3-e2e-ctc` и `gigaam-multilingual-ctc` на этой записи преимуществ + не показали. +- FasterWhisper medium остаётся выбором для важных записей с плотной + терминологией, если допустима обработка около realtime. По трём файлам она в + 11 раз медленнее GigaAM ради снижения WER примерно на 5–6 процентных пунктов. + На CUDA соотношение необходимо измерять отдельно. + +Три записи подтверждают RNN-T как практический профиль для готового текста, но +не дают оснований молча менять общий default: существующие пользователи могут +предпочитать более точный сырой `gigaam-v3`, а пунктуация RNN-T заметно дробит +живую речь. Лучше выразить выбор явными профилями CLI или конфигурации. + +## Воспроизводимость + +Для каждого ONNX-профиля использовалась команда вида: + +```powershell +uv run transcribe --device onnx --model --compute-type int8 +``` + +Время измерялось на прогретом кеше модели. WER считался после удаления +метаданных и таймкодов, приведения к нижнему регистру, замены `ё` на `е` и +удаления пунктуации.