# whisper.cpp streaming: речь с микрофона в текст на своём компьютере

Источник: https://modelium.tech/zhurnal/whisper-cpp-streaming/

`whisper-stream` показывает распознанные слова прямо во время речи в микрофон. На Linux его можно собрать с SDL2 и запустить с многоязычной моделью Whisper base для русского языка. Текст обновляется по мере обработки аудио, но интервал чтения микрофона не равен гарантированной задержке: сверяйте пропуски и время появления слов с исходной записью.

**Инструкция проверена по документации и исходникам 8 октября 2026 года; Modelium не запускал модель.** Ниже закреплён whisper.cpp `d1be6fd` и многоязычная Whisper base. Редакция не измеряла задержку, не проверяла микрофон и не обещает работу на любом компьютере. [s1](#src-s1) [s2](#src-s2) [s3](#src-s3)

## Что вы получите и чем поток отличается от готового файла?

Произнесите короткую фразу в микрофон — программа `whisper-stream` будет обновлять распознанный текст в терминале. Например, скажите: «Встреча в четверг в три часа, отчёт принести утром». Проверьте, видны ли «четверг», «три часа» и «утром»; это **критерий проверки, не заранее известный ответ модели**. Здесь речь об обработке звука по ходу записи, а не о расшифровке готового файла. [s1](#src-s1)

При обычном режиме вывод перезаписывается в той же строке, а не дополняется как чистый протокол с временными метками. Не копируйте мелькающую строку как окончательную стенограмму. Если нужен проверяемый текст по сохранённому WAV-файлу, используйте [общую инструкцию whisper.cpp](/zhurnal/whisper-cpp/). [s1](#src-s1)

## Что понадобится на Linux?

Путь ниже — **Linux с микрофоном и терминалом**, уровень B: потребуется собрать программу. Нужны Git, CMake, C/C++-компилятор, `curl` и заголовки SDL2; SDL2 передаёт звук микрофона программе. На Ubuntu/Debian начните с `sudo apt update && sudo apt install -y git cmake build-essential curl libsdl2-dev`. В ОС разрешите приложению доступ к микрофону и проверьте, что он выбран как устройство ввода. Это не инструкция для Windows или Mac. [s1](#src-s1) [s4](#src-s4)

Используйте **Whisper base без **`**.en**`: разработчики отмечают такие варианты как многоязычные; `.en` рассчитан на английский. Файл `ggml-base.bin` есть в закреплённом репозитории весов и занимает около 142 MiB на диске. Это **размер загрузки, а не минимальная RAM/VRAM**; минимум оперативной памяти и скорость на вашем устройстве мы не подтверждали. Лицензия проекта whisper.cpp и оригинальных весов Whisper указана авторами как MIT; проверьте условия самостоятельно перед использованием. [s3](#src-s3) [s5](#src-s5) [s6](#src-s6)

Интернет нужен для установки пакетов, получения исходников и весов. После подготовки выбранный путь читает локальный микрофон и локальный файл модели, не требует облачного API для распознавания; это вывод по исходнику, **не проведённый нами сетевой аудит всего компьютера**. Не используйте чужую конфиденциальную речь для пробного запуска без согласия. [s1](#src-s1) [s2](#src-s2)

## Как запустить потоковое распознавание русской речи?

- Откройте терминал и выполните `git clone https://github.com/ggml-org/whisper.cpp.git`, затем `cd whisper.cpp` и `git checkout d1be6fde11ac6e0407606b4e42fe72d34add8037`. `git rev-parse HEAD` должен показать тот же идентификатор — так команды привязаны к просмотренному исходнику. [s1](#src-s1) [s4](#src-s4)

- Соберите вариант с микрофоном: `cmake -B build -DWHISPER_SDL2=ON`, затем `cmake --build build --config Release -j 2`. Запустите `./build/bin/whisper-stream --help`: должны быть видны `--step`, `--length`, `--language` и `--model`. Если файла `whisper-stream` нет, проверьте установку `libsdl2-dev` и сообщение CMake, а не переходите к модели. `-j 2` — ограничение параллельной сборки в этом примере, не минимум оборудования. [s1](#src-s1) [s2](#src-s2) [s4](#src-s4)

- Скачайте конкретный многоязычный файл закреплённой ревизии: `curl -fL 'https://huggingface.co/ggerganov/whisper.cpp/resolve/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-base.bin' -o models/ggml-base.bin`. После успешной команды проверьте, что файл `models/ggml-base.bin` существует и загрузка не оборвалась. Не подменяйте его `ggml-base.en.bin`: тот предназначен для английского. [s3](#src-s3) [s5](#src-s5)

- Запустите `./build/bin/whisper-stream -m models/ggml-base.bin -l ru -ng --step 500 --length 5000`. `-l ru` задаёт русский, `-ng` отключает вычисление на GPU, `--step 500` берёт новый фрагмент через 500 мс, а `--length 5000` оставляет пятсекундное окно для очередной обработки. Сначала ожидается приглашение `[Start speaking]`, затем обновляющаяся строка распознанных слов. Говорите короткую фразу из примера в тихой комнате. [s1](#src-s1) [s2](#src-s2)

- Остановите запись клавишами `Ctrl+C`. Сравните слова с тем, что произнесли, а не с примером «идеального» ответа. Для проверки **задержки** параллельно сделайте на другом устройстве короткую запись со слышимым хлопком/меткой времени и отметьте момент появления соответствующего слова в терминале; не называйте интервал `500 мс` задержкой результата: к нему добавляется время обработки, которое зависит от вашего компьютера. Такой замер требует вашей собственной записи — редакция его не проводила. [s1](#src-s1) [s2](#src-s2)

## Что делать при пропусках и ошибках?

Если программа пишет `cannot process audio fast enough, dropping audio`, исходник прямо сообщает о сбросе накопившегося звука. Уменьшите нагрузку на устройство и повторите ту же фразу; не объявляйте транскрипт полным. Если распознаёт английский вместо русского, проверьте имя **без **`**.en**` и флаг `-l ru`: исходник для немультиязычной модели принудительно переводит настройку в английский. Если контекст не инициализируется, проверьте путь к файлу модели и что команда запускается из каталога репозитория: относительный `-m` зависит от текущей папки. [s1](#src-s1) [s2](#src-s2) [s3](#src-s3)

Режим `--step 0` — другой путь: он ждёт активности речи и выводит блоки с метками времени, но его простой детектор тишины может пропускать слова; настройка этого режима разобрана отдельно в [материале про VAD](/zhurnal/whisper-cpp-vad/). Для аккуратной стенограммы сделайте и сохраните обычную запись, затем сверяйте распознавание с ней по [гайду whisper.cpp](/zhurnal/whisper-cpp/). [s1](#src-s1)

## Источники

1. [whisper.cpp: официальный пример stream и формат вывода](https://github.com/ggml-org/whisper.cpp/blob/d1be6fde11ac6e0407606b4e42fe72d34add8037/examples/stream/README.md) — получено 2026-10-08
2. [whisper.cpp: исходник whisper-stream, аргументы и сброс аудио](https://github.com/ggml-org/whisper.cpp/blob/d1be6fde11ac6e0407606b4e42fe72d34add8037/examples/stream/stream.cpp) — получено 2026-10-08
3. [whisper.cpp: список моделей и отличие base от base.en](https://github.com/ggml-org/whisper.cpp/blob/d1be6fde11ac6e0407606b4e42fe72d34add8037/models/README.md) — получено 2026-10-08
4. [whisper.cpp: сборка проекта и требования](https://github.com/ggml-org/whisper.cpp/blob/d1be6fde11ac6e0407606b4e42fe72d34add8037/README.md) — получено 2026-10-08
5. [Официальный репозиторий конвертированных Whisper-весов: ggml-base.bin](https://huggingface.co/ggerganov/whisper.cpp/blob/5359861c739e955e79d9a303bcbc70fb988958b1/README.md) — получено 2026-10-08
6. [OpenAI Whisper: многоязычные варианты и лицензия](https://github.com/openai/whisper/blob/86098128c0b4f24f0e2aa2994de830614b474227/README.md) — получено 2026-10-08
