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/時を強制するのは侮辱になります。だから 2 つのパスを出荷し、ボットごとに選んでもらいます。新規アカウントのデフォルトは「文字起こしなし」です。最も安い API 呼び出しは行わない呼び出しだからです。

BYOK はプロバイダのキーを meetbot アカウントに保存することを意味します。録画完了時 (またはライブ、WebSocket 経由) で音声をそのプロバイダの API 経由でルーティングし、結果をボットの webhook で返します。トランスクリプトの内容はルーティングに必要な分以上見ません。ホスト型 Whisper は Hetzner GPU マシン (RTX 4090) で動作し、約 20 の同時リアルタイムストリームを処理し、ミーティング途中の言語切り替えをサポートします。話者タグはボットの既存の話者ごと音声マッピングの上に乗ります — 我々はすでに誰が何を言ったかを知っており、トランスクリプトはそれを継承します。

Async でも realtime でも、選んでください。Async はミーティング終了後の 1 回の POST。Realtime は wss://api.meetbot.dev/v1/transcripts/:bot_id で WebSocket を開き、produce されるごとに partial + 確定発話をストリームします。両モードとも、今日字幕に使っているのと同じ speaker-id タグ付き JSONL 形を返すので、下流コンシューマで字幕をトランスクリプトに 1 行で交換できます。

honest scope

Where transcription stands today.

BYOK on per-speaker audio is available right now and free. Hosted Whisper-large-v3 lands Q4 2026 at $0.10/hr add-on. We are not in the model-training business; the GA path will use frontier ASR providers as black boxes.

works today

  • Per-speaker audio tracks (the input you need for ASR)

    Every bot dispatch ships audio.{speaker}.webm — one Opus track per participant, name-tagged from the meeting roster. Pipe each into Whisper / Deepgram / AssemblyAI / Gladia / AWS Transcribe / ElevenLabs on your own key. Zero meetbot fee on that leg.

  • Native captions JSONL passthrough

    captions.jsonl already ships per-meeting, surfaced verbatim from Meet/Teams/Zoom's own captioner. Newline-delimited, one row per finalized utterance with speakerId + start/end ms.

  • BYOK reference implementation

    samples/action-items-bot wires the per-speaker tracks into Whisper-large-v3 end-to-end. MIT-licensed; clone, swap your OPENAI_API_KEY, ship by Friday.

not yet

  • Hosted Whisper-large-v3 endpoint

    Q4 2026. Will run on a Hetzner GPU box (RTX 4090). $0.10/hr add-on. Speaker tagging inherits from the bot's existing per-speaker mapping.

  • Realtime WebSocket (wss://api.meetbot.dev/v1/transcripts/:bot_id)

    Q4 2026. Streams partial + finalized utterances as they're produced, per speaker.

  • Async transcript on completed recordings (POST /v1/recordings/:id/transcript)

    Q4 2026. For when you decided to enable transcription only after the call.

  • Mid-meeting language switching + per-utterance lang tags

    Q4 2026. Whisper-large-v3 handles this natively; we just have to surface it.

  • Hosted BYOK key vault (provider keys at rest under per-tenant KMS)

    Q4 2026. Today, BYOK means your key in your env; at GA we'll let you store it under our key-vault and rotate from /account/keys.

BYOK works today: dispatch a bot, take the per-speaker WebM tracks from the manifest, run them through Whisper / Deepgram / AssemblyAI yourself. The action-items-bot sample shows the pattern at github.com/meetbot-dev/sample-action-items-bot-ts.

計画中の機能

Spec、 オープンに。

item

transcript: { mode, provider }

Dispatch 時のボットごと設定。mode ∈ {async, realtime}。provider ∈ {hosted-whisper, deepgram, assemblyai, gladia, aws-transcribe, elevenlabs}。

item

transcript.jsonl

改行区切り JSON。確定発話 1 件につき 1 行、speakerId、name、text、tStart、tEnd 付き。字幕と同じ形。

item

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

Realtime WebSocket。発話が produce されるごとに {type: partial|final, ...} フレームを発行。話者ごと。

item

POST /v1/recordings/:id/transcript

以前完了した録画に対する async トランスクリプト。通話後に文字起こし有効化を決めた場合に有用。

item

Multilingual + language switching

Whisper-large-v3 がミーティング途中の言語切り替えを検出。発話ごとの lang タグが JSONL に。事前宣言不要。

item

BYOK key vault

プロバイダキーはテナントごとの KMS 由来キーで暗号化保存。redeploy なしで /account/keys 経由でローテーション。