Imported from inference-sh/skills (
tools/audio/elevenlabs-tts/SKILL.md) via skills.sh. Install upstream withnpx skills add inference-sh/skills --skill elevenlabs-tts. Copyright stays with the author.
Install the belt CLI skill:
npx skills add belt-sh/cli
ElevenLabs Text-to-Speech
Premium text-to-speech with 22+ voices via inference.sh CLI. Each ElevenLabs model is its own app, at one price.
ElevenLabs TTS
Quick Start
Requires the inference.sh CLI (
belt). Install instructions
belt login
# Generate speech with Eleven v4
belt app run elevenlabs/eleven-v4 --input '{"text": "Hello, welcome to our product demo.", "voice": "aria"}'
The result has an audio URL to the generated file.
Which App
| App | Model | Use it for | Text limit | Price per 1K characters |
|---|---|---|---|---|
elevenlabs/eleven-v4 |
Eleven v4 | Newest and most expressive; 90+ languages; audio tags | 10,000 | $0.08 |
elevenlabs/eleven-v4-turbo |
Eleven v4 Turbo | The low-latency v4; realtime voice agents | 10,000 | $0.04 |
elevenlabs/eleven-v3 |
Eleven v3 | Previous generation; 70+ languages; audio tags | 5,000 | $0.08 |
elevenlabs/eleven-multilingual-v2 |
Eleven Multilingual v2 | Stable long-form narration | 10,000 | $0.08 |
elevenlabs/eleven-flash-v2-5 |
Eleven Flash v2.5 | Fastest and cheapest; long texts and high volume | 40,000 | $0.04 |
- Every app has
run: the whole text in, an audio file out. - The two v4 apps also have
realtime: text streamed in, speech streamed back as it is written (see Realtime Speech). elevenlabs/eleven-v4andelevenlabs/eleven-v3also havedialogue: several voices in one take (see Dialogue).- Check the current price with
belt app pricing elevenlabs/eleven-v4.
elevenlabs/tts is the older app that takes the model as an input. It still works; prefer the per-model apps above.
Voice Library
Female Voices
| Voice | Style |
|---|---|
aria |
American, conversational |
alice |
British, confident |
bella |
American, warm |
jessica |
American, expressive |
laura |
American, professional |
lily |
British, soft |
sarah |
American, friendly |
Male Voices
| Voice | Style |
|---|---|
george |
British, authoritative |
adam |
American, deep |
bill |
American, mature |
brian |
American, conversational |
callum |
Transatlantic, intense |
charlie |
Australian, natural |
chris |
American, casual |
daniel |
British, commanding |
eric |
American, friendly |
harry |
American, young |
liam |
American, articulate |
matilda |
American, warm |
river |
American, confident |
roger |
American, authoritative |
will |
American, bright |
Examples
Basic Speech
belt app run elevenlabs/eleven-v4 --input '{"text": "Welcome to our quarterly earnings presentation.", "voice": "george"}'
Audio Tags (v4 and v3)
Tags in square brackets are performed, not read aloud. They are free-form directions: emotion, delivery, accents, sounds.
belt app run elevenlabs/eleven-v4 --input '{
"text": "[excited] We did it! [whispers] Nobody saw this coming. [laughs] What a day.",
"voice": "jessica"
}'
Common tags: [laughs], [whispers], [sighs], [excited], [sad], [shouts], [slow], [fast]. The other models read tags aloud, so leave them out there.
Choose a Model
# Long narration, stable delivery
belt app run elevenlabs/eleven-multilingual-v2 --input '{
"text": "Chapter one. It was a quiet morning in the harbour town.",
"voice": "daniel"
}'
# High volume at the lowest price
belt app run elevenlabs/eleven-flash-v2-5 --input '{
"text": "Your order has shipped and will arrive on Thursday.",
"voice": "sarah"
}'
Voice Tuning
belt app run elevenlabs/eleven-v3 --input '{
"text": "Fine-tune the voice characteristics for your use case.",
"voice": "bella",
"stability": 0.3,
"similarity_boost": 0.9,
"style": 0.4
}'
| Parameter | Range | Effect | Apps |
|---|---|---|---|
stability |
0-1 | Higher = more consistent, lower = more expressive | all |
similarity_boost |
0-1 | Higher = closer to original voice character | all |
style |
0-1 | Higher = more style exaggeration | v3, Multilingual v2, Flash v2.5 |
use_speaker_boost |
true/false | Enhances speaker clarity | v3, Multilingual v2, Flash v2.5 |
Eleven v4 and v4 Turbo have two settings only, stability and similarity_boost. Shape their delivery with audio tags.
Custom Voices
Pass voice_id to use a cloned or designed voice (from elevenlabs/voice-clone or elevenlabs/voice-design). It overrides voice.
belt app run elevenlabs/eleven-v4 --input '{"text": "This is my own voice.", "voice_id": "YOUR_VOICE_ID"}'
Output Formats
# High-quality MP3
belt app run elevenlabs/eleven-v4 --input '{
"text": "High quality audio output.",
"voice": "daniel",
"output_format": "mp3_44100_192"
}'
| Format | Description |
|---|---|
mp3_44100_128 |
MP3 at 44.1kHz, 128kbps (default) |
mp3_44100_192 |
MP3 at 44.1kHz, 192kbps |
pcm_16000 |
Raw PCM at 16kHz |
pcm_22050 |
Raw PCM at 22.05kHz |
pcm_24000 |
Raw PCM at 24kHz |
pcm_44100 |
Raw PCM at 44.1kHz |
Other Languages
Write the text in the language you want spoken.
# Spanish
belt app run elevenlabs/eleven-v4 --input '{
"text": "Hola, bienvenidos a nuestra presentación.",
"voice": "aria"
}'
# French
belt app run elevenlabs/eleven-v4 --input '{
"text": "Bonjour, bienvenue à notre démonstration.",
"voice": "alice"
}'
Dialogue
dialogue speaks a conversation in one take and returns one file. Each line has its own voice.
belt app run elevenlabs/eleven-v4 --function dialogue --input '{
"segments": [
{"text": "[excited] Did you hear? The release went out last night.", "voice": "jessica"},
{"text": "[surprised] Already? I thought that was next week.", "voice": "george"},
{"text": "[laughs] Nope. Everything shipped.", "voice": "jessica"}
]
}'
Up to 10 different voices. Keep one dialogue under about 2,000 characters and split a longer script into scenes. The price is the app's rate per character, counted across all lines.
Realtime Speech
realtime on elevenlabs/eleven-v4-turbo and elevenlabs/eleven-v4 is a live function: you stream text as it is written (an LLM's tokens, say) and get speech back while it is still coming. It runs over a socket, so call it from the SDK or the app's page, not with belt app run.
# pip install "inferencesh[async]"
import asyncio
from inferencesh import async_inference
async def main():
client = async_inference(api_key="...")
task, session = await client.live({
"app": "elevenlabs/eleven-v4-turbo",
"function": "realtime",
"input": {"voice": "george"},
})
async def speak():
for piece in ["Hello there. ", "This is spoken ", "while it is being written. "]:
await session.send({"events": {"type": "text", "text": piece}})
await session.send({"events": {"type": "end"}}) # finish speaking, then end
asyncio.create_task(speak())
async for frame in session:
if isinstance(frame, bytes):
play(frame) # raw PCM, 16-bit mono, 24 kHz
else:
print(frame) # {"characters": 54, "seconds": 3.9}
asyncio.run(main())
What you send, as {"events": {...}}:
| Event | Meaning |
|---|---|
{"type": "text", "text": "..."} |
Text to speak. Send it in pieces as it arrives. |
{"type": "flush"} |
Speak what was sent so far without waiting for more |
{"type": "end"} |
No more text: finish speaking, then end the session |
- Speech starts once about 40 characters and 8 words have arrived. For a short line, send
flush. - Closing the socket ends the session at once. Send
endwhen you want to hear the rest first. - The voice (
voiceorvoice_id),stabilityandlanguage_codeare set when the session opens. - A session ends by itself after
idle_minutes(default 2) without text. - You pay for the characters sent, at the app's rate.
Voice + Video Workflow
# 1. Generate voiceover
belt app run elevenlabs/eleven-v4 --input '{
"text": "Introducing the future of AI-powered content creation.",
"voice": "george"
}' > voiceover.json
# 2. Create talking head video
belt app run bytedance/omnihuman-1-5 --input '{
"image": "https://portrait.jpg",
"audio": "<audio-url-from-step-1>"
}'
Use Cases
- Voiceovers: Product demos, explainer videos, commercials
- Audiobooks: Long-form narration with consistent voices
- Podcasts: AI hosts with natural delivery
- E-learning: Course narration in multiple languages
- Accessibility: High-quality screen reader content
- IVR: Professional phone system messages
- Voice agents: Speak an LLM's answer while it is still being written, with
realtime - Video Narration: Documentary and social media content
Related Skills
# ElevenLabs multi-speaker dialogue
npx skills add inference-sh/skills@elevenlabs-dialogue
# ElevenLabs voice changer
npx skills add inference-sh/skills@elevenlabs-voice-changer
# ElevenLabs sound effects
npx skills add inference-sh/skills@elevenlabs-sound-effects
# All TTS models (Kokoro, DIA, Chatterbox, Inworld TTS, and more)
npx skills add inference-sh/skills@text-to-speech
# Full platform skill (all apps)
npx skills add inference-sh/skills@infsh-cli
Browse all audio apps: belt app list --category audio
