ТранскрибаторТранскрибатор
Практическая инструкция

whisper.cpp: как собрать whisper-cli и распознать русскую запись

Нативный запуск whisper.cpp: сборка через CMake, многоязычная ggml-модель, подготовка WAV, параметры whisper-cli и сохранение TXT или SRT.

02 октября 2026Транскрибатор
whisper-cli-m ggml-base.bin-f sample.wav-l rusample-ru.txt / .srt
Проверенные ограниченияРазобранный примерРабочий шаблон
1. Собрать CLICMake → бинарный файлПроверить справку -h2. Подготовитьggml-base.binРусская модель и WAV3. Распознать-l ru -otxt -ofОткрыть sample-ru.txt
Сборка, модель и входной файл готовятся отдельно. Справка именно установленного whisper-cli определяет доступные параметры.

Проверьте реализацию и подготовьте сборку

whisper.cpp — проект распознавания речи с реализацией на C/C++. Его основной пример для обработки файла называется whisper-cli. Эта инструкция показывает сборку и запуск из каталога проекта в Linux или macOS с подходящим компилятором и CMake. Для Windows путь к исполняемому файлу и используемый генератор сборки могут отличаться; команды ниже нельзя считать универсальным установщиком.

Сначала убедитесь, что открыли официальный проект ggml-org/whisper.cpp, а не одноимённый Python-пакет или стороннюю оболочку. Версию исходников и способ получения проекта запишите в карточку запуска. Здесь не требуется установка openai-whisper через pip: его отдельная команда whisper имеет другой интерфейс.

# выполняйте внутри подготовленного каталога whisper.cpp
cmake -B build
cmake --build build -j --config Release
./build/bin/whisper-cli -h

Первый вызов готовит конфигурацию, второй собирает проект, третий показывает справку полученного исполняемого файла. Если компилятор отсутствует или CMake завершился ошибкой, до распознавания дело ещё не дошло. Сохраните ошибку этого этапа и проверьте требования сборки своей ОС. Не пытайтесь исправить отсутствие бинарного файла сменой языка записи.

Загрузите многоязычную модель и отделите её от программы

Модель не встроена в саму команду. В каталоге проекта предусмотрен скрипт загрузки моделей; для стартовой русской пробы можно выбрать многоязычную base. Не выбирайте base.en: окончание .en указывает английский вариант. Модель base в примере — удобная отправная точка, а не гарантия качества для интервью с шумом.

sh ./models/download-ggml-model.sh base

После загрузки проверьте, что существует models/ggml-base.bin, и сохраните его точное имя. Параметр -m принимает путь к файлу модели. Каталог CTranslate2 или файл весов от другой реализации нельзя просто переименовать в ggml-base.bin: имя не меняет формат содержимого.

Для работы без сети сначала подготовьте исполняемый файл и модель, затем выполните короткую пробу в нужном окружении. Сообщение об успешной загрузке ещё не подтверждает, что распознавание работает. При выборе более крупной модели повторите ту же контрольную запись и оцените расход памяти на своём компьютере.

Сделайте техническую копию и явно сохраните TXT

Для воспроизводимой первой пробы подготовьте WAV PCM 16 бит, один канал, 16 кГц. В общем README проекта приведён такой путь, хотя справка CLI и варианты сборки могут поддерживать дополнительные форматы. Поэтому не утверждайте, что любой MP3 обязательно непригоден; при ошибке декодирования сверьте именно свою сборку. Конвертация требует отдельно установленной команды FFmpeg.

ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le sample.wav

Сохраните input.mp3 как исходник, а sample.wav используйте как техническую копию. Проверьте длительность и последние секунды после преобразования. Если важна раздельная запись по каналам, моно-копия её объединит: держите многоканальный оригинал отдельно. Подробный порядок сохранения исходника есть в инструкции по конвертации аудио.

./build/bin/whisper-cli -m models/ggml-base.bin -f sample.wav -l ru -otxt -of sample-ru

Здесь -m задаёт модель, -f — вход, -l ru — язык, -otxt — сохранение текстового файла, а -of — основу имени без расширения. Ожидаемый текстовый результат — sample-ru.txt в указанном месте. Не дописывайте .txt в основу имени по привычке: сначала посмотрите правила справки установленной версии. Вывод слов в терминал не заменяет проверку файла на диске.

Команды сверены с документацией проекта, но в статье не выполнялись на вашем компьютере. Если каталог или имя содержит пробелы, заключите соответствующий путь в кавычки. Запуск из другой рабочей папки меняет смысл относительных путей: модель может существовать, но команда её не найдёт.

Выберите SRT и разберите ошибку по этапу

Чтобы получить субтитры вместо TXT, в той же пробе замените -otxt на -osrt. Можно указать обе опции, если нужны оба представления. Не добавляйте -tr для обычной русской стенограммы: этот параметр включает перевод на английский. Перед передачей SRT проверьте несколько границ реплик с видео и прочитайте правила структуры и проверки времени SRT.

При сбое сначала определите последнее успешное действие. «Команда не найдена» относится к расположению программы. Ошибка чтения модели относится к пути, полноте или совместимости модели. Ошибка аудио — к входному файлу и декодированию. Текст с неверными словами — уже вопрос результата распознавания. Для каждого случая сохраняйте сообщение дословно и меняйте один параметр за раз.

Пройдите начало, середину и конец речи. В отдельный список вынесите фамилии, числа и отрицания: их правят только по записи или проверяемым материалам. Не сравнивайте разные модели на разных исходниках. Если самостоятельная сборка не нужна и онлайн-обработка подходит, можно расшифровать аудио в Транскрибаторе и продолжить редакторскую проверку текста.

Учебный пример

Программа существует, но относительный путь ведёт в другую папку

Учебный пример: редактор собрал проект, загрузил base и запустил команду из соседнего каталога. Модель в папке проекта существует, однако путь models/ggml-base.bin из текущей папки указывает в другое место.

ЭтапНаблюдениеСледующий шаг
СборкаНет build/bin/whisper-cliПроверить завершение CMake и путь
МодельНе найден ggml-base.binСверить рабочую папку и параметр -m
АудиоНе удалось прочитать sample.wavПроверить техническую копию и сборку
ЭкспортСлова в терминале есть, TXT нетПроверить -otxt, -of и права записи
Из соседней папкиmodels/ggml-base.binФайл не найденИз папки проектаmodels/ggml-base.binПуть ведёт к модели
Учебная схема относительных путей: команда ищет models из текущей папки, а не автоматически рядом с исходниками.

Редактор возвращается в каталог проекта либо указывает полный путь. Он не скачивает другую модель для исправления пути. После завершения проверяет sample-ru.txt и последнее предложение записи.

Карточка запуска whisper-cli

Рабочая заготовкаВыделите и скопируйте
ОС и архитектура:
Версия исходников / сборки:
Полный путь whisper-cli:
Рабочий каталог:
Модель и полный путь:
Исходник и техническая копия:
Длительность до / после:
Команда целиком:
Язык / формат выхода / основа имени:
Точный текст ошибки:
Начало / середина / конец проверены:
Исправленная версия:

Частые вопросы

whisper и whisper-cli — одна программа?

Нет. В этой инструкции whisper-cli относится к whisper.cpp. Команды и ключи другого пакета нужно проверять по его собственной справке.

Подходит ли base.en для русской записи?

Для этой задачи выбирайте многоязычную модель без .en и явно укажите ru. Английский вариант не следует принимать за универсальный.

Можно ли переименовать другую модель в ggml?

Переименование не преобразует формат весов. Используйте совместимую модель и путь, предусмотренные выбранной реализацией.

Почему показан WAV, если справка перечисляет MP3?

Документация и возможности сборок могут различаться. WAV PCM в примере даёт понятную техническую пробу; поддержку иных форматов проверяйте у своей сборки.

Опция -of принимает имя с расширением?

В справке проекта она задаёт основу пути без расширения. Формат и расширение определяет выбранный флаг вывода, например -otxt или -osrt.