
В новостях всё чаще говорят об «ИИ‑диктофонах» — гаджетах, которые записывают каждый ваш разговор в течение дня, отправляют аудио в облако, превращают его в текст и даже готовят краткую сводку по итогам. Звучит футуристично, но такие решения стоят дорого, требуют постоянной подписки и вызывают вопросы о приватности.
Лично мне идея тотальной записи кажется избыточной. Зато куда практичнее другая задача: получить точную текстовую расшифровку лекции, доклада или публичного выступления. Чтобы потом не переслушивать часы аудио, а быстро найти нужную цитату или мысль простым поиском по тексту.
В этой статье я покажу, как построить такую систему без платных подписок и полностью под вашим контролем. Всё, что нужно — обычный диктофон за 1–3 тыс. рублей или даже просто приложение на телефоне — тогда затраты вообще равны нулю, и набор бесплатных, открытых программ, которые работают на вашем компьютере. Я купил диктофон для теста и поделюсь результатами.

Сердцем решения станет OpenAI Whisper — мощная технология распознавания речи от создателей ChatGPT. Главное её преимущество — она может работать полностью автономно на вашем ПК, не отправляя никуда ваши данные. К тому же Whisper распространяется как open‑source: исходный код и модели доступны бесплатно — вы можете скачать, использовать и при необходимости даже модифицировать.
Мои скрипты выложены на GitHub.
Теоретическая часть: что, почему и как?
За последние пару лет появилось немало open‑source решений для распознавания речи, но именно Whisper стал фактическим стандартом. Его модели обучены на колоссальном массиве данных, что обеспечивает высокую точность распознавания. По сравнению с другими бесплатными движками, Whisper даёт результат ближе всего к коммерческим сервисам вроде Google Speech‑to‑Text и при этом работает автономно. Важный плюс — мультиязычность. Русский язык поддерживается «из коробки».
Модели Whisper бывают разных размеров: от tiny до large. На данный момент наиболее актуальной и точной является large-v3. Главный принцип здесь — компромисс между скоростью, точностью и требуемыми ресурсами (в первую очередь, видеопамятью). У меня видеокарта NVIDIA GeForce RTX 5060 Ti 16 ГБ, поэтому на тестах использую large модель, она требует ~10 ГБ VRAM, но можно начать и со small модели — для неё достаточно ~2 ГБ VRAM.
Не стоит забывать и о приватности: все данные остаются у вас на компьютере. Никаких облачных серверов, никаких подписок. Что понадобится для запуска?
Железо: компьютер с Linux (я использую Ubuntu, но у меня стоит двойная загрузка Windows & Linux через rEFInd Boot Manager). Рекомендуется видеокарта NVIDIA — GPU многократно ускоряет работу, хотя на CPU тоже всё запустится, только медленнее. В качестве источника звука я тестировал обычный диктофон за пару тысяч рублей.

Софт:
Python — язык, на котором работает весь стек.
FFmpeg — универсальный конвертер аудио/видео.
PyTorch — фреймворк, на котором обучены модели.
NVIDIA Drivers и CUDA — для связи с видеокартой.
Практическая часть: пошаговая инструкция
Теперь перейдём от теории к практике и соберём рабочую систему распознавания. Я разбил процесс на несколько шагов — так будет проще повторить.
Шаг 1. Подготовка окружения
Когда‑то я собирал dlib с поддержкой CUDA для анализа лиц с камеры в подъезде. Тогда я прошёл через несовместимости, конфликты версий и ручную сборку библиотек. Поэтому к установке Whisper я уже был подготовлен.
Чтобы избавить вас от всего этого «удовольствия», я написал универсальный bash‑скрипт setup_whisper.sh. Он берёт на себя всю грязную работу по настройке окружения на Ubuntu 24:
обновляет систему и ставит базовые пакеты, включая Python и FFmpeg;
проверяет драйверы NVIDIA и при необходимости устанавливает их;
подтягивает CUDA Toolkit;
создаёт виртуальное окружение Python и внутри него ставит PyTorch (учитывая модель видеокарты);
загружает сам Whisper и полезные библиотеки;
запускает тест, проверяющий, что GPU действительно работает.
Запуск прост:
chmod +x setup_whisper.sh
./setup_whisper.sh

Полный код setup_whisper.sh на Гитхабе.
Шаг 2. Запись и подготовка аудио
Чем лучше исходная запись, тем меньше ошибок. Записывайте ближе к источнику звука, избегайте шумных помещений и треска. Whisper работает с самыми популярными форматами: mp3, wav, m4a, так что конвертировать вручную не придётся.
Шаг 3. Массовая расшифровка всех подряд записей
Здесь в игру вступает мой второй скрипт — whisper_transcribe.py. Он:
автоматически находит все аудиофайлы в папке;
использует GPU (если доступен), ускоряя работу в десятки раз;
-
сохраняет результат в нескольких форматах:
.txt
для текста,.srt
с таймкодами (можно открыть как субтитры),all_transcripts.txt
— общий файл со всеми расшифровками.
Пример использования:
# Активируем окружение
source .venv/bin/activate
# Запуск по умолчанию (ищет аудио в текущей папке)
python3 whisper_transcribe.py
# Указываем папку с файлами, модель и папку для результатов
python3 whisper_transcribe.py ./audio large ./results
Полный код whisper_transcribe.py на Гитхабе.

Шаг 4. Анализ результатов
После обработки вы получите полный набор файлов. Например:
some_lecture.txt
— текст лекции;-
some_lecture.srt
— субтитры вида:12 00:04:22,500 --> 00:04:26,200 Здесь спикер рассказывает о ключевой идее...
all_transcripts.txt
— всё сразу в одном документе.
Я проверил систему на часовом файле. Модель large на моей RTX 5060 Ti справилась за ~8 минут.
Разделение по спикерам (диаризация) - почему это сложно?
А если записывать не лекцию, а совещание? На записи говорят пять человек, и вам нужно понять, кто именно что сказал. Обычный Whisper выдаёт сплошной текст без указания человека. Здесь на помощь приходит диаризация — технология, которая анализирует голосовые характеристики и помечает фрагменты как «Спикер 1», «Спикер 2» и так далее.
Для этого существует WhisperX — расширенная версия Whisper с поддержкой диаризации. Однако при попытке установки я опять столкнулся с классической проблемой ML‑экосистемы: конфликтом зависимостей. WhisperX требует определённые версии torchaudio, которые несовместимы с новыми драйверами NVIDIA для RTX 5060 Ti.
Решение мне подсказали: Docker‑контейнеры NVIDIA. По сути, это готовые «коробки» с предустановленным софтом для машинного обучения — разработчики уже решили все проблемы совместимости за вас. NVIDIA поддерживает целую экосистему таких контейнеров через NGC (NVIDIA GPU Cloud), а сообщество создает специализированные образы под конкретные задачи. Вместо многочасовой борьбы с зависимостями достаточно одной команды docker pull
, и вы получаете полностью рабочую среду с предустановленным WhisperX, настроенным PyTorch и всеми библиотеками. В данном случае контейнер ghcr.io/jim60105/whisperx включает диаризацию из коробки и отлично работает с современными GPU.

Диаризация откроет новые возможности: автоматическую генерацию протоколов встреч с указанием авторства реплик, анализ активности участников дискуссий, создание интерактивных расшифровок с навигацией по спикерам.
Это тема для отдельной статьи, которую планирую выпустить после тестирования Docker‑решения на реальных многоголосых записях.
Заключение
Мы собрали систему, которая позволяет бесплатно и полностью автономно расшифровывать лекции, выступления, а в перспективе и совещания. В основе — OpenAI Whisper, а все настройки и запуск упрощают мои open source скрипты. Достаточно один раз подготовить окружение — и дальше вы сможете регулярно получать точные транскрипты без подписок и риска приватности.
Следующий шаг — диаризация. Это позволит автоматически разделять текст по спикерам и превращать расшифровку совещания в полноценный протокол с указанием авторства.
Автор: Михаил Шардин
? Моя онлайн‑визитка
? Telegram «Умный Дом Инвестора»
2 сентября 2025
Комментарии (7)
PopovPS
02.09.2025 01:29А как решаете вопрос со специализированными терминами? Мы пробовали такой подход на лекциях медицинской тематики. Оказалось что с терминологией whisper работает, прямо скажем, не очень хорошо. А поскольку нам это нужно было для дальнейшего перевода лекций на язык студентов, это оказалось серьезной проблемой.
LittleMeN
02.09.2025 01:29Попробуйте постобработкой с локальной llm. В промпт зашиваете специфические термины, и просьбу исправить после whisper который ошибся при распознавании.
Если все равно плохо выходит — увы только дообучать whisper под свою терминологию
LittleMeN
02.09.2025 01:29Кстати в whisper.cpp можно задать инициирующий промпт с терминологией:
./main -m models/ggml-large-v3.bin -f lecture.wav
--language en --temperature 0 --beam-size 5
--initial-prompt "Today we discuss cardiology: myocarditis, troponin, echocardiography, ACE inhibitors, beta-blockers, atrial fibrillation, heparin, warfarin, NOACs..."
Gar02b
02.09.2025 01:29А может ли ИИ делать де-диареизацию (она же - "горловое пение докладчика")? Это когда "Наша а-а-а-а команда разработала а-а-а-а решение а-а-а-а, которое м-м-м...".
Актуально, к сожалению, везде: и на совещаниях, и на вебинарах.
granv1
а в docker не хотелось собирать?
empenoso Автор
Docker - хороший вариант для удобного развёртывания. Но в статье я специально показал самый простой путь для любого новичка.
P.S. Контейнер соберу позже.