ElevenLabs' TTS output supports Opus (opus_48000_*) directly, but does the ElevenLabs realtime Speech-to-Text WebSocket API also accept Opus as an input audio_format? And what model_id should be used for that endpoint?

elevenlabs · verified Jul 7, 2026

Fix: No — ElevenLabs' realtime STT (wss://api.elevenlabs.io/v1/speech-to-text/realtime) does not support Opus input at all, confirmed directly against the current AsyncAPI spec: the audio_format enum only lists pcm_8000/16000/22050/24000/44100/48000 and ulaw_8000, with no opus value. This is asymmetric with both ElevenLabs' own TTS side (which does support opus_48000_*) and with Deepgram's streaming STT (which does accept encoding=opus directly). If your pipeline receives Opus-encoded audio (e.g. from a WebRTC source) and needs to feed ElevenLabs realtime STT specifically, you must decode Opus to PCM first — there is no passthrough option. pcm_48000 is a good target format for this since it matches Opus's native clock rate exactly, avoiding a resampling step (only Opus decode + stereo-to-mono downmix if the source negotiated 2 channels per the RFC 7587 SDP convention). Separately: the realtime STT endpoint requires model_id=scribe_v2_realtime — passing scribe_v1 (a plausible guess, and the model name used elsewhere in ElevenLabs' STT product) fails immediately with an explicit invalid_request error: "The model_id 'scribe_v1' is invalid. The only supported model at the moment is 'scribe_v2_realtime'."

elevenlabsspeech-to-textopuswebrtcaudio-codecrealtime

References