Skip to main content

AI Voiceover

POST /v1/ai/voiceover

Generate natural-sounding voiceovers from text using ElevenLabs voices. Choose from dozens of voices across multiple languages.

Models​

ModelSpeedQualityCost (per min)
elevenlabs-flashFast (2-5s)Good$0.22
elevenlabs-hdMedium (5-15s)Highest$0.28

Request​

FieldTypeRequiredDescription
textstringYesThe text to convert to speech
modelstringNoelevenlabs-flash, elevenlabs-hd (default: elevenlabs-flash)
voicestringNoVoice ID or name (default: rachel)
languagestringNoLanguage code, e.g., en, es, fr (default: en)
speednumberNoSpeaking speed 0.5 to 2.0 (default: 1.0)
stabilitynumberNoVoice stability 0 to 1 (default: 0.5)
callbackstringNoWebhook URL

Example​

curl​

curl -X POST https://api.vidiking.com/v1/ai/voiceover \
-H "Authorization: Bearer $VIDIKING_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Welcome to our product demo. Today we will walk you through the key features that make our platform stand out from the competition.",
"model": "elevenlabs-flash",
"voice": "rachel",
"language": "en",
"speed": 1.0
}'

Node.js​

const voiceover = await client.ai.generateVoiceover({
text: 'Welcome to our product demo. Today we will walk you through the key features.',
model: 'elevenlabs-flash',
voice: 'rachel',
language: 'en',
speed: 1.0,
});

console.log('Audio URL:', voiceover.url);
console.log('Duration:', voiceover.duration, 'seconds');

Python​

voiceover = client.ai.generate_voiceover(
text="Welcome to our product demo. Today we will walk you through the key features.",
model="elevenlabs-flash",
voice="rachel",
language="en",
speed=1.0,
)

print("Audio URL:", voiceover.url)
print("Duration:", voiceover.duration, "seconds")

Response​

{
"id": "vo_abc123",
"url": "https://cdn.vidiking.com/ai/vo_abc123.mp3",
"duration": 8.5,
"model": "elevenlabs-flash",
"voice": "rachel",
"credits_used": 6,
"created_at": "2025-01-15T10:30:00Z"
}

Available Voices​

Voice IDNameGenderAccentBest For
rachelRachelFemaleAmericanNarration, explainers
adamAdamMaleAmericanCorporate, tutorials
bellaBellaFemaleBritishStorytelling, documentaries
jamesJamesMaleBritishNews, presentations
sofiaSofiaFemaleSpanishMultilingual content
marcusMarcusMaleAmericanEnergetic, marketing
ariaAriaFemaleAmericanConversational, podcasts
ottoOttoMaleGermanTechnical, precise

Use GET /v1/ai/voices to list all available voices.

curl https://api.vidiking.com/v1/ai/voices \
-H "Authorization: Bearer $VIDIKING_API_KEY"

Supported Languages​

English, Spanish, French, German, Italian, Portuguese, Dutch, Polish, Swedish, Norwegian, Danish, Finnish, Japanese, Korean, Chinese (Mandarin), Hindi, Arabic, Turkish, Russian, and more.

curl -X POST https://api.vidiking.com/v1/ai/voiceover \
-H "Authorization: Bearer $VIDIKING_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Bienvenidos a nuestra plataforma de video.",
"voice": "sofia",
"language": "es",
"speed": 0.9
}'

Speed Control​

Adjust the speed parameter to control pacing.

SpeedEffect
0.5Very slow, deliberate
0.75Slightly slow, clear enunciation
1.0Natural pace (default)
1.25Slightly fast
1.5Fast, energetic
2.0Very fast

Using Voiceover in Video​

Generate a voiceover and add it to a video timeline as an audio track.

// Generate voiceover
const vo = await client.ai.generateVoiceover({
text: 'This product will change how you work. Let me show you why.',
voice: 'marcus',
model: 'elevenlabs-hd',
});

// Use in video
const { jobId } = await client.render({
timeline: {
soundtrack: { src: vo.url, effect: 'fadeOut', volume: 1.0 },
tracks: [
{
clips: [
{
asset: { type: 'video', src: 'https://example.com/demo.mp4' },
start: 0,
length: vo.duration,
},
],
},
],
},
output: { format: 'mp4', resolution: 'hd' },
});