transcript: { mode, provider }
Config por bot no despacho. mode ∈ {async, realtime}. provider ∈ {hosted-whisper, deepgram, assemblyai, gladia, aws-transcribe, elevenlabs}.
05 · transcription api
disponível H2 2026A gravação é o produto; a transcrição é add-on. Traga sua chave para AWS Transcribe, Deepgram, AssemblyAI, Gladia, ou ElevenLabs e pague $0. Ou pague $0,10/h por Whisper-large-v3 hospedado com etiquetagem de falante incluída.
visão geral
A divisão. Não achamos que transcrição deva ir empacotada no preço da gravação. Alguns times já pagam Deepgram ou Gladia por saídas de qualidade superior; forçá-los a pagar um $0,15/h escondido pra ignorar nossa transcrição seria insultante. Então enviamos dois caminhos e deixamos você escolher por bot. Padrão pra contas novas é «sem transcrição», porque a chamada API mais barata é a que você não faz.
BYOK significa que você guarda sua chave de provedor na sua conta meetbot; ao completar gravação (ou ao vivo, sobre WebSocket) roteamos áudio pela API daquele provedor e devolvemos resultado no webhook do seu bot. Nunca vemos conteúdo da transcrição além do necessário pra rotear. Whisper hospedado roda em caixa GPU Hetzner (RTX 4090), serve cerca de vinte streams realtime concorrentes, e suporta troca de idioma a meio da reunião. Etiquetagem de falante é parafusada ao mapeamento existente de áudio por falante do bot — já sabemos quem disse o quê; transcrição herda.
Async ou realtime, sua escolha. Async é um POST após reunião terminar; realtime abre WebSocket em wss://api.meetbot.dev/v1/transcripts/:bot_id e stream-eia enunciados parciais + finalizados conforme produzidos. Ambos modos devolvem o mesmo formato JSONL etiquetado por speaker-id que usamos hoje pra captions, então você pode trocar captions por transcrições no seu consumidor downstream com mudança de uma linha.
superfície planejada
Config por bot no despacho. mode ∈ {async, realtime}. provider ∈ {hosted-whisper, deepgram, assemblyai, gladia, aws-transcribe, elevenlabs}.
JSON delimitado por nova linha. Uma linha por enunciado finalizado, com speakerId, name, text, tStart, tEnd. Mesmo formato que captions.
WebSocket realtime. Emite frames {type: partial|final, ...} conforme enunciados são produzidos. Por falante.
Transcrição async sobre gravação previamente completada. Útil se decidiu habilitar transcrição só depois da chamada.
Whisper-large-v3 detecta trocas de idioma a meio da reunião. Tag de idioma por enunciado no JSONL. Sem necessidade de declarar adiantado.
Chaves de provedor armazenadas criptografadas com chaves derivadas de KMS por tenant. Rotação por /account/keys sem redeploys.