Skip to main content
ElevenLabs and Bland both support a long-lived WebSocket for partial LLM text. The main wire change is that Bland sends raw binary audio and uses explicit turns instead of JSON responses with base64 audio. Start with the working Realtime TTS Quickstart, then apply these mappings.

Message mapping

Replace the send loop

Do not port ElevenLabs chunk schedules, try_trigger_generation, or sentence timers. Bland buffers token input and chooses speech boundaries on the server.

Controls and output

  • Map ElevenLabs stability to Bland controls.stability, both from 0.0 to 1.0.
  • Tune Bland controls.expressiveness independently. similarity_boost, style, speaker boost, speed, and seed do not have direct Bland equivalents.
  • Bland realtime output is pcm_s16le at 8, 16, 24, 44.1, or 48 kHz, or 8 kHz mu-law. It does not emit MP3 over this WebSocket.
  • Bland does not currently return alignment or timestamp events.
On interruption, send the replacement response under a new context_id. Bland preempts the old turn automatically. Also discard any old audio that remains in your local playback queue. See the ElevenLabs WebSocket reference and the Bland WebSocket reference.
Docs for agents: llms.txt