На онлайн-площадках и ИИ-диктофоны и обычные вперемешку продаются
На онлайн-площадках и ИИ-диктофоны и обычные вперемешку продаются

В новостях всё чаще говорят об «ИИ‑диктофонах» — гаджетах, которые записывают каждый ваш разговор в течение дня, отправляют аудио в облако, превращают его в текст и даже готовят краткую сводку по итогам. Звучит футуристично, но такие решения стоят дорого, требуют постоянной подписки и вызывают вопросы о приватности.

Лично мне идея тотальной записи кажется избыточной. Зато куда практичнее другая задача: получить точную текстовую расшифровку лекции, доклада или публичного выступления. Чтобы потом не переслушивать часы аудио, а быстро найти нужную цитату или мысль простым поиском по тексту.

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

Мой купленный за 2 т.р. диктофон с возможностью подключения внешнего микрофона на фоне коробки с ESP32
Мой купленный за 2 т.р. диктофон с возможностью подключения внешнего микрофона на фоне коробки с ESP32

Сердцем решения станет 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 тоже всё запустится, только медленнее. В качестве источника звука я тестировал обычный диктофон за пару тысяч рублей.

Диктофон за 1–3 тыс. рублей. Много их
Диктофон за 1–3 тыс. рублей. Много их

Софт:

  • 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
Запуск ./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 на Гитхабе.

python3 whisper_transcribe.py ./audio large ./results
python3 whisper_transcribe.py ./audio large ./results

Шаг 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)


  1. granv1
    02.09.2025 01:29

    а в docker не хотелось собирать?


    1. empenoso Автор
      02.09.2025 01:29

      Docker - хороший вариант для удобного развёртывания. Но в статье я специально показал самый простой путь для любого новичка.


      P.S. Контейнер соберу позже.


  1. PopovPS
    02.09.2025 01:29

    А как решаете вопрос со специализированными терминами? Мы пробовали такой подход на лекциях медицинской тематики. Оказалось что с терминологией whisper работает, прямо скажем, не очень хорошо. А поскольку нам это нужно было для дальнейшего перевода лекций на язык студентов, это оказалось серьезной проблемой.


    1. LittleMeN
      02.09.2025 01:29

      Попробуйте постобработкой с локальной llm. В промпт зашиваете специфические термины, и просьбу исправить после whisper который ошибся при распознавании.

      Если все равно плохо выходит — увы только дообучать whisper под свою терминологию


    1. 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..."


      1. PopovPS
        02.09.2025 01:29

        Как вариант для английского хорошо. Но с русским языком работает через раз.


  1. Gar02b
    02.09.2025 01:29

    А может ли ИИ делать де-диареизацию (она же - "горловое пение докладчика")? Это когда "Наша а-а-а-а команда разработала а-а-а-а решение а-а-а-а, которое м-м-м...".

    Актуально, к сожалению, везде: и на совещаниях, и на вебинарах.