Files
local-transcriber/docs/adr/005-parakeet-evaluation.md
T
ddadmin 0b5703a0e3 docs(adr): ADR-005 — Parakeet TDT оценён и отклонён для русских ИТ-встреч
- Зачем:
  - зафиксировать в master результат эксперимента с Parakeet-бэкендом:
    что проверяли, какие цифры получили, почему оставили Whisper как дефолт.
    Знания доступны, код — в экспериментальной ветке feature/parakeet-backend.
- Что:
  - docs/adr/005-parakeet-evaluation.md — полный контекст решения: гипотеза,
    методология, метрики скорости (Parakeet 2.7x быстрее, -35% RAM),
    качество (Summary utility 2-3/5 vs 4/5 у Whisper), систематические
    проблемы модели на тихой русской речи, VAD-тюнинг не помог, условия
    пересмотра решения в будущем (английский / live-captioning / русские
    specialized-модели через onnx-asr).
  - docs/gpu.md — короткая заметка под «Потенциальные направления развития»
    со ссылкой на ADR-005.
- Проверка:
  - cat docs/adr/005-parakeet-evaluation.md.
  - grep -A5 "Parakeet TDT — проверено" docs/gpu.md.
  - ветка feature/parakeet-backend сохранена и не удаляется.
2026-04-19 01:26:20 +03:00

103 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ADR-005: NVIDIA Parakeet TDT — оценено, отклонено для дефолтного use case
**Статус**: Отклонено (оставлено в экспериментальной ветке)
**Дата**: 2026-04-19
## Контекст
ADR-003 и ADR-004 зафиксировали стратегию: CTranslate2 на CPU (качество) +
OpenVINO (скорость на x86). Оба бэкенда — Whisper. Возникла гипотеза, что
**NVIDIA Parakeet TDT 0.6B v3** может выйти за пределы этого trade-off: модель
заявлена multilingual (25 языков включая русский), имеет ONNX-порт
[istupakov/parakeet-tdt-0.6b-v3-onnx](https://huggingface.co/istupakov/parakeet-tdt-0.6b-v3-onnx),
работает через `onnx-asr` + Silero VAD. Есть позитивные отзывы (напр.
приложение Handy использует Parakeet для dictation в реальном времени).
Основное применение проекта — транскрипция русскоязычных ИТ-встреч
(ментор ↔ менти, ~15–60 мин, ноутбучный микрофон). Если Parakeet обойдёт
Whisper medium int8 по скорости при сравнимом качестве, или по качеству при
сравнимой скорости — это основание поменять дефолт.
## Эксперимент
Реализован полный бэкенд в ветке `feature/parakeet-backend` (ONNX Runtime CPU EP,
Silero VAD, cache-first model loading). Прогнан автоматический бенчмарк
на двух 15-минутных отрывках реальных установочных встреч
(`scripts/quality_bench.py` в ветке), CPU Intel i7-11800H.
Качество оценивал агент-судья по шкале 1–5 по критериям completeness /
term accuracy / fluency / summary utility — на пригодность транскрипта
для построения конспекта без возврата к аудио.
### Скорость и ресурсы
| Отрывок | Бэкенд | Wall | RTFx | Peak RSS |
|---|---|---|---|---|
| artur-intro (15 мин) | **parakeet-int8** | 129.5s | **6.92x** | 2.21 GB |
| artur-intro (15 мин) | openvino-medium-int8 | 354.2s | 2.54x | 3.50 GB |
| mar15-mid (15 мин) | **parakeet-int8** | 159.6s | **5.64x** | 2.65 GB |
| mar15-mid (15 мин) | openvino-medium-int8 | 428.4s | 2.10x | 3.52 GB |
**Parakeet в 2.7x быстрее и использует на ~35% меньше RAM.**
### Качество (Summary utility, 15)
| Отрывок | Parakeet int8 | Whisper medium int8 |
|---|---|---|
| artur-intro | **2** | **4** |
| mar15-mid | **3** | **4** |
Систематические проблемы Parakeet на русской речи с низкой громкостью:
1. **Редукция коротких реплик менти до `Mm-hmm`/`Yeah`** — теряется
значительная часть диалога (низкий уровень микрофона менти).
2. **Вставки кусков польского/испанского/немецкого** посреди русской речи
(`Miejsce w sześć zajmie`, `Que salviosa`, `Genial positions`).
3. **Сильное искажение ИТ-терминов и бытовых выражений**
`Pretty subs` вместо «пройти собес», `Состем основ` вместо «система контроля
версий», `І на глуп Джой` вместо `inner loop join`.
Whisper medium int8 даёт связный русский текст с нормальной пунктуацией;
искажения присутствуют (`капка` вместо Kafka, одна галлюцинация
«Добро пожаловать в наш канал!» на паузе), но не критичны для конспекта.
### Попытка тюнинга — Silero VAD threshold
Гипотеза: дефолтный `threshold=0.5` обрезает тихие реплики менти. Проверено
на 0.5/0.3/0.2 — снижение порога **уменьшает** объём транскрипта
(Parakeet хуже декодирует длинные склеенные сегменты с разреженной речью)
и **не снижает** частоту `Mm-hmm`-редукций. Проблема inherent для модели
на тихом русском диалоге, не артефакт VAD.
## Решение
**Parakeet TDT 0.6B v3 не принимается как дефолтный или опциональный бэкенд
для целевого use case.** Whisper medium int8 остаётся предпочтительным —
несмотря на 2.7x проигрыш по скорости, он даёт транскрипт, из которого можно
сделать конспект без возврата к аудио. Для русской речи с варьирующейся
громкостью микрофона Parakeet v3 недостаточно устойчив.
Код бэкенда **не мержится в master**. Экспериментальная ветка
`feature/parakeet-backend` сохраняется как reference для будущих экспериментов.
## Последствия
- Архитектура pluggable backends (ADR-003) подтвердила ценность: интегрировать
и оценить новый бэкенд оказалось недорого.
- Surface area master не растёт: нет `--device parakeet-cpu`, нет зависимости
`onnx-asr`, нет новой ветки в CLI.
- Если в будущем появится интерес — ветка `feature/parakeet-backend` содержит
готовый бэкенд (13 задач, ~19 тестов), скрипты бенчмарка и VAD-тюнинга.
## Когда стоит пересмотреть решение
1. **Англоязычный контент** — Parakeet обучался преимущественно на английском,
для native English встреч выигрыш в скорости может окупить качество.
2. **Live-captioning / dictation** (как в Handy) — другой use case, близкий
микрофон + короткие фразы, проблемы редукции неактуальны.
3. **Русские specialized-модели через ту же обвязку** `onnx-asr`:
`gigaam-v3-rnnt` (SberDevices), `nemo-fastconformer-ru-rnnt` (NVIDIA),
`t-one-ctc` (T-Bank). Это отдельная ветка экспериментов, не Parakeet.
4. **Слабые машины с ограниченной RAM** — Parakeet 2.2 GB vs Whisper 3.5 GB
на 15-мин аудио. Если важна RAM-экономия и английский контент.