ElevenLabs alternative: the same voices without a plan, or video that speaks
Most people who search for an ElevenLabs alternative like the voices and dislike the plan. Here are three ways out: the same ElevenLabs models paid per character, video models that speak for themselves, and talking avatars, with what each costs and the code to try the first.
Why people look for an ElevenLabs alternative
Usually it is not the voices. ElevenLabs still makes some of the most natural speech you can get. It is the plan around them: a monthly subscription with a character allowance, picked before you know how much you will use, and a separate bill next to the one for your video or image models. There are three ways out, and you can mix them.
1. The same ElevenLabs voices, paid per character
If you like how ElevenLabs sounds, keep it and drop the plan. Through Revana you call the ElevenLabs models by API and pay only for the characters you generate, from prepaid credit:
| Modelo | Per 1,000 characters | About one hour of speech | Best for |
|---|---|---|---|
| ElevenLabs V4 | $0.12 | $7.20 | Narration, voiceovers and long reads: natural and steady |
| ElevenLabs V3 | $0.12 | $7.20 | The most expressive: emotion, audio tags such as [whispers], dialogue |
| ElevenLabs Multilingual v2 | $0.12 | $7.20 | Proven, consistent narration in many languages |
| ElevenLabs Turbo 2.5 | $0.06 | $3.60 | Half the price: quick voiceovers, drafts, high volume |
- No subscription, no tiers. Quiet month, small bill. Busy month, no upgrade to buy first.
- Failed requests are free. The price is held when you submit and released if the job fails.
- One bill for voice, music and video. The same key and credit run ElevenLabs, Suno and every video model.
The full price breakdown, with code, is in ElevenLabs API pricing.
2. Skip the voiceover: video models that speak
If the voice ends up in a video anyway, you may not need a separate voiceover at all. The newest video models make dialogue, sound effects and ambience together with the picture, lip-synced, from a prompt like The cook says: "Last one tonight."
| Modelo | Per second with sound | Clip de 10 s | Good at |
|---|---|---|---|
| Kling 4.0 | $0.135 | $1.35 | Up to 30 s, stereo sound, people and motion |
| MiniMax H3 | $0.05 | $0.50 | Low price per second, up to nine reference images |
| Seedance 2.5 | $0.09 | $0.90 | Up to 30 s, reference video and audio, at 480p |
| Kling 3.0 | $0.13 | $1.30 | Sound optional, 4K when you need it |
The trade-off: you choose the words, but not an exact stock voice, and you cannot reuse the audio on its own. For ads, social clips and short scenes that is often fine; for narration over footage you already have, keep a voice model.
3. A voice track plus a face: talking avatars
For explainers, courses and support videos, make the speech with ElevenLabs and hand it to Kling Avatar with one portrait. It animates the face to your audio for up to five minutes, at $0.07 a second on Standard or $0.13 on Pro. Need music instead of speech? Suno makes a full song from a prompt for $0.08 a request.
Try it: ElevenLabs by API, no subscription
Send POST /v1/generations with the model id, the text and a voice id from the model page, then poll until the MP3 is ready. Turbo 2.5 reads 1,000 characters for $0.06.
export REVANA_API_KEY="sr_live_..."
# One Idempotency-Key per job, made once: resend with the same $KEY after a timeout, a 429 or a 5xx
KEY=$(uuidgen)
# 1. Submit the job (returns 202 with the generation id). max_cost_usd is your cap: the most it may cost.
curl https://api.revana.si/v1/generations \
-H "Authorization: Bearer $REVANA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $KEY" \
-d '{
"model": "elevenlabs-turbo-2.5",
"input": {
"text": "Nobody tells you this, but the hardest part of starting is the first five minutes. After that, it is just Tuesday.",
"voice": "EkK5I93UQWFDigLMpZcX",
"language_code": "en"
},
"max_cost_usd": 0.4
}'
# 2. Poll with the id from step 1 until status is "succeeded" or "failed".
# A failed job is free; make a new KEY before you submit it again.
curl https://api.revana.si/v1/generations/gen_01JC2W4R9Q \
-H "Authorization: Bearer $REVANA_API_KEY"import os
import time
import uuid
import requests
API = "https://api.revana.si/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['REVANA_API_KEY']}"}
# One Idempotency-Key per job, made once. Resend after a timeout, a 429 or a 5xx with the
# same KEY: you get the same job back, never a second charge.
KEY = str(uuid.uuid4())
resp = requests.post(f"{API}/generations", headers={**HEADERS, "Idempotency-Key": KEY}, json={
"model": "elevenlabs-turbo-2.5",
"input": {
"text": "Nobody tells you this, but the hardest part of starting is the first five minutes. After that, it is just Tuesday.",
"voice": "EkK5I93UQWFDigLMpZcX",
"language_code": "en",
},
"max_cost_usd": 0.4, # your cap: the most this job may cost
})
resp.raise_for_status()
job = resp.json()
while job["status"] in ("queued", "running"):
time.sleep(3)
job = requests.get(f"{API}/generations/{job['id']}", headers=HEADERS).json()
if job["status"] == "succeeded":
print(job["output"]["urls"], job["cost_usd"])
else:
# A failed job is free. To try again, make a new KEY: this one answers with the failure.
print("Failed:", job["error"])// Node 18 or later. Save as generate.mjs and run: node generate.mjs
import { randomUUID } from "node:crypto";
const API = "https://api.revana.si/v1";
const headers = {
Authorization: `Bearer ${process.env.REVANA_API_KEY}`,
"Content-Type": "application/json",
};
// One Idempotency-Key per job, made once. Resend after a timeout, a 429 or a 5xx with the
// same key: you get the same job back, never a second charge.
const key = randomUUID();
const res = await fetch(`${API}/generations`, {
method: "POST",
headers: { ...headers, "Idempotency-Key": key },
body: JSON.stringify({
model: "elevenlabs-turbo-2.5",
input: {
text: "Nobody tells you this, but the hardest part of starting is the first five minutes. After that, it is just Tuesday.",
voice: "EkK5I93UQWFDigLMpZcX",
language_code: "en",
},
max_cost_usd: 0.4, // your cap: the most this job may cost
}),
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
let job = await res.json();
while (job.status === "queued" || job.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
job = await (await fetch(`${API}/generations/${job.id}`, { headers })).json();
}
if (job.status === "succeeded") console.log(job.output.urls, job.cost_usd);
else console.error("Failed:", job.error); // free; to try again, make a new key{
"id": "gen_01JC2W4R9Q",
"model": "elevenlabs-turbo-2.5",
"status": "succeeded",
"output": {
"urls": [
"https://cdn.revana.si/g/gen_01JC2W4R9Q/0.mp3"
]
},
"cost_usd": 0.3,
"attempts": 1,
"error": null,
"created_at": "2026-11-12T10:14:02Z",
"completed_at": "2026-11-12T10:15:08Z"
}Which alternative fits
- You need narration over existing footage, an app that reads text aloud or an audiobook: keep ElevenLabs, pay per character.
- You are making the video too: try a video model with sound first; add a voiceover only if the scene needs a specific voice.
- You need a presenter on screen: ElevenLabs for the voice, Kling Avatar for the face.
Every model is on the models page with its live price, the full request reference is in the docs, credit is on the pricing page, or get an API key.
Preguntas frecuentes
What is the best ElevenLabs alternative?
If you like the voices, the simplest alternative is ElevenLabs itself without the plan: call its models by API and pay per character. If the voice goes into a video, a video model that makes speech with the picture, such as Kling 4.0 or MiniMax H3, can replace the voiceover altogether.
Can I use ElevenLabs without a subscription?
Yes. Through Revana you call ElevenLabs V4, V3, Multilingual v2 and Turbo 2.5 with an API key and pay from prepaid credit: $0.12 per 1,000 characters on V4, $0.06 on Turbo 2.5. There is nothing to cancel.
What is the cheapest ElevenLabs model?
Turbo 2.5, at $0.06 per 1,000 characters, half the price of V4, V3 and Multilingual v2.
Can a video model replace a voiceover?
Often. Kling 4.0, MiniMax H3, Seedance 2.5 and Kling 3.0 with sound make dialogue and sound effects with the picture, lip-synced. You write the lines in the prompt; you do not pick an exact stock voice.
Am I charged for a failed request?
No. The price is held when you submit and released if the job fails, so a failed request costs nothing.
Voices, music and video with one key
One API key for ElevenLabs, Suno and every video model. Prepaid credit from $10, charged only for what is delivered.