# Muse Voice Transcribe 1.0 (Realtime) - Core.Today AI API > Meta's Muse Voice Transcribe over a WebSocket - stream 16-bit PCM (24 kHz or 16 kHz mono) and receive partial and final transcripts while you speak, with endpointing and diarization. Billed per second of audio Meta processed (0.11625 credits/s, 35 credits per 5-minute block), sessions up to 20 minutes. - **Provider**: Meta - **Model ID**: meta/muse-voice-transcribe-1.0/realtime - **Category**: Audio & TTS - **Credits**: 35 per 5-minute block (0.11625 credits/s) - **Speed**: Fast - **Quality**: High ## Features - Streaming partial and final transcripts while the caller is still speaking - 25 languages with code-switching, Korean included - Speaker diarization and endpointing in DIARIZATION/ENDPOINTING modes - Keyword and language biasing, same as the file transcription endpoint - Sessions up to 20 minutes; settlement follows Meta's measured audio, not wall-clock time ## Use Cases - Live captioning or subtitles for a call or presentation - Voice-driven interfaces that need transcripts while the user is talking - Real-time meeting transcription with speaker turns as they happen ## API Endpoint Base URL: https://api.core.today/v1 Create Prediction: POST /predictions Get Status: GET /predictions/{job_id} ## Authentication Header: X-API-Key: YOUR_API_KEY ## Input Parameters ### Optional - **audioEncoding**: string (default: PCM_24KHZ) - Raw PCM 16-bit mono sample rate of the binary frames you send. Options: PCM_24KHZ, PCM_16KHZ - **mode**: string (default: PUSH_TO_TALK) - PUSH_TO_TALK returns one running transcript; ENDPOINTING splits into turns at speech boundaries; DIARIZATION additionally labels speakers. Options: PUSH_TO_TALK, ENDPOINTING, DIARIZATION - **partialMode**: string (default: CUMULATIVE) - CUMULATIVE partials replace the previous one; DELTA sends only new text. Options: CUMULATIVE, DELTA - **emitAudioProgress**: boolean (default: false) - Forward Meta's ~80ms audioProgress events (audioProcessedMs) to your client. - **keywords**: array - Names, acronyms or product terms to bias recognition toward. - **language_bias**: array - Language hint (steers recognition, does not force it). Omit for automatic detection across all 25 languages. Options: Arabic, Bengali, Dutch, English, French, German, Hebrew, Hindi, Indonesian, Italian, Japanese, Kannada, Korean, Malay, Mandarin Chinese, Marathi, Polish, Portuguese, Spanish, Tagalog, Tamil, Telugu, Thai, Turkish, Vietnamese ## Examples ### Handshake frame The first text frame you send after the WebSocket connects, in ENDPOINTING mode with a Korean language hint. Never put a real API key in client-side/browser code - use a server-side connection instead. ```json { "model": "meta/muse-voice-transcribe-1.0/realtime", "input": { "model": "meta/muse-voice-transcribe-1.0/realtime", "audioEncoding": "PCM_24KHZ", "mode": "ENDPOINTING", "partialMode": "CUMULATIVE", "emitAudioProgress": false, "keywords": [ "Core.Today" ], "languageBias": [ "Korean" ], "customerId": "member-123" } } ``` ## Response Format ```json { "job_id": "abc123", "status": "pending | processing | completed | failed", "result": "URL or data (when completed)" } ``` ## Usage Flow 1. POST /predictions with model and input -> receive job_id 2. GET /predictions/{job_id} -> poll until status is completed or failed 3. Result contains output URL(s) ## Tips - Send audio at real-time pace and pad silence when there's nothing to send - Meta closes the session after 10 seconds without audio ingress - Keep sessions under the 20-minute cap and reconnect for longer calls rather than expecting one session to run indefinitely - Use ENDPOINTING (or DIARIZATION for multi-speaker) for live captioning; PUSH_TO_TALK is meant for a single running transcript - Never embed your API key in browser/client-side code - connect from your own server and relay audio from there ## Documentation https://dev.meta.ai/docs/speech-to-text