С онлайн-созвонами проблема транскрибации вроде решена: в Zoom, Meet и прочих платформах уже встроены AI-ассистенты, которые сами пишут расшифровку и саммари. А всё, что происходит вне этих платформ, — живой разговор в комнате, запись на диктофон, интервью, оффлайн-встреча — повисает. Инструмента, в который можно просто закинуть аудио и получить нормальный диалог со спикерами, под рукой не оказалось. Либо облако, куда надо отдавать свою запись, либо возня.
Мне хотелось простого: своё, на своей машине, без того чтобы аудио куда-то уезжало. Так появился свой транскрибатор.
Где у транскрибации дырка
Платформы для видеозвонков закрыли расшифровку внутри себя — и на этом успокоились. Zoom и Meet дают ровно столько, сколько видно в их окне: записал встречу внутри платформы — получил транскрипт. Выйдя из платформы, вы остаётесь с аудиофайлом и ничем.
Для онлайна это работает. Для всего остального — нет. Оффлайн-встреча, записанная на диктофон; интервью, снятое на телефон; разговор в переговорке, который записали «на всякий случай» — всё это превращается в файл, который надо расшифровать. Готового инструмента для этого нет. Есть облачные ASR-сервисы, куда вы загружаете свою запись и надеетесь, что она там не оседает навсегда. Есть разрозненные скрипты на faster-whisper, которые надо собирать руками. Есть отдельные диаризаторы, которые надо прикручивать отдельно от распознавания. Единого контура, в который закинул аудио и получил читаемый диалог, не было.
Дырка ровно в этом: между «записал разговор» и «прочитал расшифровку» нет одного шага. Есть пять — и каждый надо знать.
Что делает транскрибатор
CPU-only, бесплатные модели, без облачных ASR. На выходе — Markdown-диалог со спикерами и таймкодами. Не сплошная простыня текста, а разложенный по репликам разговор, который сразу можно читать и скармливать дальше.
REST API и MCP — чтобы ваш AI-клиент сам ставил задачи, ждал и читал расшифровку. Смысл MCP-обвязки именно в этом: не вы руками дёргаете транскрибацию и потом копируете результат, а клиент (тот же Claude) сам отправляет аудио на обработку, дожидается и забирает готовый диалог в контекст.
Что внутри
- faster-whisper на CPU (int8) — распознавание речи без GPU, в целочисленной квантизации, чтобы крутилось на обычном процессоре.
- Диаризация: sherpa или pyannote — разметка «кто говорит», на выбор один из двух движков.
- Языки en / ru / mixed (multi) — английский, русский и смешанный режим для разговоров, где языки перемешаны.
- Одноразовые ссылки на загрузку — удобно заливать аудио с телефона через Claude.ai: получил ссылку, закинул файл, ссылка сгорела.
- Аудио после обработки удаляется — всё остаётся у вас на машине, запись не оседает в облаке и не живёт на сервере дольше, чем нужно для обработки.
Последние два пункта — одноразовые ссылки и удаление аудио после обработки — ради этого всё и затевалось локально. Запись разговора не уезжает в чужой ASR, обрабатывается на вашем железе и там же стирается.
Как это работает с MCP
Обычный поток без MCP: открыть терминал, положить файл, запустить скрипт, дождаться, скопировать результат, вставить в чат с Claude. Пять ручных шагов, из которых четыре — ожидание и перекладывание.
С MCP клиент сам ставит задачу на транскрибацию, дожидается и забирает готовый Markdown-диалог в контекст. Вы можете скинуть аудио с телефона через одноразовую ссылку в Claude.ai — и дальше клиент сам отправит его на обработку, дождётся и отдаст вам расшифровку. Руками ничего копировать не надо.
Как запустить
Репозиторий: https://github.com/dobryakov/local-transcribe-audio-mcp
Если вы тоже хотели «просто свой транскрибатор под Claude» и вас не пугает чуть-чуть линукса — забирайте, поднимается обычным путём через docker compose.
Если у вас на диске лежат записи разговоров, которые вы собирались расшифровать «когда-нибудь» — теперь у вас есть инструмент, а у «когда-нибудь» больше нет отговорки.