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 行で交換できます。

計画中の機能

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 経由でローテーション。