Вы целый день искали, как заставить компьютер понимать вашу речь без отправки аудио в облако. Открыли семь вкладок, десять GitHub-репозиториев и уже запутались в аббревиатурах.
Проблема не в недостатке информации. Проблема в её избытке. Каждый проект хвалит себя, но никто не говорит прямо: "Этот вариант тормозит на MacBook Air, но идеален для iPhone".
Я потратил неделю, чтобы разобрать три главных претендента на звание "локального Whisper'а для всех". Вот что получилось.
Кто эти трое и зачем они вам
Прежде чем лезть в терминал, давайте определимся с выбором. Это не про "какой лучше". Это про "какой лучше ДЛЯ ВАС".
| Инструмент | Кому подходит | Главный плюс | Главный минус |
|---|---|---|---|
| WhisperKit | Владельцам Mac с Apple Silicon (M1-M3), кто хочет максимум скорости | Бешеная оптимизация под Neural Engine | Только экосистема Apple |
| Whisper.cpp | Кроссплатформенным разработчикам, любителям терминала | Работает везде: Linux, Windows, macOS, даже в браузере | Нужно компилировать, нет GUI из коробки |
| Scriberr | Тем, кто ненавидит командную строку и хочет GUI сразу | Красивый интерфейс, управление мышкой | Меньше контроля, может тормозить на старом железе |
Важно: Все три используют модели Whisper от OpenAI. Разница не в качестве распознавания (оно одинаковое), а в том, КАК они запускают эти модели на вашем железе.
WhisperKit: когда скорость важнее всего
Если у вас Mac на Apple Silicon, даже не думайте о других вариантах. WhisperKit использует Core ML и Neural Engine так, как задумывали инженеры в Купертино. Результат: транскрипция в 3-5 раз быстрее, чем у конкурентов на том же железе.
1 Установка через Mint (правильный способ)
Не лезьте в Swift Package Manager, если не хотите потратить полдня на борьбу с зависимостями. Используйте Mint - это как Homebrew для Swift утилит.
# Устанавливаем Mint, если ещё нет
brew install mint
# Клонируем и собираем WhisperKit
mint install argmaxinc/WhisperKit
2 Загрузка модели (не нагружайте маленькие модели)
Самая частая ошибка: берут tiny или base и удивляются плохой точности. На Neural Engine даже большие модели летают.
# Скачиваем оптимальную модель для английского
whisperkit download --model large-v2 --quantization int8
# Для русского лучше брать multilingual
whisperkit download --model large-v2 --quantization int8 --repo multilingual
int8 почти не влияет на точность, но уменьшает размер модели в 4 раза. На Neural Engine разницы в скорости между float16 и int8 вы не заметите, но место на диске сэкономите.3 Запуск транскрипции
# Базовая команда
whisperkit transcribe audio.wav --model large-v2-int8
# Для длинных файлов включаем chunking
whisperkit transcribe podcast.mp3 --model large-v2-int8 --chunkLength 30
# Экспорт в разные форматы
whisperkit transcribe interview.m4a --model large-v2-int8 --outputFormat json
На MacBook Pro M2 Pro с моделью large-v2-int8 получаем примерно 1.5x реального времени (часовая запись обрабатывается за 40 минут). Конкуренты на том же железе показывают 3-4x.
Предупреждение: WhisperKit не дружит с Intel Mac. Если у вас старый Mac на процессоре Intel — даже не пробуйте, будет больно медленно. Лучше посмотрите в сторону Whisper + Ollama.
Whisper.cpp: универсальный солдат
Написан на C++, компилируется под что угодно. У меня он запускался на Ubuntu сервере, Windows ноутбуке, MacBook и даже Raspberry Pi (да, это было медленно, но работало).
1 Сборка с поддержкой GPU (если есть)
По умолчанию собирается под CPU. Это неэффективно. Включаем все доступные оптимизации:
# Клонируем репозиторий
git clone https://github.com/ggerganov/whisper.cpp.git
cd whisper.cpp
# Для Mac с Metal (Apple Silicon или AMD)
make clean && WHISPER_METAL=1 make -j
# Для Linux с CUDA (если есть NVIDIA)
make clean && WHISPER_CUDA=1 make -j
# Для всех остальных - AVX/SSE оптимизации
make clean && make -j
2 Конвертация модели в GGML формат
Whisper.cpp использует свой формат моделей. Не пугайтесь, конвертер идёт в комплекте.
# Скачиваем оригинальную модель от OpenAI (например, large-v2)
./models/download-ggml-model.sh large-v2
# Или конвертируем свою
python3 ./models/convert-pt-to-ggml.py ~/Downloads/whisper-large-v2/ ./models/
3 Запуск с правильными параметрами
Здесь больше всего ошибок. Люди запускают без ключевых флагов и получают плохое качество.
# ПЛОХО - так делать не надо
./main -f audio.wav -m ./models/ggml-large-v2.bin
# ХОРОШО - с указанием языка и включением VAD
./main -f audio.wav -m ./models/ggml-large-v2.bin -l ru -tr -vth 0.6
# ЕЩЁ ЛУЧШЕ - с указанием количества потоков
./main -f audio.wav -m ./models/ggml-large-v2.bin -l auto -tr -vth 0.6 -t 16
Расшифрую, что за параметры:
-l ru— явно указываем язык (илиautoдля автоопределения)-tr— перевод на английский (если нужно)-vth 0.6— порог Voice Activity Detection (чем выше, тем меньше ложных срабатываний на шум)-t 16— количество потоков CPU (ставьте по количеству ядер)
На Linux сервере с 32 ядрами и моделью large-v2 получаем примерно 0.8x реального времени. Быстрее, чем слушать.
Scriberr: для тех, кто ненавидит терминал
Открыли, перетащили файл, получили текст. Никакого CLI, только GUI. Идеально для журналистов, исследователей, подкастеров.
1 Установка (проще некуда)
# macOS
brew install --cask scriberr
# Windows - скачиваем с GitHub Releases
# Linux - AppImage или Flatpak
2 Первая настройка (не пропускайте этот шаг)
Открываете Scriberr, идёте в Settings → Model. Здесь критический выбор:
- Скачиваете модель large-v2 (не экономьте на размере)
- Выбираете Quantized 8-bit (разумный компромисс)
- Включаете GPU acceleration если есть NVIDIA/AMD
- Ставите VAD threshold на 0.5-0.7
3 Работа в реальном режиме
Перетаскиваете аудиофайл в окно. Ждёте. Получаете текст с таймкодами. Экспортируете в TXT, SRT или JSON.
Скорость зависит от железа. На RTX 4070 — примерно 0.5x реального времени. На встроенной графике Intel — 3-4x.
Прямое сравнение: цифры не врут
| Платформа | WhisperKit | Whisper.cpp | Scriberr |
|---|---|---|---|
| Mac M2 Pro | 1.5x (лучший) | 2.8x | 3.2x |
| Windows + RTX 4070 | N/A | 0.7x (лучший) | 0.9x |
| Ubuntu Server | N/A | 0.8x (лучший) | N/A |
| Простота использования | Средняя | Сложная | Очень простая (лучший) |
Цифры показывают скорость относительно реального времени (1.0x = обработка занимает столько же, сколько длится аудио).
Скрытые проблемы, о которых молчат
После недели тестов нашлись косяки, которые не описаны в документации.
Проблема с памятью на больших файлах
Все три решения пытаются загрузить весь аудиофайл в оперативку. 3-часовой подкаст в WAV (2 ГБ) может уронить даже 32 ГБ RAM.
Решение: Конвертировать в OPUS или MP3 перед обработкой:
ffmpeg -i huge_podcast.wav -c:a libopus -b:a 64k podcast.opus
Мультиязычные записи
Whisper определяет язык автоматически, но если в записи говорят на двух языках — будет путаница. Особенно страдает русско-английский микс.
Решение: Для Whisper.cpp использовать флаг --language ru и --translate для английских фрагментов. Или резать файл на сегменты по языкам.
Фоновая музыка убивает точность
Фоновая музыка или сильный шум (кафе, шаг, шаг) могут превратить речь в бессмысленный набор слов. Whisper пытается распознать всё, включая музыку.
Решение: Использовать инструменты для отделения речи от музыки, например Spleeter или демо из обзора аудио-моделей.
Что дальше? Интеграция в пайплайн
Локальная STT — это только начало. Что делать с текстом дальше?
- RAG для аудио: Транскрибируете подкасты, закидываете в векторную БД, ищете нужные моменты. Полный гайд здесь.
- Агентские пайплайны: Аудио → текст → LLM → действие. Например, автоматическое создание заметок из совещаний.
- Сравнение с облачными решениями: Иногда дешевле и проще использовать API. Сравнение цен и точности.
Мой выбор? Для личного Mac — WhisperKit. Для продакшн-сервера — Whisper.cpp с CUDA. Для быстрой разовой задачи — Scriberr.
А самый главный совет: не зацикливайтесь на скорости 0.1x. Лучше точность 95% за 2 часа, чем 70% за 20 минут. Потому что перепроверять транскрипцию с ошибками — это те самые 2 часа, которые вы "сэкономили".