Files
local-transcriber/docs/adr/006-onnx-asr-backend.md
T
ddadminandClaude Opus 4.7 3b7eb603ae docs(adr): ADR-006 onnx-asr — независимая валидация через agent-judge
Переименовано из 005 в 006: на master уже есть ADR-005-parakeet-evaluation
от прошлого эксперимента (Opus, отклонение Parakeet), нумерация бы конфликтовала.

Качество замерено независимым agent-judge'ем по методологии ADR-005
на 9 транскриптах (3 файла × 3 backend), а не субъективными пометками
"Отлично/Хорошо" на одном файле, как в первой версии. Артефакты транскриптов
лежат в /mnt/c/ddmitry/Videos/OBS/ для верификации.

Подтверждены три класса проблем Parakeet из ADR-005 (Mm-hmm-редукция,
иноязычные вставки, искажение IT-терминов) на новом наборе файлов
с конкретными цитатами и таймкодами.

Обнаружен новый класс ошибок Whisper medium: галлюцинации на длинных
файлах с тихими фрагментами (до 17 минут потеряно на одном файле,
многоминутные повторы, приписывание несуществующих имён). Не описано
в ADR-005, потому что там были 15-минутные отрывки.

GigaAM v3 подтверждён как лучший backend для русских встреч на CPU
(summary utility 4/5 на всех файлах, единственный без потерь содержания).
Рекомендация в README уточнена: parakeet-v3 для русского не подходит,
openvino-cpu medium — только для встреч ≤30 мин с равномерной громкостью.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 23:35:04 +03:00

14 KiB
Raw Blame History

ADR-006: onnx-asr бэкенд — GigaAM v3 как CPU-default для русских встреч

Статус: Принято Дата: 2026-04-25

Контекст

Целевая аудитория local-transcriber — пользователи с Intel iGPU / CPU, без дискретного NVIDIA GPU. Существующие CPU-бэкенды (faster-whisper, OpenVINO) дают 0.5-6x RTF для средних моделей — транскрипция часовой записи занимает 10-120 минут.

onnx-asr — легковесная обёртка (onnxruntime + numpy) над ONNX-моделями Parakeet, GigaAM, FastConformer и Canary. Заявляет 30-90x RTF на CPU при сравнимом с Whisper качестве для русского языка.

ADR-005 ранее отклонил Parakeet TDT 0.6B v3 для целевого use case на двух 15-минутных файлах с тихим микрофоном менти и плотной IT-терминологией. ADR-006 повторяет эксперимент на новом наборе файлов (22-81 мин, разной громкости), добавляет GigaAM v3 как кандидата для русской речи и проверяет три класса проблем Parakeet из ADR-005 на актуальном материале.

Эксперимент

Три реальных русскоязычных записи установочных встреч (формат ментор↔менти, mp4, 22-81 мин), ноутбук с Intel i7-11800H (CPU-only). Сравнивались три CPU-бэкенда:

  • gigaam-v3 (onnx-asr GigaAM v3 CTC, int8, monolingual ru, без пунктуации)
  • parakeet-v3 (onnx-asr Parakeet TDT 0.6B v3, int8, multilingual)
  • ov-medium (OpenVINO Whisper medium int8) — baseline

Качественная оценка проведена независимым agent-judge'ем по методологии ADR-005 (4 критерия: completeness / term accuracy / fluency / summary utility, шкала 1-5). Транскрипты сохранены в /mnt/c/ddmitry/Videos/OBS/<basename>.{onnx-gigaam,parakeet-v3,ov-medium}.md и доступны для верификации.

Скорость

Файл Длит. gigaam-v3 parakeet-v3 --ru OpenVINO medium
10-59-59 22:26 81с (16.6×) 116с (11.6×) 265с (5.1×)
Vasya 45:51 95с (29×) 138с (20×) 455с (6×)
12-02-37 1:20:44 170с (28.5×) 251с (19.3×) 779с (6.2×)

GigaAM в 3-5× быстрее OpenVINO medium, Parakeet в 2.5-3.5× быстрее.

Качество (agent-judge, 1-5)

Файл Backend Completeness Term accuracy Fluency Summary utility
10-59-59 gigaam 5 4 4 4
10-59-59 parakeet 4 2 2 2
10-59-59 ov-medium 3 4 4 2
Vasya gigaam 3 4 4 4
Vasya parakeet 2 2 2 2
Vasya ov-medium 2 3 2 2
12-02-37 gigaam 4 3 3 4
12-02-37 parakeet 3 2 1 1
12-02-37 ov-medium 2 3 2 1

GigaAM — единственный backend, дающий summary utility 4/5 на всех трёх файлах. Parakeet и ov-medium систематически уступают по разным причинам (см. ниже).

Класс ошибок: Parakeet — три проблемы из ADR-005 воспроизведены

Все три класса систематических ошибок Parakeet, описанные в ADR-005, воспроизводятся на новом наборе файлов:

1. Mm-hmm/Yeah-редукция тихих реплик менти. Массово на всех трёх файлах:

  • Vasya [04:56-09:33] блок из ~10 реплик: Mm-hmm. Mm-hmm. Mm. That's nice. Mm-hmm. Mm-hmm. — полностью утеряны ответы менти на вопросы ментора.
  • 10-59-59 [19:03] Yeah. Иногда лучше дышали в облаке.
  • 12-02-37 [00:00:01] I mean. вместо «не пони…».

2. Вставки иностранных языков посреди русского. На этом наборе ещё агрессивнее, чем в ADR-005 (там был только польский):

  • 10-59-59 [00:08] Secondo, Alice. The mutual microphone. — итальянский+английский для «секунду, Алиса, замьючен микрофон».
  • 10-59-59 [22:02] Ah si va sur. Well. — испано-французская смесь в финальном прощании.
  • Vasya [27:31] Mas o żegnienie. — польский в полностью русской встрече.
  • 12-02-37 [10:38] Запроси к Każdemu Actually, таблица классная — русско-польско-английский в одной фразе.
  • 12-02-37 [01:03:23] No już je wsie. — польский («ну уже всё»).

3. Искажение IT-терминов и имён компаний:

  • 10-59-59 [02:21] не Аринадата и не Терринте игра вместо «Аренадата и Тере-Интегра» (имена работодателей).
  • 10-59-59 [01:23] Запромбанке (с unk-токенами) вместо «Газпромбанк».
  • 12-02-37 [02:35] Basic space clear cause вместо «база данных кликхаус».
  • 12-02-37 [06:12] Поскре это не колочный, чтобы это греплан. Ловочная. — Postgres/Greenplum/«колоночная» искажены до неразборчивости.
  • 12-02-37 [16:53] своеобресть вместо «Wildberries» — целевой работодатель в задаче, имя потеряно.

Класс ошибок: Whisper medium — галлюцинации на длинных файлах с тихими фрагментами

Не описано в ADR-005 (там были 15-минутные отрывки) — обнаружено только на длинных файлах:

  • 12-02-37 [01:03:43-01:20:14]17 минут хвоста встречи забиты галлюцинированными повторами: «Вместе с вами мы решим, как мы будем работать с вами», «Это не то, чтобы не было», «Выбор? Нет. Выбор? Нет.». Бытовая часть встречи целиком потеряна.
  • 12-02-37 [19:54-20:49] — 11 повторов «И вот, как я вам рассказываю, это очень интересно» вместо реального решения SQL-задачи.
  • Vasya [10:08-11:59] — ~6 повторов «Но если вы хотите, чтобы мы не разговаривали, то вы можете.» (~2 минуты галлюцинации).
  • Vasya [36:00-36:30] — 14 повторов «Ага. Ага.» (loop).
  • Vasya [45:51]«Субтитры сделаны с помощью СМС, аппарата — Лариса.» — классический Whisper-артефакт «титров».
  • 10-59-59 [10:56-11:40] — строка из ~1000 символов «ааааа…» — галлюцинация на тихом фрагменте, проглатывает 30 секунд аудио.
  • 12-02-37 [01:18:47] — приписан несуществующий человек «Валерий Сюткин».

Это критичный класс ошибок: текст выглядит правдоподобно, и читатель конспекта не отличит галлюцинацию от реального содержания без возврата к аудио. Хуже потери — потому что вводит в заблуждение.

Класс ошибок: GigaAM — локальные искажения латиницы и имён

GigaAM monolingual ru, латиницу не выдаёт. На транскрипте:

  • «эскель»/«эсквель» вместо SQL (везде кириллицей).
  • «гитам ардауна» вместо git и markdown (Vasya [14:14]).
  • «арендата»/«арендат»/«арендода» для «Аренадата» (10-59-59 [02:21]) — три разных варианта одного имени.
  • «дв один» вместо DEV1 (12-02-37 [00:50:56]).
  • «яндекс тим под яндекс тим» для «Яндекс ТимКод» (12-02-37 [00:14:15]).

Mm-hmm-редукция и иностранные вставки не обнаружены: monolingual архитектура исключает language-confusion, тихие реплики менти остаются как русские «угу/да/ну».

Эти ошибки локальны, предсказуемы и легко чинятся LLM-этапом нормализации без знания исходного аудио (восстановить SQL, Greenplum, ClickHouse, имена компаний из контекста).

Решение

Принять onnx-asr как экспериментальный бэкенд с явным --device onnx. GigaAM v3 — рекомендуемая модель для русских встреч на CPU.

Бэкенд не в auto-detect — только при явном указании пользователем (политика experimental backend, как для openvino).

Модели:

  • gigaam-v3 — рекомендуемая для русских встреч на CPU. 17-29× RTF, summary utility 4/5 на всех протестированных файлах. Без пунктуации, без латиницы; ошибки локальны, чинятся LLM-нормализацией.
  • parakeet-v3 — multilingual (25 языков), формально доступен. Не рекомендуется для русских встреч: Mm-hmm-редукция и иноязычные вставки воспроизводятся систематически (см. выше). Уместен только для англоязычного контента.

Обе модели в int8-квантизации (~300 MB).

Последствия

  • Пользователи CPU-only с русскоязычным контентом получают 3-5× ускорение по сравнению с OpenVINO medium при превосходящем качестве (4/5 vs 1-2/5 summary utility на длинных файлах).
  • Whisper medium (--device openvino-cpu) остаётся допустимым для коротких (≤30 мин) встреч с равномерной громкостью; на длинных файлах с тихими участками он галлюцинирует целыми блоками — этот риск зафиксирован, но решение не выводит OpenVINO из списка дефолтов (часть пользователей всё ещё нуждается в пунктуации, и для коротких файлов галлюцинации не воспроизводятся).
  • Parakeet-v3 формально доступен, но в README рекомендуется только для англоязычного контента — для русского явно не годится.
  • GPU faster-whisper large-v3 остаётся эталоном по качеству (для пользователей с NVIDIA GPU).
  • Пост-процессинг GigaAM-транскрипта LLM-этапом нормализации (восстановление латинских терминов и имён компаний) — рекомендуемая практика для финального конспекта.

Открытые вопросы / следующие шаги

  • Galлюцинации Whisper medium на длинных файлах — отдельный продуктовый риск, требующий собственного исследования. Возможно, имеет смысл ограничить максимальную длину чанка для openvino-medium, или дать предупреждение пользователю.
  • GigaAM v3 RNN-T (вариант gigaam-v3-rnnt вместо gigaam-v3-ctc) — заявлен как немного качественнее CTC, не тестировался. Может закрыть часть GigaAM-ошибок на латинице.
  • Canary (nemo-canary-1b-v2) — тяжелее, но multilingual + пунктуация. Кандидат на «лучшее качество за разумную скорость» для тех, кому важна пунктуация.
  • Auto-detect onnx: после стабилизации в production-использовании (несколько недель) — рассмотреть включение в auto-detect как первый CPU-бэкенд (ниже CUDA, выше OpenVINO).

Отклонённые альтернативы

Альтернатива Почему отклонена
NeMo Parakeet напрямую (без onnx-asr) Требует PyTorch + CUDA, Python ≥ 3.12, ~2 GB зависимостей — слишком тяжело для CLI
Замена faster-whisper на onnx-asr faster-whisper поддерживает 99+ языков и пунктуацию, остаётся лучшим GPU-бэкендом
GigaAM как auto-detect default Экспериментальный бэкенд, политика — не сюрпризить существующих пользователей; включение в auto-detect — после периода стабилизации
Parakeet-v3 как multilingual default Воспроизведённые проблемы из ADR-005 (Mm-hmm-редукция, иноязычные вставки) делают его непригодным для русского; для других языков не валидировано в этом эксперименте