auto(по умолчанию) — CUDA → OpenVINO GPU → OpenVINO CPU → CPU (первый доступный)cuda— строго NVIDIA GPU, ошибка если недоступенopenvino— авто-выбор OpenVINO GPU или CPUopenvino-gpu— строго Intel GPU через OpenVINOopenvino-cpu— строго CPU через OpenVINO (ускорение 2-4x на x86)cpu— строго CPU (faster-whisper/CTranslate2)
| Оборудование | Рекомендуемый --device |
Бэкенд | Ожидаемая скорость |
|---|---|---|---|
| NVIDIA GPU (6+ GB VRAM) | auto / cuda |
faster-whisper (CTranslate2) | 7-19x реалтайм |
| Intel Arc iGPU / dGPU | auto / openvino-gpu |
OpenVINO GenAI (GPU) | TBD |
| Intel/AMD x86 CPU | auto / openvino-cpu |
OpenVINO GenAI (CPU) | 3-6x реалтайм* |
| Любой CPU (fallback) | cpu |
faster-whisper (CTranslate2) | ~1.5x реалтайм |
| Apple Silicon (macOS) | cpu |
faster-whisper (CTranslate2) | ~2x реалтайм |
* По результатам тестирования на Intel и AMD CPU. Реальная скорость зависит от CPU и модели.
OpenVINO ускоряет inference на x86 процессорах (Intel и AMD) через оптимизированные инструкции (AVX2, AVX-512, VNNI, AMX). Ставится автоматически на Linux и Windows (x86_64/AMD64).
- Модели: предконвертированные из HuggingFace (int8/fp16)
- Дефолт:
medium+int8(дляlarge-v3автоматически выбираетсяfp16) - Аудиодекодирование: через PyAV (бандлит FFmpeg), системный ffmpeg не нужен
| Модель | int8 | fp16 |
|---|---|---|
| tiny | OpenVINO/whisper-tiny-int8-ov | — |
| base | — | OpenVINO/whisper-base-fp16-ov |
| small | OpenVINO/whisper-small-int8-ov | — |
| medium | OpenVINO/whisper-medium-int8-ov | OpenVINO/whisper-medium-fp16-ov |
| large-v3 | OpenVINO/whisper-large-v3-int8-ov | OpenVINO/whisper-large-v3-fp16-ov |
Реальные записи рабочих созвонов (русский, техтермины: SQL, PostgreSQL, LDAP, DLP и др.).
Скорость (эталонный файл 16 мин, OpenVINO, medium int8):
| CPU | medium int8 | large-v3 fp16 | CPU float32 (baseline) |
|---|---|---|---|
| Intel Ultra 7 255H | 122с | 411с | — |
| AMD Ryzen 7 8845H | 185с | 416с | 734с |
| Intel i7-11800H (WSL2) | 171-205с | — | 658с |
Ускорение vs CPU float32: 3-6x в зависимости от CPU.
OpenVINO small int8 (Intel i7 WSL2):
| Файл | small int8 | medium int8 |
|---|---|---|
| 16 мин | 93с | 171с |
| 42 мин | 153с (~16x реалтайм) | 413с |
Качество (сравнение на одном файле, 16 мин, OpenVINO int8/fp16, Intel CPU):
| small int8 | medium int8 | large-v3 fp16 | |
|---|---|---|---|
| Время (16 мин) | 93с | 171с | 416с |
| Время (42 мин) | 153с | 413с | — |
| Ключевые слова | искажения ("бокап", "рецензия") | единичные ляпы | корректно |
| Пунктуация | слабая | базовая | хорошая |
| Галлюцинации | нет | нет | нет |
- small — для быстрого сканирования большого объёма видео по маске (
*.mp4). Ошибки в отдельных словах; для обработки ИИ (МОМ, конспект) рискованно — "рецензия" вместо "лицензия" может исказить смысл. - medium — для повседневного использования и обработки ИИ. Ключевые термины верные, единичные ляпы не влияют на смысл конспекта. Оптимальный баланс скорости и качества.
- large-v3 — для важных записей, где нужна дословная точность. Лучшая пунктуация и связность. На OpenVINO (416с) быстрее, чем medium на чистом CPU (734с) — лучшее качество при выше скорости.
При --device cpu используется faster-whisper на основе CTranslate2. Этот бэкенд медленнее
OpenVINO, но обеспечивает лучшее качество благодаря развитому pipeline декодирования.
transcribe meeting.mp4 --device cpu --compute-type int8_float32int8_float32 — int8 квантизация весов с float32 аккумулятором. Даёт 1.5x ускорение
vs float32 при сопоставимом качестве (протестировано на русском языке с техтерминами).
| compute_type | Скорость* | Качество | Когда использовать |
|---|---|---|---|
int8_float32 |
~460с | Отлично | Рекомендуется — лучший баланс |
float32 |
~880с | Отлично (эталон) | Если важна максимальная точность |
int8 |
быстрее | Хорошо, но бывают галлюцинации | Не рекомендуется для длинных записей |
* Замеры на AMD Ryzen 7 8845H, medium, запись 14:41, 8 потоков.
CTranslate2 по умолчанию использует 4 потока. На многоядерных CPU рекомендуется задать число потоков равным числу физических ядер (не виртуальных):
transcribe meeting.mp4 --device cpu --compute-type int8_float32 --threads 8Замеры (Intel i7-11800H, 8 ядер / 16 потоков, medium int8_float32, 16 мин файл):
| --threads | Время | Ускорение |
|---|---|---|
| 0 (дефолт = 4) | 320с | baseline |
| 8 (физ. ядра) | 277с | +13% |
SMT/Hyper-Threading не помогает — 16 потоков на 8-ядерном CPU медленнее, чем 8.
При одной и той же модели (medium) CTranslate2 даёт заметно лучше распознавание, чем OpenVINO. Разница не в квантизации, а в pipeline декодирования:
| Механизм | CTranslate2 (faster-whisper) | OpenVINO GenAI |
|---|---|---|
| Temperature fallback | ✅ до 5 попыток с ростом temperature | ❌ один проход |
| Фильтр по compression_ratio | ✅ отсекает повторы | ❌ нет |
| Фильтр по log_prob | ✅ отсекает неуверенные сегменты | ❌ нет |
| no_speech_threshold | ✅ детекция тишины | ❌ нет |
| VAD (Silero) | ✅ опционально | ❌ нет |
| condition_on_previous_text | ✅ с умным сбросом |
Эти эвристики критичны для русской разговорной речи с паузами и перебивками.
| Сценарий | Рекомендация |
|---|---|
| Быстрый черновой транскрипт | --device openvino-cpu (int8, ~240с) |
| Качественный транскрипт для суммаризации | --device cpu --compute-type int8_float32 (~460с) |
| Максимальная точность | --device cpu --compute-type float32 (~880с) |
На NVIDIA GPU дефолт — float16, и для большинства случаев это оптимальный выбор.
Скорость (файл 16 мин, русский язык):
| Модель | float16 | int8_float32 | int8_float16 |
|---|---|---|---|
| medium | 53с (~18x) | 64с (~15x) | 54с (~18x) |
| large-v3 | 86с (~11x) | 113с (~8.5x) | 125с (~7.7x) |
Скорость (файл 46 мин, русский язык):
| Модель | float16 |
|---|---|
| medium | 127с (~22x реалтайм) |
| large-v3 | 271с (~10x реалтайм) |
Качество (файл 16 мин):
| Модель | float16 | int8_float32 | int8_float16 |
|---|---|---|---|
| medium | Отлично | Отлично (≈float16) | Хорошо (1-2 ошибки) |
| large-v3 | Хорошо (ед. галлюцинации) | Плохо (повтор "Ага" ×18) | Неприемлемо (мусор, иероглифы) |
Качество (файл 46 мин):
| Модель | float16 | Проблемы |
|---|---|---|
| medium | Отлично | Единичные ляпы ("email" вместо "ML"), стабилен |
| large-v3 | Плохо | Галлюцинации на 3+ языках (китайский, арабский), повторы фраз, "Аминь" вместо "Угу" |
float16— оптимальный дефолт: самый быстрый и стабильныйint8_float32не дал выигрыша: на 20% медленнее float16, качество для medium сопоставимо, для large-v3 — деградацияint8_float16: по скорости ≈ float16 для medium, но large-v3 даёт мусорint8: рискует галлюцинациями на large-v3 и длинных записях (повтор фраз ×25)- medium устойчивее к квантизации, чем large-v3 — все варианты compute_type дают приемлемый результат
- large-v3 на длинных записях (>20 мин): галлюцинации даже с float16 — medium надёжнее
Библиотека cuBLAS ставится автоматически (зависимость nvidia-cublas-cu12 подтягивается при установке).
Дополнительных шагов не требуется.
На ARM (aarch64) cuBLAS через pip недоступен — нужен системный CUDA toolkit.
Нужен системный CUDA 12 (ctranslate2 4.7 не совместим с CUDA 11 и 13):
winget install -e --id Nvidia.CUDA --version 12.9 # требует запуска от имени администратораПосле установки перезапустите терминал.
| GPU | VRAM | CC | medium float16 | large-v3 float16 | Рекомендация |
|---|---|---|---|---|---|
| RTX 3060 | 6 GB | 8.6 | ✅ | ✅ | medium float16 (дефолт) |
| RTX 4050 | 6 GB | 8.9 | ✅ | ✅ | medium float16 |
| Quadro M3000M | 4 GB | 5.0 | ❌ | ❌ | --device cpu или openvino |
Quadro M3000M и другие GPU с CC < 7.0 (Maxwell, Pascal): CUDA не работает — float16 требует CC ≥ 7.0, float32 падает с ошибкой (CTranslate2 4.x не включает sm_50/sm_60 в пребилды). Используйте
--device cpu --compute-type int8_float32или--device openvino.
Замеры на RTX 3060 Laptop (6 GB) и Intel CPU (WSL2):
| Конфигурация | 16 мин файл | 46 мин файл | Отн. скорость |
|---|---|---|---|
| GPU + medium float16 | 53с | 127с | ~18-22x реалтайм |
| GPU + large-v3 float16 | 86с | 271с | ~10-11x реалтайм |
| GPU + medium int8_float32 | 64с | — | ~15x реалтайм |
| GPU + medium int8_float16 | 54с | — | ~18x реалтайм |
| OpenVINO + small int8 | 93с | 153с | ~10-16x реалтайм |
| OpenVINO + medium int8 | 171-205с | 413с | ~4-6x реалтайм |
| OpenVINO + large-v3 fp16 | 416с | — | ~2.3x реалтайм |
| CPU + medium int8_float32 | ~460с* | — | ~2x реалтайм |
| CPU + medium float32 | 658с (11 мин) | ~26 мин | ~1.5x реалтайм |
| CPU + large-v3 int8 | 839с (14 мин) | ~37 мин | ~1:1 реалтайм |
* Замер CPU int8_float32 на AMD Ryzen 7 8845H (8 потоков), файл 14:41.
Тесты проведены на реальных записях рабочих созвонов (русский язык, технические термины: SQL, PostgreSQL, Greenplum, Airflow, ClickHouse, Docker, CDR, GTP, MAP).
| Конфигурация | Качество (короткие, ≤16 мин) | Качество (длинные, >40 мин) | Проблемы |
|---|---|---|---|
| medium float16 GPU | Отлично | Отлично | Единичные ляпы в терминах ("email" вместо "ML") |
| medium int8_float32 GPU | Отлично | — | Качество ≈ float16, но на 20% медленнее |
| medium int8_float16 GPU | Хорошо | — | 1-2 ошибки |
| large-v3 float16 GPU | Хорошо | Плохо | Галлюцинации на длинных записях (мусор на 3+ языках) |
| large-v3 int8_float32 GPU | Плохо | — | Повтор фраз ("Ага" ×18), искажения |
| large-v3 int8_float16 GPU | Неприемлемо | — | Мусор, китайские/арабские символы, потеря текста |
| large-v3 int8 GPU | Плохо | Плохо | Галлюцинации (фразы ×25), потеря контента |
| medium int8_float32 CPU | Отлично | — | Качество ≈ float32, на уровне облачных сервисов |
| medium float32 CPU | Отлично | Хорошо | Эталон качества |
| large-v3 int8 CPU | Хорошо | — | Без галлюцинаций (на коротких файлах) |
- Указание языка (
--language ru) критично — auto-detect может ошибиться и выдать мусор - medium + float16 на GPU — лучший баланс скорости и качества для любых записей
- large-v3 ненадёжен на длинных записях (>20 мин) — галлюцинации даже с float16; medium стабильнее на любой длине
- medium устойчив к квантизации — все варианты compute_type дают приемлемый результат; large-v3 деградирует катастрофически при любом int8
- CPU: int8_float32 — лучший баланс — 1.5x быстрее float32 при том же качестве
- OpenVINO быстрее, но CPU бэкенд качественнее — разница в pipeline декодирования (temperature fallback, фильтры галлюцинаций), а не в квантизации
Сейчас качественный pipeline декодирования (temperature fallback, фильтры галлюцинаций, VAD) доступен только через CTranslate2, т.е. на CPU и NVIDIA CUDA. Пользователи Intel Arc и AMD Radeon получают скорость OpenVINO, но без защиты от галлюцинаций.
Решение: реализовать temperature fallback, compression_ratio и log_prob фильтры поверх OpenVINO GenAI WhisperPipeline. Эти эвристики — логика на Python (~50-100 строк), не зависящая от inference engine. Это даст Intel Arc / AMD GPU то же качество, что сейчас есть только у CUDA-пользователей.
На CPU int8_float32 показал качество на уровне float32 при 1.5x ускорении.
На GPU (RTX 3060) результат другой: для medium int8_float32 даёт сопоставимое
качество, но на 20% медленнее float16 — выигрыша нет. Для large-v3 любой int8
вариант (включая int8_float32) вызывает галлюцинации — float32 аккумулятор не спасает
глубокую модель на GPU. Вывод: float16 остаётся оптимальным дефолтом для CUDA.
Оценивалась гипотеза: 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.
Убедитесь, что nvidia-smi возвращает информацию о GPU. Драйвер NVIDIA предоставляет libcuda.so.1,
без которого CUDA не работает — его нельзя поставить через pip.
GPU на Windows требует CUDA 12 (ctranslate2 4.7 не совместим с CUDA 11 и 13). Установите:
winget install -e --id Nvidia.CUDA --version 12.9 # требует запуска от имени администратораПосле установки перезапустите терминал.
cuBLAS через pip недоступен на ARM — нужен системный CUDA toolkit.