docs(asr): зафиксировано исследование обновлений и CPU-дефолта
- Зачем: - нужен проверяемый путь от обновления ASR-стека к выбору безопасного CPU-дефолта. - Что: - добавлено исследование актуальных движков и моделей с корректным именем файла. - зафиксированы дефект OpenVINO, кандидаты GigaAM и матрица бенчмарка на Intel Core i5. - Проверка: - выполнена проверка git diff --cached --check.
This commit is contained in:
+81
-10
@@ -8,9 +8,65 @@
|
||||
|
||||
## ASR-бэкенды и модели
|
||||
|
||||
### GigaAM v3 RNN-T — потенциальная замена CTC-дефолта для `--device onnx`
|
||||
### Переоценка CPU-дефолта после обновления `onnx-asr` 0.12
|
||||
|
||||
**Что:** Прогнать `gigaam-v3-rnnt` (или `v3_e2e_rnnt` если доступен через onnx-asr) по той же методологии, что и в [ADR-006](adr/006-onnx-asr-backend.md): 3 файла × agent-judge × 4 критерия.
|
||||
**Проблема:** текущий CPU-путь через OpenVINO Whisper medium нестабилен на
|
||||
длинных записях с тихими участками: модель генерирует правдоподобные повторы и
|
||||
несуществующий текст. На файле `2026-07-29 13-58-39.mp4` разговор заканчивается
|
||||
примерно на 02:28, после чего OpenVINO создаёт десятки повторяющихся блоков до
|
||||
конца 59-минутной записи. Изолированный тест окна 02:00–03:30 дал одинаковую
|
||||
серию из 14 повторов на `openvino-genai` 2026.0 и 2026.3; обновление движка само
|
||||
по себе проблему не устраняет. Подробнее — в пункте
|
||||
[«Whisper medium галлюцинации»](#whisper-medium-галлюцинации-на-длинных-файлах-с-тихими-фрагментами).
|
||||
|
||||
**Порядок работы:**
|
||||
|
||||
1. Сначала обновить совместимый стек по
|
||||
[исследованию обновлений](research/2026-08-10-engine-model-updates.md): снять
|
||||
ограничение `onnx-asr<0.12.0`, проверить VAD и квантованные модели; OpenVINO и
|
||||
OpenVINO GenAI обновлять согласованно. Не фиксировать ONNX Runtime 1.28 для
|
||||
Python 3.10.
|
||||
2. После интеграционных тестов провести сравнительный бенчмарк моделей. Не
|
||||
менять CPU-дефолт только по model card или результату на одном файле.
|
||||
3. Решение зафиксировать в ADR-007, обновить рекомендации README и только затем
|
||||
менять auto-detect/defaults.
|
||||
|
||||
**Кандидаты:**
|
||||
|
||||
- `gigaam-v3-ctc` — текущий baseline для русского CPU.
|
||||
- `gigaam-v3-rnnt` — контекстный декодер без пунктуации.
|
||||
- `gigaam-v3-e2e-ctc` и `gigaam-v3-e2e-rnnt` — варианты с пунктуацией и
|
||||
нормализацией текста.
|
||||
- `gigaam-multilingual-ctc` и `gigaam-multilingual-large-ctc`, добавленные в
|
||||
`onnx-asr` 0.12 — кандидаты для смешанной речи, но не априори для русского
|
||||
дефолта.
|
||||
- OpenVINO medium + VAD — альтернатива смене модели, сохраняющая Whisper и
|
||||
пунктуацию.
|
||||
- Parakeet v3 — контрольный multilingual-вариант, но не кандидат на русский
|
||||
дефолт без новых данных, опровергающих ADR-005/006.
|
||||
|
||||
**Матрица качества:**
|
||||
|
||||
- те же три полные записи и четыре критерия agent-judge из
|
||||
[ADR-006](adr/006-onnx-asr-backend.md): completeness, term accuracy, fluency,
|
||||
summary utility;
|
||||
- новый негативный пример `2026-07-29 13-58-39.mp4` с длинной тишиной;
|
||||
- небольшой вручную проверенный набор сложных фрагментов для WER/CER и разбора
|
||||
критичных смысловых ошибок: тихие реплики, имена компаний, латиница и
|
||||
IT-термины, числа, русско-английское переключение;
|
||||
- автоматические проверки потери хвоста, повторов, пустых/нулевых VAD-сегментов
|
||||
и выдуманного текста на тишине.
|
||||
|
||||
**Матрица производительности:**
|
||||
|
||||
- обязательный прогон на реальном Intel Core i5 11-го поколения; точный SKU,
|
||||
число ядер, объём RAM, power mode и число потоков записать вместе с результатом;
|
||||
- Ryzen 7 8845H разработчика и ограничение числа потоков использовать только для
|
||||
предварительного smoke-теста, не как приёмку производительности i5;
|
||||
- измерять отдельно cold start/загрузку модели и warm transcription, медиану
|
||||
трёх прогонов, RTFx, peak RSS и размер скачиваемой модели;
|
||||
- короткий 15-минутный фрагмент нужен для итераций, полные записи 22–81 мин —
|
||||
для итогового решения и проверки устойчивости.
|
||||
|
||||
**Почему интересно:**
|
||||
|
||||
@@ -27,12 +83,14 @@
|
||||
|
||||
**Если подтвердится бенчмарком:**
|
||||
|
||||
- Дефолт в `--device onnx` меняется с `gigaam-v3-ctc` на `gigaam-v3-rnnt`.
|
||||
- `openvino-cpu medium` уходит из рекомендаций для русского.
|
||||
- Формулировка «GPU faster-whisper large-v3 — эталон» в README может стать неточной.
|
||||
- Пишется ADR-007 с переоценкой дефолта.
|
||||
|
||||
**Уточнить перед запуском:** какой именно вариант RNN-T доступен в onnx-asr (`gigaam-v3-rnnt` без пунктуации vs `v3_e2e_rnnt` с пунктуацией). Проверить через `huggingface_hub` listing для `istupakov/gigaam-v3-onnx`.
|
||||
- Если E2E RNN-T сохраняет качество и приемлемую скорость на i5 — сделать его
|
||||
русским CPU-дефолтом, OpenVINO оставить явной опцией.
|
||||
- Если лучший вариант зависит от языка — выбрать language-aware default:
|
||||
GigaAM v3 для русского, multilingual-модель для смешанной речи.
|
||||
- Если модели GigaAM проигрывают по пунктуации/смыслу — сохранить текущий
|
||||
model default и лечить OpenVINO через VAD/качественный pipeline.
|
||||
- Если ни один вариант не проходит порог качества и скорости — не менять
|
||||
дефолт, оставить предупреждения и явный выбор backend.
|
||||
|
||||
---
|
||||
|
||||
@@ -50,15 +108,28 @@
|
||||
|
||||
### Whisper medium галлюцинации на длинных файлах с тихими фрагментами
|
||||
|
||||
**Что:** Воспроизвести и зафиксировать класс ошибок: `12-02-37` теряет 17 минут хвоста, `Vasya` имеет 5-минутные блоки повторов, появляются несуществующие имена (`Валерий Сюткин`). Источник: agent-judge в [ADR-006](adr/006-onnx-asr-backend.md#класс-ошибок-whisper-medium--галлюцинации-на-длинных-файлах-с-тихими-фрагментами).
|
||||
**Статус:** воспроизведено 2026-08-10. Помимо примеров из
|
||||
[ADR-006](adr/006-onnx-asr-backend.md#класс-ошибок-whisper-medium--галлюцинации-на-длинных-файлах-с-тихими-фрагментами),
|
||||
на записи `2026-07-29 13-58-39.mp4` минимальный тест 02:00–03:30 стабильно
|
||||
получает 14 одинаковых сегментов после окончания речи. На 30-секундном окне
|
||||
только с речью повторов нет. `openvino-genai` 2026.3 и
|
||||
`no_repeat_ngram_size=3` результат не меняют. Корень проблемы — длинные
|
||||
безречевые участки, которые текущий OpenVINO backend целиком передаёт в
|
||||
`WhisperPipeline` без VAD.
|
||||
|
||||
**Возможные направления:**
|
||||
|
||||
- Добавить VAD перед OpenVINO WhisperPipeline и сохранить исходные таймкоды —
|
||||
наиболее прямое лечение подтверждённой причины.
|
||||
- Ограничить длину чанка для openvino-medium (chunk_length параметр в WhisperPipeline).
|
||||
- Внедрить `compression_ratio_threshold` / `log_prob_threshold` фильтры через переписывание pipeline (как у CTranslate2). Уже частично описано в [docs/gpu.md «Качественный pipeline для OpenVINO»](gpu.md#качественный-pipeline-для-openvino).
|
||||
- Переключить русский CPU-дефолт на победителя сравнительного GigaAM-бенчмарка.
|
||||
- Предупреждать пользователя при `--device openvino-cpu` для файлов >30 мин.
|
||||
|
||||
**Приоритет:** средний — пока есть `gigaam-v3` как альтернатива для русского. Критично, если openvino остаётся единственным вариантом для пунктуации (отпадает после теста RNN-T).
|
||||
**Приоритет:** высокий — проблема затрагивает текущий OpenVINO CPU-путь, а
|
||||
целевая аудитория включает ноутбуки с Intel Core i5 11-го поколения. GigaAM v3
|
||||
остаётся рабочей явной альтернативой для русского, но выбор безопасного
|
||||
auto/default требует сравнительного бенчмарка.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user