Skip to content

Repository files navigation

Transcribator

Transcribator — программа для Windows, которая в реальном времени расшифровывает созвоны (Microsoft Teams, Google Meet, Zoom и т. п.): записывает ваш микрофон и звук, который идёт из динамиков (голоса собеседников), превращает речь в текст и разделяет реплики по участникам. В конце получается текстовый транскрипт.

Распознавать речь можно двумя способами — достаточно одного:

WhisperX Deepgram
Где работает на вашем компьютере в облаке
Стоимость бесплатно по тарифу сервиса (новым аккаунтам обычно дают пробный кредит)
Что нужно желательно видеокарта NVIDIA, бесплатный аккаунт Hugging Face интернет и API-ключ
Задержка текста 1–5 секунд после фразы доли секунды

⚠️ Согласие на запись. Программа расшифровывает весь разговор, включая голоса удалённых участников. Получить согласие участников и соблюсти политику компании и законодательство — ответственность того, кто запускает программу.

Содержание

  1. Что понадобится
  2. Установка Python
  3. Скачивание проекта
  4. Установка программы и WhisperX
  5. Токен Hugging Face
  6. Ключ Deepgram (необязательно)
  7. Файл настроек .env
  8. Запуск и работа
  9. Режимы WhisperX
  10. Если что-то не работает
  11. Дополнительно: скрипты и разработка

1. Что понадобится

  • Windows 10 или 11 (захват звука из динамиков работает только в Windows).
  • Свободное место на диске: около 10 ГБ (библиотеки ≈ 5 ГБ + модели распознавания ≈ 3–5 ГБ).
  • Интернет на время установки и первого запуска. Позже WhisperX работает без интернета.
  • Видеокарта NVIDIA — желательно (быстро и качественно). Без неё всё тоже работает, но на процессоре медленнее и с моделью попроще.

Как узнать, есть ли видеокарта NVIDIA: нажмите Ctrl+Shift+Esc → вкладка «Производительность» → в левом списке ищите «GPU»; если рядом написано NVIDIA GeForce … — карта есть.

В инструкции ниже команды нужно вводить в PowerShell — программа «командная строка» Windows. Команду копируйте целиком, вставляйте правой кнопкой мыши и нажимайте Enter.

2. Установка Python

Python — язык, на котором написана программа. Его нужно поставить один раз.

  1. Откройте https://www.python.org/downloads/windows/ и скачайте Python 3.12 (ссылка Windows installer (64-bit)).

  2. Запустите установщик. Обязательно поставьте галочку «Add python.exe to PATH» внизу первого окна, затем нажмите Install Now.

  3. Проверка: откройте новое окно PowerShell (меню «Пуск» → «PowerShell») и выполните:

    python --version

    Должно появиться что-то вроде Python 3.12.x. Если пишет «не найдено» — переустановите Python с галочкой PATH.

Альтернатива: если вы выберете установку через uv (см. шаг 4), отдельно ставить Python не нужно — uv скачает его сам.

3. Скачивание проекта

Вариант A — архивом (проще всего): на странице репозитория на GitHub нажмите зелёную кнопку Code → Download ZIP, распакуйте архив в удобную папку без русских букв и пробелов в пути, например C:\Transcribator.

Вариант B — через Git (если он установлен):

git clone https://github.com/Wasya/Transcribator.git C:\Transcribator

Дальше откройте PowerShell в папке проекта: в Проводнике зайдите в папку, щёлкните по адресной строке, напечатайте powershell и нажмите Enter. Все команды ниже выполняйте в этом окне.

4. Установка программы и WhisperX

Все пакеты ставятся в папку .venv внутри проекта — это «изолированный» Python, он не затрагивает остальную систему. Активировать его не нужно: в командах ниже путь к нему указан явно.

Выберите один способ: pip (идёт вместе с Python) или uv (быстрее, умеет сам ставить Python). Дальше в каждом шаге даны команды для обоих.

4.1. Создать окружение

pip:

python -m venv .venv

uv (установка uv: winget install --id=astral-sh.uv -e, затем закройте и снова откройте PowerShell в папке проекта):

uv venv --python 3.12

4.2. Поставить базовые пакеты

pip:

.venv\Scripts\python.exe -m pip install -r requirements.txt

uv:

uv pip install --python .venv\Scripts\python.exe -r requirements.txt

4.3. Поставить PyTorch (основа для WhisperX)

Это самый тяжёлый шаг (≈ 3 ГБ). Его нужно выполнить до установки WhisperX, иначе поставится версия без поддержки видеокарты.

Если есть видеокарта NVIDIA:

pip:

.venv\Scripts\python.exe -m pip install torch==2.8.0 torchaudio==2.8.0 --index-url https://download.pytorch.org/whl/cu126

uv:

uv pip install --python .venv\Scripts\python.exe torch==2.8.0 torchaudio==2.8.0 --index-url https://download.pytorch.org/whl/cu126

Отдельно устанавливать CUDA не нужно, но драйвер видеокарты должен быть свежим (скачать: https://www.nvidia.com/drivers; проверка: команда nvidia-smi должна показать таблицу с названием вашей карты).

Если видеокарты NVIDIA нет (работа на процессоре):

pip:

.venv\Scripts\python.exe -m pip install torch==2.8.0 torchaudio==2.8.0

uv:

uv pip install --python .venv\Scripts\python.exe torch==2.8.0 torchaudio==2.8.0

4.4. Поставить WhisperX

pip:

.venv\Scripts\python.exe -m pip install -r requirements-whisperx.txt

uv:

uv pip install --python .venv\Scripts\python.exe -r requirements-whisperx.txt

4.5. Проверить, что всё встало правильно

.venv\Scripts\python.exe check_env.py

Программа выведет версии пакетов. Что должно быть:

  • все пакеты (deepgram-sdk, PyAudioWPatch, whisperx, faster-whisper, torch, …) — с номером версии, а не «НЕ УСТАНОВЛЕН»;
  • torch — с суффиксом +cu126 (для видеокарты) и строка CUDA доступна: True, ниже название вашей видеокарты. На процессоре будет CUDA доступна: False — это нормально;
  • строки про DEEPGRAM_API_KEY и HF_TOKEN пока будут «не задан» — это исправим на следующих шагах.

Если что-то пошло не так — смотрите раздел 10 и присылайте вывод этой команды целиком.

5. Токен Hugging Face (для разбора по голосам)

Зачем. Чтобы программа различала, кто из собеседников что сказал, используются модели pyannote. Они бесплатные, но требуют зарегистрироваться на сайте Hugging Face, принять условия использования и создать «токен» — специальный пароль для программы. Это делается один раз. Если разбор по голосам вам не нужен, этот шаг можно пропустить (выберите в программе режим «Не разделять участников»).

  1. Зарегистрируйтесь на https://huggingface.co/join и подтвердите e-mail из письма.
  2. Откройте страницу https://huggingface.co/pyannote/speaker-diarization-community-1, войдите в аккаунт, заполните короткую форму (имя, организация — можно любые) и нажмите Agree and access repository. Страница должна перестать показывать форму.
  3. Создайте токен: https://huggingface.co/settings/tokens → Create new token → тип Read → любое имя → Create token. Скопируйте значение вида hf_… — оно показывается один раз.
  4. Сохраните токен — он понадобится в шаге 7.

Если при первом запуске появится ошибка доступа (401 или 403) к другой модели pyannote/…, откройте её страницу (адрес указан в тексте ошибки) и так же нажмите Agree and access repository.

6. Ключ Deepgram (необязательно)

Нужен только если хотите использовать облачный движок Deepgram вместо (или вместе с) локального WhisperX.

  1. Зарегистрируйтесь на https://console.deepgram.com/signup. Новым аккаунтам обычно выдаётся бесплатный стартовый кредит (актуальные условия смотрите на сайте Deepgram).
  2. После входа создайте проект (если предложит) и откройте раздел API Keys в меню проекта.
  3. Нажмите Create a New API Key, введите любое имя, права оставьте по умолчанию и создайте ключ.
  4. Скопируйте ключ — он показывается один раз, потом его не посмотреть (при потере создайте новый).
  5. Ключ — это пароль от вашего платного аккаунта: никому его не пересылайте и не публикуйте.

7. Файл настроек .env

Секреты (токен и ключ) хранятся в текстовом файле .env в папке проекта. Он не попадает в Git.

  1. Создайте файл из шаблона:

    copy .env.example .env
    notepad .env
  2. В открывшемся Блокноте впишите значения без кавычек и пробелов вокруг =:

    DEEPGRAM_API_KEY=ваш_ключ_deepgram
    HF_TOKEN=hf_ваш_токен_hugging_face
    

    Строку с ненужным движком можно оставить пустой или удалить. Строки, начинающиеся с #, — комментарии.

  3. Сохраните (Ctrl+S) и закройте Блокнот.

  4. Проверьте: .venv\Scripts\python.exe check_env.py должен показать «задан» напротив введённых значений.

Проверьте, что файл называется именно .env, а не .env.txt (команда dir .env* покажет имена).

Необязательные настройки WhisperX (по умолчанию всё выбирается автоматически) можно добавить в тот же файл — примеры есть в .env.example.

8. Запуск и работа

Запуск: дважды щёлкните по файлу StartTranscribAudioLoop.cmd в папке проекта — или выполните в PowerShell:

.venv\Scripts\python.exe TeamsTranscribe.py

Сначала появится уведомление о согласии на запись, затем главное окно.

Первый запуск с WhisperX скачивает модели (несколько ГБ), в окне будет статус «Загрузка моделей…» с бегущей полосой и счётчиком секунд, а по шагам — «Загрузка модели распознавания речи…», «…распознавания голосов…». Скачивание может занять несколько минут (ход загрузки виден в окне консоли). Дальше модели берутся с диска, а при повторном «Начать» с теми же настройками остаются в памяти и загружаются мгновенно.

Во время записи в строке состояния видно, что программа работает: время записи, число распознанных реплик, «ждём речь», «распознаю…» и, если распознавание не успевает за разговором, сообщение об отставании. Текст WhisperX появляется после паузы в речи — это нормально.

Что настроить в окне:

  • Микрофон — ваш микрофон/гарнитура.

  • Системный звук — то устройство вывода, из которого вы слышите звонок (наушники или динамики). Выберите то, которое сейчас используется в Teams/Zoom; если реплики собеседников не появляются — попробуйте другое.

  • Полоски уровня справа от обоих списков показывают громкость ещё до начала записи: скажите что-нибудь — должна дёрнуться полоска микрофона; включите звук в звонке или любое видео — полоска системного звука. Если полоска не двигается, выбрано не то устройство.

  • Язык распознавания — русский, английский, немецкий или мультиязычный (авто-определение, для смешанной речи).

  • Движок распознавания — WhisperX (локально) или Deepgram (облако).

  • Модель WhisperX и Разбор по голосам — см. раздел 9. Оставьте по умолчанию, если не уверены.

  • Имя сессии (необязательно) — префикс названия папки с результатами.

  • Сохранять аудио записи (MP3) — сохранить также записи mic.mp3 (ваш микрофон) и system.mp3 (звук собеседников). Во время звонка аудио пишется без потерь, а после «Стоп» сжимается в MP3 (моно, 96 кбит/с, около 43 МБ на час); в статусе будет «Сжатие аудио в MP3…». Если сжать не удалось, файлы остаются в формате WAV.

  • Убирать из транскрипта эхо микрофона (включено по умолчанию) — если вы слушаете звонок через динамики, микрофон слышит собеседников, и их фразы попадают в транскрипт дважды: от «Собеседника» и от «Я». Программа находит такие повторы при сохранении и не пишет их в transcript.txt и файлы участников (в transcript.json они остаются с пометкой "mic_echo": true). В окне во время записи дубли всё равно видны — фильтр работает только при сохранении. Самый надёжный способ избежать эха — наушники.

  • «Не начинать новую реплику, если тот же голос молчал не дольше … с» (по умолчанию 6 с) — движок режет речь на куски при каждой паузе, даже на запятой. Подряд идущие куски одного собеседника, между которыми не говорил никто другой, склеиваются в одну строку, если пауза не длиннее этого значения. 0 — каждая фраза отдельной строкой. Применяется и к окну, и к сохраняемым файлам; меняется на лету. Один и тот же голос в разметке по-прежнему подписан одним именем: если вы переименовали участника, новое имя сразу заменяется во всех его строках.

Кнопки:

  • «Начать» — начать запись и расшифровку (создаётся папка сессии внутри папки Output).
  • «Стоп» — остановить запись и сохранить результаты. С WhisperX после этого может идти разбор по голосам (в окне виден статус) — дождитесь сообщения «Готово».
  • «Заглушить микрофон» — временно не передавать ваш голос на распознавание (запись не останавливается).
  • «Сохранить заново» — доступна после «Стоп»: пересохраняет последнюю сессию с учётом переименованных участников.

В списке «Участники» справа можно переименовать собеседника — как во время записи (если выбран режим B или Deepgram), так и после «Стоп», когда программа уже расставила участников по голосам (режим A). После переименования нажмите «Сохранить заново» — новые имена попадут во все файлы результатов.

Результаты — в папке Output\DeepGramMeeting[ДД-ММ-ГГГГ]_[ЧЧ-ММ] внутри папки проекта (если задано «Имя сессии», оно заменит начало названия; недопустимые символы убираются, длина — до 20 символов):

  • transcript.txt — все реплики по времени: время, имя, текст;
  • transcript.json — то же в структурированном виде;
  • speakers/<Имя>.txt — отдельный файл с репликами каждого участника;
  • mic.mp3, system.mp3 — аудиозаписи (если включено сохранение);
  • session.log — технический журнал сессии (для поиска проблем).

Обновление программы: скачайте новую версию (или git pull) и повторите команды установки из шага 4.2–4.4 — уже установленное пропускается.

9. Режимы WhisperX

WhisperX не умеет «потоковое» распознавание: речь режется на реплики по паузам, и каждая реплика расшифровывается после паузы — текст появляется с задержкой 1–5 секунд, без «промежуточных» вариантов. Ваш микрофон всегда подписан «Я», разбор по голосам применяется к звуку собеседников.

Разбор по голосам (список в окне):

Режим Что происходит
После «Стоп» (вариант A) — по умолчанию Во время звонка все собеседники подписаны «Собеседник 1». После «Стоп» программа анализирует запись целиком и расставляет участников по репликам — самый точный вариант. Обработка занимает от десятков секунд до нескольких минут. Запись для этого сохраняется автоматически (и удаляется после обработки, если не включено «Сохранять аудио записи (MP3)»).
Во время звонка (вариант B) Программа узнаёт голоса по ходу разговора: участники появляются в списке сразу, их можно переименовывать на лету. Точность ниже: очень короткие реплики (< 1,2 с) приписываются предыдущему говорящему, похожие голоса могут сливаться.
B + A Участники видны во время звонка, а после «Стоп» итог уточняется вариантом A. Имена, которые вы дали вручную, переносятся на итоговых участников.
Не разделять Все собеседники — «Собеседник 1». Токен Hugging Face не нужен.

С движком Deepgram разбор по голосам встроен в сервис, режим выбирать не нужно: участники появляются в списке по ходу звонка.

Фильтр «галлюцинаций». На музыке, заставках и тишине Whisper иногда сам выдумывает фразы вроде «Субтитры сделал DimaTorzok» или «Продолжение следует…». Такие типовые фразы программа вырезает из текста, а куски, где сама модель не уверена, что это речь, отбрасывает.

Модель (список «Модель WhisperX»): «Авто» выбирает large-v3-turbo для видеокарты и small для процессора. Остальные: medium, large-v3 (максимум качества, медленнее). Для видеокарты с 8 ГБ памяти рекомендуется «Авто» (large-v3-turbo); на процессоре берите small. Если на видеокарте не хватает памяти, выберите модель поменьше.

10. Если что-то не работает

Симптом Что делать
python «не найден / не является командой» Python не установлен или нет галочки PATH — переустановите (шаг 2), откройте новое окно PowerShell.
check_env.py показывает «НЕ УСТАНОВЛЕН» Пропущен шаг установки. Повторите 4.2–4.4. Убедитесь, что запускаете .venv\Scripts\python.exe …, а не просто python ….
CUDA доступна: False, хотя карта NVIDIA есть Обновите драйвер NVIDIA. Проверьте, что torch имеет суффикс +cu126; если нет — повторите шаг 4.3 для видеокарты, добавив в конец команды --force-reinstall (для uv — --reinstall), затем выполните 4.4.
Файл .env не читается (не задан) Проверьте имя (.env, а не .env.txt), что файл лежит рядом с check_env.py, нет кавычек и пробелов вокруг =. Переменные, заданные в настройках Windows, видны только в новых окнах PowerShell.
401 / 403 при загрузке моделей Не принято соглашение на странице модели pyannote или неверный HF_TOKEN (шаг 5).
cublas64_12.dll / cudnn… not found .venv\Scripts\python.exe -m pip install nvidia-cublas-cu12 nvidia-cudnn-cu12
Предупреждения torchcodec… или про symlinks Безвредны, на работу не влияют.
Нет реплик собеседников В списке «Системный звук» выберите устройство, из которого реально играет звук звонка. Если в этот момент ничего не воспроизводится, записи не будет.
Нет реплик вообще, ошибка при «Начать» Откройте session.log в папке сессии.
Пропуски текста, «лишние» фразы (WhisperX) Включите «Сохранять аудио записи (MP3)», повторите проблемный фрагмент и пришлите папку сессии целиком (session.log + system.mp3). В session.log каждые 10 секунд пишется строка level system: … — доля речевых кадров и уровень звука: по ней видно, было ли звука слишком мало, или он был, но не распознан. Строки whisper segment: … показывают длину куска и время его распознавания.
Долгая загрузка при «Начать» Первый запуск скачивает модели — подождите. Дальше быстро.

Как сообщить о проблеме: опишите, что делали и что произошло, и приложите (1) вывод .venv\Scripts\python.exe check_env.py и (2) файл session.log из папки сессии. Ключи и токены в них не попадают.

11. Дополнительно: скрипты и разработка

Кроме главного приложения в проекте есть два небольших консольных скрипта для Deepgram (нужен DEEPGRAM_API_KEY в .env):

  • StartDG.py — пример: скачивает аудио по URL и печатает расшифровку (модель nova-3, язык en).

    .venv\Scripts\python.exe StartDG.py
  • ListenSteam.py — расшифровка живого аудиопотока (интернет-радио) в реальном времени. В консоль выводятся промежуточные ([Interim]) и финальные ([ FINAL ]) результаты; финальные фразы сохраняются в текстовый файл. Остановка — Ctrl+C.

    .venv\Scripts\python.exe ListenSteam.py
    .venv\Scripts\python.exe ListenSteam.py --OutFile Session1

    Без --OutFile файл называется DeepGram[ДД-ММ-ГГГГ]_[ЧЧ-ММ].txt (дата и время запуска). С параметром из переданного имени удаляются символы, недопустимые в именах файлов Windows (< > : " / \ | ? * и управляющие), результат обрезается до 20 символов, и к нему добавляется [ДД-ММ-ГГГГ]_[ЧЧ-ММ].txt. Например, --OutFile 'My<>Radio_Session_Name_TooLong' при запуске 26.08.2026 в 11:09 даст MyRadio_Session_Name26-08-2026_11-09.txt.

Структура: TeamsTranscribe.py — точка входа приложения; вся логика в пакете teams_transcribe/ (захват звука, движки Deepgram/WhisperX, разбор по голосам, GUI, экспорт). check_env.py — диагностика окружения.

Тесты (не требуют видеокарты и моделей):

.venv\Scripts\python.exe -m unittest discover -s tests

Безопасность. Секреты (DEEPGRAM_API_KEY, HF_TOKEN) не хранятся в коде — они читаются из .env или переменных окружения. Файл .env добавлен в .gitignore и не должен попадать в Git; никому не пересылайте его содержимое.

About

Python-инструменты для распознавания речи через Deepgram API: батч-транскрипция, потоковая транскрипция радио и GUI для расшифровки звонков (Teams/Meet/Zoom)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages