agentsclimarketplace

Elevenlabs hello world

Skill ComeOnOliver/skillshub/skills/jeremylongshore/claude-code-plugins-plus-skills/elevenlabs-hello-world

🧠 The right skill, one API call. AI agent skills registry with token-efficient skill resolution. 5,000+ skills from 500+ top repos.

Install
npx -y skills add ComeOnOliver/skillshub --skill elevenlabs-hello-world

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its author says it does

Copied from the file, not written here

Generate your first ElevenLabs text-to-speech audio file. Use when starting a new ElevenLabs integration, testing your setup, or learning basic TTS API patterns. Trigger: "elevenlabs hello world", "elevenlabs example", "elevenlabs quick start", "first elevenlabs TTS", "text to speech demo".

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

5.7 KB, as published. Nobody here has run it

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 elevenlabs-install-auth setup
  • 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 IDQualityLatencyLanguagesCost (credits/char)
eleven_v3Highest expressivenessMedium70+1.0
eleven_multilingual_v2High quality, emotionalMedium291.0
eleven_flash_v2_5Good, ultra-fast~75ms320.5
eleven_turbo_v2_5Good, fastLow320.5
eleven_monolingual_v1English onlyLow10.5

Common Default Voice IDs

VoiceIDStyle
Rachel21m00Tcm4TlvDq8ikWAMCalm, narration
DomiAZnzlk1XvdvUeBnXmlldStrong, assertive
BellaEXAVITQu4vr4xnSDxMaLSoft, warm
AntoniErXwobaYiN019PkySvjVWell-rounded, male
JoshTxGEqnHWrfWFTfGW9XjXDeep, narrative

Output Formats

Specified as codec_sampleRate_bitrate:

  • mp3_44100_128 (default, high quality)
  • mp3_22050_32 (smaller file, streaming)
  • pcm_16000 (raw PCM for processing)
  • pcm_44100 (high-quality raw)
  • ulaw_8000 (telephony)

Error Handling

ErrorHTTPCauseSolution
voice_not_found404Invalid voice_idUse GET /v1/voices to list valid IDs
invalid_api_key401Bad or missing keyCheck ELEVENLABS_API_KEY env var
model_not_found400Wrong model_id stringUse exact IDs from models table
text_too_long400Exceeds 5,000 charsSplit into chunks; use streaming for long text
quota_exceeded401Monthly character limit hitCheck 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.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.