transcript: { mode, provider }
Config por bot al despachar. mode ∈ {async, realtime}. provider ∈ {hosted-whisper, deepgram, assemblyai, gladia, aws-transcribe, elevenlabs}.
05 · transcription api
disponible H2 2026La grabación es el producto; la transcripción es un add-on. Trae tu propia clave para AWS Transcribe, Deepgram, AssemblyAI, Gladia o ElevenLabs y paga $0. O paga $0,10/h por Whisper-large-v3 hospedado con etiquetado de hablante incluido.
resumen
La división. No creemos que la transcripción debiera ir empaquetada en el precio de la grabación. Algunos equipos ya pagan a Deepgram o Gladia por salidas de mayor calidad; obligarles a pagarnos un $0,15/h oculto para ignorar nuestra transcripción sería insultante. Así que enviamos dos caminos y te dejamos elegir por bot. Por defecto en cuentas nuevas es «sin transcripción», porque la llamada API más barata es la que no haces.
BYOK significa que almacenas tu clave de proveedor en tu cuenta meetbot; al completar la grabación (o en vivo, sobre WebSocket) enrutamos el audio a través de la API de ese proveedor y devolvemos el resultado en el webhook de tu bot. Nunca vemos el contenido de la transcripción más allá de lo necesario para enrutar. Whisper hospedado corre en una caja GPU de Hetzner (RTX 4090), sirve unos veinte streams realtime concurrentes, y soporta cambio de idioma a mitad de reunión. El etiquetado de hablante se atornilla al mapeo existente de audio por hablante del bot — ya sabemos quién dijo qué; la transcripción lo hereda.
Async o realtime, tú eliges. Async es un POST tras terminar la reunión; realtime abre un WebSocket en wss://api.meetbot.dev/v1/transcripts/:bot_id y stream-ea enunciados parciales + finalizados según se producen. Ambos modos devuelven la misma forma JSONL etiquetada por speaker-id que usamos hoy para captions, así puedes intercambiar captions por transcripciones en tu consumidor downstream con un cambio de una línea.
superficie planificada
Config por bot al despachar. mode ∈ {async, realtime}. provider ∈ {hosted-whisper, deepgram, assemblyai, gladia, aws-transcribe, elevenlabs}.
JSON delimitado por nuevas líneas. Una fila por enunciado finalizado, con speakerId, name, text, tStart, tEnd. Misma forma que captions.
WebSocket realtime. Emite frames {type: partial|final, ...} según se producen los enunciados. Por hablante.
Transcripción async sobre una grabación previamente completada. Útil si decidiste habilitar transcripción solo después de la llamada.
Whisper-large-v3 detecta cambios de idioma a mitad de reunión. Tag de idioma por enunciado en el JSONL. Sin necesidad de declarar por adelantado.
Claves de proveedor almacenadas cifradas con claves derivadas de KMS por tenant. Rotación a través de /account/keys sin redespliegues.