ElevenLabs TTS integration for video narration. Use when generating voiceover audio, selecting voices, or building script-to-audio pipelines
View on GitHubyonatangross/orchestkit
ork
February 4, 2026
Select agents to install to:
npx add-skill https://github.com/yonatangross/orchestkit/blob/main/plugins/ork/skills/elevenlabs-narration/SKILL.md -a claude-code --skill elevenlabs-narrationInstallation paths:
.claude/skills/elevenlabs-narration/# ElevenLabs Narration for Video Production
Complete integration guide for using ElevenLabs text-to-speech in video production pipelines. Covers voice selection, timing calculations, API patterns, and cost optimization for professional narration.
## Overview
- Generating narration audio for video segments
- Selecting appropriate voices for content type
- Calculating segment timing from frames to milliseconds
- Building script-to-audio pipelines
- Optimizing API usage and costs
- Handling rate limits and errors
## ElevenLabs API Overview
### Model Comparison (2026)
| Model | Latency | Quality | Cost | Best For |
|-------|---------|---------|------|----------|
| **eleven_multilingual_v2** | Medium | Best | $0.30/1K chars | Production, multilingual |
| **eleven_turbo_v2_5** | Low | Excellent | $0.18/1K chars | Real-time, drafts |
| **eleven_flash_v2_5** | Lowest | Good | $0.08/1K chars | Previews, testing |
| **eleven_english_sts_v2** | Medium | Best | $0.30/1K chars | Speech-to-speech |
### API Endpoints
```
Base URL: https://api.elevenlabs.io/v1
POST /text-to-speech/{voice_id} # Generate audio
POST /text-to-speech/{voice_id}/stream # Stream audio
GET /voices # List voices
GET /voices/{voice_id} # Voice details
GET /user # Usage/quota
POST /speech-to-speech/{voice_id} # Voice conversion
```
## Core Integration Pattern
### Basic Text-to-Speech
```typescript
import { ElevenLabsClient } from 'elevenlabs';
const client = new ElevenLabsClient({
apiKey: process.env.ELEVENLABS_API_KEY
});
async function generateNarration(
text: string,
voiceId: string = 'Rachel'
): Promise<Buffer> {
const audio = await client.generate({
voice: voiceId,
text: text,
model_id: 'eleven_multilingual_v2',
voice_settings: {
stability: 0.5,
similarity_boost: 0.8,
style: 0.0,
use_speaker_boost: true
}
});
// Convert stream to buff