Детальное сравнение medium/large-v3 × OpenVINO/CTranslate2/Whisper.ai на записи совещания 14:41, русский язык, AMD Ryzen 7 8845H. Рабочий документ для разработки AMD-ускорения. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
124 lines
7.4 KiB
Markdown
124 lines
7.4 KiB
Markdown
# Бенчмарк: качество и скорость транскрипции
|
||
|
||
**Дата**: 2026-03-23
|
||
|
||
## Цель
|
||
|
||
Сравнить качество распознавания нашего приложения (local-transcriber) с облачным
|
||
сервисом Whisper.ai, подобрать оптимальную конфигурацию бэкенд/модель/compute_type.
|
||
|
||
## Тестовый стенд
|
||
|
||
- **CPU**: AMD Ryzen 7 8845H w/ Radeon 780M (3.80 GHz), 8 ядер
|
||
- **GPU**: нет NVIDIA (нет CUDA), есть встроенный Radeon 780M iGPU + Ryzen AI NPU (XDNA)
|
||
- **ОС**: Windows 11 Enterprise
|
||
- **Запись**: совещание 3 участников, 14:41, русский язык, микрофон ноутбука
|
||
|
||
## Конфигурации
|
||
|
||
| # | Модель | Бэкенд | compute_type | Устройство |
|
||
|---|--------|--------|--------------|------------|
|
||
| 1 | medium | OpenVINO | fp16 | CPU |
|
||
| 2 | large-v3 | OpenVINO | fp16 | CPU |
|
||
| 3 | medium | CTranslate2 (faster-whisper) | float32 | CPU |
|
||
| 4 | medium | CTranslate2 (faster-whisper) | int8_float32 | CPU |
|
||
| 5 | — | Whisper.ai (облако) | — | — |
|
||
|
||
## Результаты: скорость
|
||
|
||
| # | Конфигурация | Время, с | Коэфф. к реалтайму (14:41 = 881с) |
|
||
|---|---|---|---|
|
||
| 1 | medium, OpenVINO fp16 | **~240** | 0.27x |
|
||
| 2 | large-v3, OpenVINO fp16 | ~503 | 0.57x |
|
||
| 4 | medium, CT2 int8_float32 | ~599 | 0.68x |
|
||
| 3 | medium, CT2 float32 | ~881 | 1.0x |
|
||
|
||
## Результаты: качество
|
||
|
||
Для оценки выбраны маркерные фразы — технические термины, сложная разговорная речь,
|
||
имена собственные. Каждый маркер проверен вручную по контексту записи.
|
||
|
||
### Техтермины (английские в русской речи)
|
||
|
||
| Термин | #1 OV fp16 | #2 large OV | #3 CT2 f32 | #4 CT2 int8f32 | #5 Whisper.ai |
|
||
|--------|-----------|-------------|------------|----------------|---------------|
|
||
| DWH | ✅ DWH | ❌ ДВХ | ⚠️ ДВХ | ✅ DWH | ⚠️ dvh |
|
||
| Teradata | ✅ TeraData | ⚠️ тирадат | ⚠️ Тирадату | ✅ Teradata | ⚠️ тирадата |
|
||
| NiFi | ✅ NiFi | ❌ "на файл" | ⚠️ Найфай | ✅ NiFi | ⚠️ фай |
|
||
| FineBI | ✅ fineBI | ❌ "фанбой" | ✅ FNBI | ✅ finebi/FNBI | ⚠️ FineBI/NBI |
|
||
| Alation | ❌ "лэйшене" | ❌ "валаши" | ✅ Allation | ✅ Allation | ✅ Allation |
|
||
| ETL | ❌ ETA | ❌ "и ты или" | ✅ ETL | ✅ ETL | ✅ ETL |
|
||
| DBC Tables V | ✅ | ❌ "деби си" | ✅ | ✅ | ✅ |
|
||
| OpenLineage | ⚠️ OpenLinage | ⚠️ "open lineage и о" | ✅ OpenLinage.io | ✅ OpenLinage.io | ✅ Open Lineage.io |
|
||
|
||
### Русская разговорная речь
|
||
|
||
| Фраза (правильно) | #1 OV fp16 | #2 large OV | #3 CT2 f32 | #4 CT2 int8f32 | #5 Whisper.ai |
|
||
|--------------------|-----------|-------------|------------|----------------|---------------|
|
||
| "на другую мониторочку" | ❌ "другом не торчка" | ❌ "другому и" | ✅ "мониторчику" | ⚠️ "мою точку" | ✅ "мониторочку" |
|
||
| "верхнеуровневое" | ⚠️ "верхверх верхне..." | ✅ | ✅ | ✅ | ✅ |
|
||
| "датарентген" | ❌ "госпиталин ген" | ❌ "господа тренды" | ✅ "даторентген" | ✅ "даторентген" | ✅ "датарентген" |
|
||
| "девовские схемы" | ✅ | ❌ "девушки схемы" | ✅ | ✅ | ✅ |
|
||
| "с накиданными правами" | ✅ | ❌ "накиданных бровами" | ✅ | ✅ | ✅ |
|
||
| "Вьюхи" | ❌ "в юхе" | — | ✅ "Вьюхи" | ⚠️ "Yuhi" | ❌ "в юхе" |
|
||
|
||
### Структура и пунктуация
|
||
|
||
| Аспект | #1 OV fp16 | #2 large OV | #3 CT2 f32 | #4 CT2 int8f32 | #5 Whisper.ai |
|
||
|--------|-----------|-------------|------------|----------------|---------------|
|
||
| Пунктуация | слабая | слабая | хорошая | хорошая | средняя |
|
||
| Длина сегментов | ~1 мин | ~1 мин | ~1 мин | ~1 мин | 2–30 сек |
|
||
| Диаризация | нет | нет | нет | нет | есть (условная) |
|
||
|
||
## Ключевые выводы
|
||
|
||
### 1. OpenVINO fp16 ухудшает качество medium
|
||
|
||
OpenVINO даёт **3.7x ускорение**, но fp16-квантизация на CPU вносит заметные ошибки
|
||
в распознавание нечёткой русской речи ("госпиталин ген", "ETA"). При этом английские
|
||
техтермины (DWH, NiFi, FineBI) распознаются хорошо — видимо, они более «чёткие»
|
||
акустически.
|
||
|
||
### 2. large-v3 через OpenVINO — хуже medium
|
||
|
||
Удивительный результат: large-v3 с OpenVINO fp16 деградировал по всем параметрам.
|
||
FineBI → "фанбой", NiFi → "на файл", девовские → "девушки". Гипотеза: fp16 на CPU
|
||
бьёт сильнее по большим моделям из-за накопления ошибок округления.
|
||
|
||
### 3. CTranslate2 float32 — лучшее качество
|
||
|
||
Сравнимо с облачным Whisper.ai, а на некоторых маркерах лучше (Вьюхи, DWH).
|
||
Но **3.7x медленнее** OpenVINO — неприемлемо для длинных записей.
|
||
|
||
### 4. int8_float32 — оптимальный баланс
|
||
|
||
Mixed precision (int8 матрицы, float32 аккумулятор) даёт:
|
||
- **1.5x ускорение** vs float32 (599с vs 881с)
|
||
- Качество практически идентичное float32
|
||
- Техтермины DWH/Teradata/NiFi даже лучше, чем у float32
|
||
|
||
### 5. Whisper.ai — диаризация как преимущество
|
||
|
||
Единственное значимое преимущество облачного сервиса — диаризация спикеров.
|
||
По качеству распознавания наше приложение с CT2 int8_float32 на уровне или лучше.
|
||
|
||
## Рекомендации
|
||
|
||
### Краткосрочно
|
||
|
||
- **Дефолт для CPU без CUDA**: рассмотреть `int8_float32` вместо `float32` — 1.5x быстрее
|
||
при сопоставимом качестве.
|
||
- **OpenVINO fp16 оставить** как быстрый вариант — для случаев, когда скорость важнее
|
||
точности (превью, черновые транскрипты).
|
||
|
||
### Среднесрочно
|
||
|
||
- **DirectML бэкенд** для AMD Radeon iGPU — через onnxruntime-directml можно задействовать
|
||
Radeon 780M. Float16 на GPU (в отличие от CPU-квантизации) не должен терять качество.
|
||
Потенциально 3–5x ускорение при сохранении качества float32.
|
||
|
||
### Долгосрочно
|
||
|
||
- **Ryzen AI NPU (XDNA)** — AMD развивает поддержку, но tooling пока сырой.
|
||
- **Диаризация** — добавить идентификацию спикеров (pyannote-audio или аналоги).
|