Claude-code-plugins-plus-skills elevenlabs-hello-world
install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/elevenlabs-pack/skills/elevenlabs-hello-world" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-skills-elevenlabs-hello-world && rm -rf "$T"
manifest:
plugins/saas-packs/elevenlabs-pack/skills/elevenlabs-hello-world/SKILL.mdsource content
ElevenLabs Hello World
Overview
Generate speech from text using the ElevenLabs TTS API. This skill covers the core
POST /v1/text-to-speech/{voice_id} endpoint with real voice IDs, model selection, and audio output.
Prerequisites
- Completed
setupelevenlabs-install-auth - Valid API key in
ELEVENLABS_API_KEY
Instructions
Step 1: Text-to-Speech with the SDK
TypeScript (recommended):
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js"; import { createWriteStream } from "fs"; import { Readable } from "stream"; import { pipeline } from "stream/promises"; const client = new ElevenLabsClient(); async function generateSpeech() { // Use a pre-made voice — "Rachel" is a default voice available on all accounts // Find voice IDs via: GET /v1/voices const audio = await client.textToSpeech.convert("21m00Tcm4TlvDq8ikWAM", { text: "Hello! This is your first ElevenLabs text-to-speech generation.", model_id: "eleven_multilingual_v2", // Best quality, 29 languages voice_settings: { stability: 0.5, // 0-1: lower = more expressive similarity_boost: 0.75, // 0-1: higher = closer to original voice style: 0.0, // 0-1: higher = more dramatic (costs more latency) speed: 1.0, // 0.7-1.2: speech speed multiplier }, }); // audio is a ReadableStream — pipe to file await pipeline( Readable.fromWeb(audio as any), createWriteStream("output.mp3") ); console.log("Audio saved to output.mp3"); } generateSpeech().catch(console.error);
Python:
from elevenlabs.client import ElevenLabsClient client = ElevenLabsClient() audio = client.text_to_speech.convert( voice_id="21m00Tcm4TlvDq8ikWAM", # Rachel text="Hello! This is your first ElevenLabs text-to-speech generation.", model_id="eleven_multilingual_v2", voice_settings={ "stability": 0.5, "similarity_boost": 0.75, "style": 0.0, }, ) with open("output.mp3", "wb") as f: for chunk in audio: f.write(chunk) print("Audio saved to output.mp3")
Step 2: Using cURL (Raw REST API)
curl -X POST "https://api.elevenlabs.io/v1/text-to-speech/21m00Tcm4TlvDq8ikWAM" \ -H "xi-api-key: ${ELEVENLABS_API_KEY}" \ -H "Content-Type: application/json" \ -d '{ "text": "Hello from the ElevenLabs API!", "model_id": "eleven_multilingual_v2", "voice_settings": { "stability": 0.5, "similarity_boost": 0.75 } }' \ --output output.mp3
Step 3: Streaming TTS (Low Latency)
For real-time playback, use the streaming endpoint:
async function streamSpeech() { const audioStream = await client.textToSpeech.stream("21m00Tcm4TlvDq8ikWAM", { text: "This audio is streamed in real-time for low-latency playback.", model_id: "eleven_flash_v2_5", // Optimized for streaming (~75ms latency) output_format: "mp3_22050_32", // codec_sampleRate_bitrate }); // Stream chunks arrive as they're generated const writer = createWriteStream("streamed.mp3"); for await (const chunk of audioStream) { writer.write(chunk); } writer.end(); console.log("Streamed audio saved to streamed.mp3"); }
Available Models
| Model ID | Quality | Latency | Languages | Cost (credits/char) |
|---|---|---|---|---|
| Highest expressiveness | Medium | 70+ | 1.0 |
| High quality, emotional | Medium | 29 | 1.0 |
| Good, ultra-fast | ~75ms | 32 | 0.5 |
| Good, fast | Low | 32 | 0.5 |
| English only | Low | 1 | 0.5 |
Common Default Voice IDs
| Voice | ID | Style |
|---|---|---|
| Rachel | | Calm, narration |
| Domi | | Strong, assertive |
| Bella | | Soft, warm |
| Antoni | | Well-rounded, male |
| Josh | | Deep, narrative |
Output Formats
Specified as
codec_sampleRate_bitrate:
(default, high quality)mp3_44100_128
(smaller file, streaming)mp3_22050_32
(raw PCM for processing)pcm_16000
(high-quality raw)pcm_44100
(telephony)ulaw_8000
Error Handling
| Error | HTTP | Cause | Solution |
|---|---|---|---|
| 404 | Invalid voice_id | Use to list valid IDs |
| 401 | Bad or missing key | Check env var |
| 400 | Wrong model_id string | Use exact IDs from models table |
| 400 | Exceeds 5,000 chars | Split into chunks; use streaming for long text |
| 401 | Monthly character limit hit | Check usage at elevenlabs.io/app/usage |
Resources
Next Steps
Proceed to
elevenlabs-local-dev-loop for development workflow setup, or elevenlabs-core-workflow-a for voice cloning.