From 2a7d3605e7f1eced1c88d4fce67546fdce848a81 Mon Sep 17 00:00:00 2001 From: Dmitriy Dementiev Date: Mon, 23 Mar 2026 16:45:14 +0300 Subject: [PATCH] =?UTF-8?q?docs:=20=D0=B4=D0=B5=D1=82=D0=B0=D0=BB=D0=B8=20?= =?UTF-8?q?=D0=B8=D0=BD=D1=82=D0=B5=D0=B3=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20?= =?UTF-8?q?whisper.cpp=20+=20Vulkan?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Модели (GGML формат), сборка, Python-биндинги, subprocess-подход. Следующий шаг — прототип в WSL. Co-Authored-By: Claude Opus 4.6 (1M context) --- docs/research-amd-acceleration.md | 52 +++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 3 deletions(-) diff --git a/docs/research-amd-acceleration.md b/docs/research-amd-acceleration.md index bcd8bd0..9e733fa 100644 --- a/docs/research-amd-acceleration.md +++ b/docs/research-amd-acceleration.md @@ -109,9 +109,55 @@ vulkan = ["pywhispercpp>=0.4"] | AMD NPU (XDNA 1) | ⚠️ ограничен | частичное | высокая | средняя | | WinML (будущее) | ⏳ не готов | неизвестно | средняя | — | +## Детали по whisper.cpp + Vulkan + +### Модели (GGML .bin формат, НЕ GGUF) + +Скачивать с https://huggingface.co/ggerganov/whisper.cpp/tree/main + +| Модель | Файл | Размер | +|--------|------|--------| +| medium f16 | `ggml-medium.bin` | 1.53 ГБ | +| medium q8_0 | `ggml-medium-q8_0.bin` | 823 МБ | +| medium q5_0 | `ggml-medium-q5_0.bin` | 539 МБ | +| large-v3 f16 | `ggml-large-v3.bin` | 3.1 ГБ | +| large-v3 q5_0 | `ggml-large-v3-q5_0.bin` | 1.08 ГБ | +| large-v3-turbo f16 | `ggml-large-v3-turbo.bin` | 1.62 ГБ | +| large-v3-turbo q8_0 | `ggml-large-v3-turbo-q8_0.bin` | 874 МБ | + +### Python-биндинги + +**pywhispercpp** (v1.4.1) — pip wheel CPU-only. Для Vulkan нужна сборка из исходников: +```bash +GGML_VULKAN=1 pip install git+https://github.com/absadiki/pywhispercpp +``` +Требует: VulkanSDK, cmake, C++ компилятор. + +### Subprocess-подход (альтернатива) + +whisper-cli принимает WAV 16kHz mono, выдаёт JSON с таймкодами: +```bash +whisper-cli -m ggml-medium.bin -f audio.wav -l ru -oj -of output +``` + +Для видео/mp3 нужна предварительная конвертация через ffmpeg (PyAV уже есть в зависимостях). + +### Сборка whisper.cpp с Vulkan + +```bash +# Linux/WSL +sudo apt install cmake build-essential libvulkan-dev +git clone https://github.com/ggml-org/whisper.cpp +cd whisper.cpp +cmake -B build -DGGML_VULKAN=ON -DCMAKE_BUILD_TYPE=Release +cmake --build build --config Release -j$(nproc) +# -> build/bin/whisper-cli +``` + ## Рекомендуемый план -1. **Прототип** whisper.cpp + Vulkan бэкенда (pywhispercpp или subprocess) -2. **Бенчмарк** на том же тестовом файле — сравнить скорость и качество GGUF vs CTranslate2 +1. **Прототип в WSL** — собрать whisper.cpp с Vulkan, прогнать тестовый файл +2. **Бенчмарк** на том же тестовом файле — сравнить скорость и качество GGML vs CTranslate2 3. **Решение** о включении в основной проект по результатам бенчмарка -4. NPU — отложить до XDNA 2 или до появления pip-пакета от AMD +4. Если ОК — оформить как бэкенд `backends/whisper_cpp.py` +5. NPU — отложить до XDNA 2 или до появления pip-пакета от AMD