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 сохранена и не удаляется.
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
# 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, 1–5)
|
||||
|
||||
| Отрывок | 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-экономия и английский контент.
|
||||
+13
@@ -286,6 +286,19 @@ VAD) доступен только через CTranslate2, т.е. на CPU и NV
|
||||
вариант (включая int8_float32) вызывает галлюцинации — float32 аккумулятор не спасает
|
||||
глубокую модель на GPU. Вывод: **float16 остаётся оптимальным дефолтом для CUDA**.
|
||||
|
||||
### NVIDIA Parakeet TDT — проверено, отклонено
|
||||
|
||||
Оценивалась гипотеза: multilingual Parakeet TDT 0.6B v3 через `onnx-asr` может обойти
|
||||
Whisper medium int8 на x86 CPU. На двух 15-минутных отрывках реальных русских ИТ-встреч
|
||||
(Intel i7-11800H) Parakeet показал **2.7x преимущество по скорости** и **-35% RAM**, но
|
||||
**качество ниже** — систематическая редукция тихих реплик менти до `Mm-hmm`, вставки
|
||||
кусков польского/испанского, сильное искажение ИТ-терминов. Попытка тюнинга Silero VAD
|
||||
threshold не помогла — проблема inherent для модели на тихой русской речи.
|
||||
|
||||
Код бэкенда не вмержен в master; эксперимент сохранён в ветке
|
||||
`feature/parakeet-backend`. Подробности и когда стоит пересмотреть —
|
||||
[ADR-005](adr/005-parakeet-evaluation.md).
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### CUDA не обнаружен
|
||||
|
||||
Reference in New Issue
Block a user