Providers
ElevenLabs
ElevenLabs TTS models (eleven_v3, multilingual v2, flash variants).
| Prefix | elevenlabs |
| Default model | eleven_multilingual_v2 |
| Env var | ELEVENLABS_API_KEY |
| Official docs | elevenlabs.io/docs |
Models
| Model | Streaming | Audio Tags | Notes |
|---|---|---|---|
eleven_v3 | Yes | Yes (passthrough) | Most expressive; supports all bracket tags |
eleven_multilingual_v2 | Yes | No | Default; stable multilingual |
eleven_flash_v2_5 | Yes | No | Low-latency, multilingual |
eleven_flash_v2 | Yes | No | Low-latency, English |
Usage
import { generateSpeech } from "@speech-sdk/core"
const result = await generateSpeech({
model: "elevenlabs/eleven_v3",
text: "Hello from SpeechSDK!",
voice: "EXAVITQu4vr4xnSDxMaL",
})The voice is an ElevenLabs voice ID — find IDs in the ElevenLabs voice library.
Audio Tags
eleven_v3 supports SpeechSDK's standardized audio tags natively via bracket syntax:
await generateSpeech({
model: "elevenlabs/eleven_v3",
text: "[laugh] That's hilarious! [sigh] But really though.",
voice: "EXAVITQu4vr4xnSDxMaL",
})Tags are passed straight through to the API. Other ElevenLabs models strip tags and return warnings.
Provider Options
await generateSpeech({
model: "elevenlabs/eleven_v3",
text: "Hello!",
voice: "EXAVITQu4vr4xnSDxMaL",
providerOptions: {
output_format: "mp3_44100_128",
enable_logging: false,
optimize_streaming_latency: 3,
voice_settings: {
stability: 0.5,
similarity_boost: 0.8,
style: 0.2,
use_speaker_boost: true,
},
},
})output_format, enable_logging, and optimize_streaming_latency are sent as query parameters. voice_settings is sent in the JSON body.
Custom Configuration
import { generateSpeech } from "@speech-sdk/core"
import { createElevenLabs } from "@speech-sdk/core/providers"
const elevenlabs = createElevenLabs({
apiKey: process.env.ELEVENLABS_API_KEY,
})
const result = await generateSpeech({
model: elevenlabs("eleven_v3"),
text: "[whispers] Hello from SpeechSDK.",
voice: "EXAVITQu4vr4xnSDxMaL",
})