whisper.cpp: как собрать whisper-cli и распознать русскую запись
Нативный запуск whisper.cpp: сборка через CMake, многоязычная ggml-модель, подготовка WAV, параметры whisper-cli и сохранение TXT или SRT.
Проверьте реализацию и подготовьте сборку
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 и права записи |
Редактор возвращается в каталог проекта либо указывает полный путь. Он не скачивает другую модель для исправления пути. После завершения проверяет 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.