Transcribator — программа для Windows, которая в реальном времени расшифровывает созвоны (Microsoft Teams, Google Meet, Zoom и т. п.): записывает ваш микрофон и звук, который идёт из динамиков (голоса собеседников), превращает речь в текст и разделяет реплики по участникам. В конце получается текстовый транскрипт.
Распознавать речь можно двумя способами — достаточно одного:
| WhisperX | Deepgram | |
|---|---|---|
| Где работает | на вашем компьютере | в облаке |
| Стоимость | бесплатно | по тарифу сервиса (новым аккаунтам обычно дают пробный кредит) |
| Что нужно | желательно видеокарта NVIDIA, бесплатный аккаунт Hugging Face | интернет и API-ключ |
| Задержка текста | 1–5 секунд после фразы | доли секунды |
⚠️ Согласие на запись. Программа расшифровывает весь разговор, включая голоса удалённых участников. Получить согласие участников и соблюсти политику компании и законодательство — ответственность того, кто запускает программу.
- Что понадобится
- Установка Python
- Скачивание проекта
- Установка программы и WhisperX
- Токен Hugging Face
- Ключ Deepgram (необязательно)
- Файл настроек
.env - Запуск и работа
- Режимы WhisperX
- Если что-то не работает
- Дополнительно: скрипты и разработка
- Windows 10 или 11 (захват звука из динамиков работает только в Windows).
- Свободное место на диске: около 10 ГБ (библиотеки ≈ 5 ГБ + модели распознавания ≈ 3–5 ГБ).
- Интернет на время установки и первого запуска. Позже WhisperX работает без интернета.
- Видеокарта NVIDIA — желательно (быстро и качественно). Без неё всё тоже работает, но на процессоре медленнее и с моделью попроще.
Как узнать, есть ли видеокарта NVIDIA: нажмите Ctrl+Shift+Esc → вкладка «Производительность» → в левом списке ищите «GPU»; если рядом написано NVIDIA GeForce … — карта есть.
В инструкции ниже команды нужно вводить в PowerShell — программа «командная строка» Windows. Команду копируйте целиком, вставляйте правой кнопкой мыши и нажимайте Enter.
Python — язык, на котором написана программа. Его нужно поставить один раз.
-
Откройте https://www.python.org/downloads/windows/ и скачайте Python 3.12 (ссылка Windows installer (64-bit)).
-
Запустите установщик. Обязательно поставьте галочку «Add python.exe to PATH» внизу первого окна, затем нажмите Install Now.
-
Проверка: откройте новое окно PowerShell (меню «Пуск» → «PowerShell») и выполните:
python --versionДолжно появиться что-то вроде
Python 3.12.x. Если пишет «не найдено» — переустановите Python с галочкой PATH.
Альтернатива: если вы выберете установку через uv (см. шаг 4), отдельно ставить Python не нужно — uv скачает его сам.
Вариант A — архивом (проще всего): на странице репозитория на GitHub нажмите зелёную кнопку Code → Download ZIP, распакуйте архив в удобную папку без русских букв и пробелов в пути, например C:\Transcribator.
Вариант B — через Git (если он установлен):
git clone https://github.com/Wasya/Transcribator.git C:\TranscribatorДальше откройте PowerShell в папке проекта: в Проводнике зайдите в папку, щёлкните по адресной строке, напечатайте powershell и нажмите Enter. Все команды ниже выполняйте в этом окне.
Все пакеты ставятся в папку .venv внутри проекта — это «изолированный» Python, он не затрагивает остальную систему. Активировать его не нужно: в командах ниже путь к нему указан явно.
Выберите один способ: pip (идёт вместе с Python) или uv (быстрее, умеет сам ставить Python). Дальше в каждом шаге даны команды для обоих.
pip:
python -m venv .venvuv (установка uv: winget install --id=astral-sh.uv -e, затем закройте и снова откройте PowerShell в папке проекта):
uv venv --python 3.12pip:
.venv\Scripts\python.exe -m pip install -r requirements.txtuv:
uv pip install --python .venv\Scripts\python.exe -r requirements.txtЭто самый тяжёлый шаг (≈ 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/cu126uv:
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.0uv:
uv pip install --python .venv\Scripts\python.exe torch==2.8.0 torchaudio==2.8.0pip:
.venv\Scripts\python.exe -m pip install -r requirements-whisperx.txtuv:
uv pip install --python .venv\Scripts\python.exe -r requirements-whisperx.txt.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 и присылайте вывод этой команды целиком.
Зачем. Чтобы программа различала, кто из собеседников что сказал, используются модели pyannote. Они бесплатные, но требуют зарегистрироваться на сайте Hugging Face, принять условия использования и создать «токен» — специальный пароль для программы. Это делается один раз. Если разбор по голосам вам не нужен, этот шаг можно пропустить (выберите в программе режим «Не разделять участников»).
- Зарегистрируйтесь на https://huggingface.co/join и подтвердите e-mail из письма.
- Откройте страницу https://huggingface.co/pyannote/speaker-diarization-community-1, войдите в аккаунт, заполните короткую форму (имя, организация — можно любые) и нажмите Agree and access repository. Страница должна перестать показывать форму.
- Создайте токен: https://huggingface.co/settings/tokens → Create new token → тип Read → любое имя → Create token. Скопируйте значение вида
hf_…— оно показывается один раз. - Сохраните токен — он понадобится в шаге 7.
Если при первом запуске появится ошибка доступа (401 или 403) к другой модели pyannote/…, откройте её страницу (адрес указан в тексте ошибки) и так же нажмите Agree and access repository.
Нужен только если хотите использовать облачный движок Deepgram вместо (или вместе с) локального WhisperX.
- Зарегистрируйтесь на https://console.deepgram.com/signup. Новым аккаунтам обычно выдаётся бесплатный стартовый кредит (актуальные условия смотрите на сайте Deepgram).
- После входа создайте проект (если предложит) и откройте раздел API Keys в меню проекта.
- Нажмите Create a New API Key, введите любое имя, права оставьте по умолчанию и создайте ключ.
- Скопируйте ключ — он показывается один раз, потом его не посмотреть (при потере создайте новый).
- Ключ — это пароль от вашего платного аккаунта: никому его не пересылайте и не публикуйте.
Секреты (токен и ключ) хранятся в текстовом файле .env в папке проекта. Он не попадает в Git.
-
Создайте файл из шаблона:
copy .env.example .env notepad .env
-
В открывшемся Блокноте впишите значения без кавычек и пробелов вокруг
=:DEEPGRAM_API_KEY=ваш_ключ_deepgram HF_TOKEN=hf_ваш_токен_hugging_faceСтроку с ненужным движком можно оставить пустой или удалить. Строки, начинающиеся с
#, — комментарии. -
Сохраните (Ctrl+S) и закройте Блокнот.
-
Проверьте:
.venv\Scripts\python.exe check_env.pyдолжен показать «задан» напротив введённых значений.
Проверьте, что файл называется именно .env, а не .env.txt (команда dir .env* покажет имена).
Необязательные настройки WhisperX (по умолчанию всё выбирается автоматически) можно добавить в тот же файл — примеры есть в .env.example.
Запуск: дважды щёлкните по файлу 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 — уже установленное пропускается.
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. Если на видеокарте не хватает памяти, выберите модель поменьше.
| Симптом | Что делать |
|---|---|
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 из папки сессии. Ключи и токены в них не попадают.
Кроме главного приложения в проекте есть два небольших консольных скрипта для 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; никому не пересылайте его содержимое.