meetbot.dev

05 · transcription api

выходит H2 2026

Транскрипты, опционально.

The recording is the product; the transcript is an add-on. Bring your own key for AWS Transcribe, Deepgram, AssemblyAI, Gladia, or ElevenLabs and pay $0. Or pay $0.10/hr for hosted Whisper-large-v3 with speaker tagging built in.

обзор

Зачем это существует.

Разделение. Мы не считаем, что транскрипция должна быть упакована в цену записи. Некоторые команды уже платят Deepgram или Gladia за более качественные выходы; заставлять их платить нам скрытые $0.15/ч, чтобы игнорировать наш транскрипт, было бы оскорбительно. Поэтому мы поставляем два пути и даём вам выбор на бота. По умолчанию для новых аккаунтов — «без транскрипции», потому что самый дешёвый API-вызов — тот, который вы не сделали.

BYOK означает, что вы храните ключ провайдера в своём аккаунте meetbot; на завершение записи (или live, через WebSocket) мы маршрутизируем аудио через API этого провайдера и возвращаем результат на webhook вашего бота. Мы никогда не видим содержимое транскрипта дальше того, что нужно для маршрутизации. Хостинг Whisper работает на Hetzner GPU-машине (RTX 4090), обслуживает примерно двадцать одновременных realtime-стримов и поддерживает переключение языка по ходу встречи. Тегирование speakers навешано поверх существующего mapping аудио по участнику бота — мы уже знаем, кто что сказал; транскрипт это наследует.

Async или realtime — на ваш выбор. Async — один POST после завершения встречи; realtime открывает WebSocket на wss://api.meetbot.dev/v1/transcripts/:bot_id и стримит partial + финализированные реплики по мере их выдачи. Оба режима возвращают ту же форму JSONL с тегами speaker-id, что мы используем для субтитров сегодня, поэтому вы можете заменить субтитры на транскрипты в downstream-потребителе одной строкой.

планируемая поверхность

Spec, открытый.

item

transcript: { mode, provider }

Конфиг на бота при dispatch. mode ∈ {async, realtime}. provider ∈ {hosted-whisper, deepgram, assemblyai, gladia, aws-transcribe, elevenlabs}.

item

transcript.jsonl

JSON, разделённый переводами строк. Одна строка на финализированную реплику, с speakerId, name, text, tStart, tEnd. Та же форма, что у субтитров.

item

wss://api.meetbot.dev/v1/transcripts/:id

Realtime WebSocket. Эмитит фреймы {type: partial|final, ...} по мере выдачи реплик. По speaker.

item

POST /v1/recordings/:id/transcript

Async-транскрипт на ранее завершённой записи. Полезно, если вы решили включить транскрипцию только после звонка.

item

Multilingual + language switching

Whisper-large-v3 определяет переключения языка по ходу встречи. Тег lang на реплику в JSONL. Не нужно объявлять заранее.

item

BYOK key vault

Ключи провайдеров хранятся зашифрованными ключами, выведенными из per-tenant KMS. Ротация через /account/keys без redeploy-ев.