transcript: { mode, provider }
Konfiguracja per bot przy dispatch. mode ∈ {async, realtime}. provider ∈ {hosted-whisper, deepgram, assemblyai, gladia, aws-transcribe, elevenlabs}.
05 · transcription api
dostarcza H2 2026The 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.
przegląd
Rozdzielenie. Nie sądzimy, że transkrypcja powinna być wpakowana w cenę nagrywania. Niektóre zespoły już płacą Deepgramowi lub Gladii za wyższej jakości wyjścia; zmuszanie ich do płacenia nam ukrytych $0.15/godz., żeby ignorować naszą transkrypcję, byłoby obraźliwe. Dlatego dostarczamy dwie ścieżki i pozwalamy wybrać per bot. Domyślnie dla nowych kont jest „bez transkrypcji", bo najtańsze wywołanie API to to, którego nie robisz.
BYOK oznacza, że trzymasz klucz dostawcy w swoim koncie meetbot; przy ukończeniu nagrania (lub na żywo, przez WebSocket) routujemy audio przez API tego dostawcy i zwracamy wynik na webhooku Twojego bota. Nigdy nie widzimy treści transkrypcji poza tym, co potrzebne do routingu. Hostowany Whisper działa na maszynie GPU Hetzner (RTX 4090), serwuje około dwudziestu współbieżnych strumieni realtime i wspiera przełączanie języka w środku spotkania. Tagowanie mówców jest przykręcone na istniejącym mapowaniu audio per mówca bota — wiemy już, kto co powiedział; transkrypt to dziedziczy.
Async lub realtime, Twój wybór. Async to jeden POST po zakończeniu spotkania; realtime otwiera WebSocket na wss://api.meetbot.dev/v1/transcripts/:bot_id i strumieniuje partial + sfinalizowane wypowiedzi w miarę produkcji. Oba tryby zwracają ten sam kształt JSONL z tagami speaker-id, którego używamy dziś dla napisów, więc możesz wymienić napisy na transkrypty w downstream konsumentu jedną zmianą linii.
planowany zakres API
Konfiguracja per bot przy dispatch. mode ∈ {async, realtime}. provider ∈ {hosted-whisper, deepgram, assemblyai, gladia, aws-transcribe, elevenlabs}.
JSON oddzielony nowymi liniami. Jeden wiersz na sfinalizowaną wypowiedź, ze speakerId, name, text, tStart, tEnd. Ten sam kształt co napisy.
WebSocket realtime. Emituje ramki {type: partial|final, ...} w miarę produkcji wypowiedzi. Per mówca.
Async transkrypt na wcześniej ukończonym nagraniu. Przydatne, jeśli zdecydowałeś się włączyć transkrypcję dopiero po połączeniu.
Whisper-large-v3 wykrywa przełączenia języka w środku spotkania. Tag lang per wypowiedź w JSONL. Bez konieczności deklaracji z góry.
Klucze dostawców przechowywane zaszyfrowane kluczami KMS-derived per tenant. Rotacja przez /account/keys bez redeployów.