Overview
ElevenLabs provides high-quality text-to-speech synthesis with two service implementations:ElevenLabsTTSService(WebSocket) — Real-time streaming with word-level timestamps, audio context management, and interruption handling. Recommended for interactive applications.ElevenLabsHttpTTSService(HTTP) — Simpler batch-style synthesis. Suitable for non-interactive use cases or when WebSocket connections are not possible.
ElevenLabs TTS API Reference
Complete API reference for all parameters and methods
Example Implementation
Complete example with WebSocket streaming
ElevenLabs Documentation
Official ElevenLabs TTS API documentation
Voice Library
Browse and clone voices from the community
Installation
Prerequisites
- ElevenLabs Account: Sign up at ElevenLabs
- API Key: Generate an API key from your account dashboard
- Voice Selection: Choose voice IDs from the voice library
Configuration
ElevenLabsTTSService
str
required
ElevenLabs API key.
str
required
deprecated
Voice ID from the voice library.
Deprecated in v0.0.105. Use
settings=ElevenLabsTTSService.Settings(voice=...) instead.str
default:"eleven_turbo_v2_5"
deprecated
ElevenLabs model ID. Use a
multilingual model variant (e.g.
eleven_multilingual_v2) if you need non-English language support.
Deprecated in v0.0.105. Use
settings=ElevenLabsTTSService.Settings(model=...) instead.str
default:"wss://api.elevenlabs.io"
WebSocket endpoint URL. Override for custom or proxied deployments.
int
default:"None"
Output audio sample rate in Hz. When
None, uses the pipeline’s configured
sample rate.TextAggregationMode
default:"TextAggregationMode.SENTENCE"
Controls how incoming text is aggregated before synthesis.
SENTENCE
(default) buffers text until sentence boundaries, producing more natural
speech. TOKEN streams tokens directly for lower latency. Import from
pipecat.services.tts_service.bool
default:"None"
deprecated
Deprecated in v0.0.104. Use
text_aggregation_mode instead.InputParams
default:"None"
deprecated
Deprecated in v0.0.105. Use
settings=ElevenLabsTTSService.Settings(...)
instead.ElevenLabsHttpTTSService
The HTTP service accepts the same parameters as the WebSocket service, with these differences:aiohttp.ClientSession
required
An aiohttp session for HTTP requests. You must create and manage this
yourself.
str
default:"https://api.elevenlabs.io"
HTTP API base URL (instead of
url for WebSocket).ElevenLabsHttpTTSSettings which also includes:
int
default:"None"
Latency optimization level (0–4). Higher values reduce latency at the cost of
quality.
Settings
Runtime-configurable settings passed via thesettings constructor argument using ElevenLabsTTSService.Settings(...). These can be updated mid-conversation with TTSUpdateSettingsFrame. See Service Settings for details.
NOT_GIVEN values use the ElevenLabs API defaults. See ElevenLabs voice
settings
for details on how these parameters interact.Usage
Basic Setup
With Voice Customization
Updating Settings at Runtime
Voice settings can be changed mid-conversation usingTTSUpdateSettingsFrame:
HTTP Service
Notes
- Multilingual models required for
language: Settinglanguagewith a non-multilingual model (e.g.eleven_turbo_v2_5) has no effect. Useeleven_multilingual_v2or similar. - WebSocket vs HTTP: The WebSocket service supports word-level timestamps and interruption handling, making it significantly better for interactive conversations. The HTTP service is simpler but lacks these features.
- Text aggregation: Sentence aggregation is enabled by default (
text_aggregation_mode=TextAggregationMode.SENTENCE). Buffering until sentence boundaries produces more natural speech. Settext_aggregation_mode=TextAggregationMode.TOKENto stream tokens directly for lower latency, but you must also setauto_mode=Falseinsettingswhen using TOKEN mode.