ElevenLabs, metni doğal konuşmaya dönüştürür ve geniş bir ses, dil ve stil yelpazesini destekler. API, sesi uygulamalara kolayca yerleştirmeyi, anlatım süreçlerini otomatikleştirmeyi veya sesli asistanlar gibi gerçek zamanlı deneyimler oluşturmayı sağlar. Bir HTTP isteği gönderebiliyorsanız, saniyeler içinde ses üretebilirsiniz.
ElevenLabs API Nedir?
ElevenLabs API, ses üreten, dönüştüren ve analiz eden yapay zeka modellerine programlı erişim sağlar. Platform, bir metin-konuşma hizmeti olarak başladı ancak tam teşekküllü bir sesli yapay zeka paketine dönüştü.

Temel yetenekler:
- Metin-Konuşma (TTS): Yazılı metni, ses özellikleri, duygu ve tempo üzerinde kontrolle sözlü sese dönüştürün
- Konuşma-Konuşma (STS): Orijinal tonlama ve zamanlamayı koruyarak bir sesi başka bir sese dönüştürün
- Ses Klonlama: Sadece 60 saniyelik temiz sesten herhangi bir sesin dijital kopyasını oluşturun
- Yapay Zeka Dublajı: Konuşmacının ses özelliklerini koruyarak sesli/görüntülü içeriği farklı dillere çevirin ve dublaj yapın
- Ses Efektleri: Metin açıklamalarından ses efektleri oluşturun
- Konuşma-Metin: Sesi yüksek doğrulukla metne dönüştürün
API, standart HTTP ve WebSocket protokolleri üzerinden çalışır. Herhangi bir dilden çağırabilirsiniz, ancak tür güvenliği ve akış desteği yerleşik olarak bulunan Python ve JavaScript/TypeScript için resmi SDK'lar mevcuttur.
ElevenLabs API Anahtarını Alma
Herhangi bir API çağrısı yapmadan önce bir API anahtarına ihtiyacınız var. İşte nasıl alacağınız:
Adım 1: Ücretsiz bir hesap oluşturun. Ücretsiz plan bile ayda 10.000 karakterle API erişimi içerir.
Adım 2: Giriş yapın ve Profil + API Anahtarı bölümüne gidin. Bunu sol alt köşedeki profil simgenize tıklayarak veya doğrudan geliştirici ayarlarına giderek bulabilirsiniz.

Adım 3: API Anahtarı Oluştur'a tıklayın. Anahtarı kopyalayın ve güvenli bir yerde saklayın—tam anahtarı bir daha göremeyeceksiniz.

Önemli güvenlik notları:
- API anahtarınızı asla sürüm kontrolüne kaydetmeyin
- Üretimde ortam değişkenleri veya bir sır yöneticisi kullanın
- API anahtarları, ekip ortamları için belirli çalışma alanlarına kapsamlı olabilir
- Anahtarları düzenli olarak yenileyin ve tehlikeye girmiş anahtarları derhal iptal edin
Bu kılavuzdaki örnekler için bunu bir ortam değişkeni olarak ayarlayın:
# Linux/macOS
export ELEVENLABS_API_KEY="your_api_key_here"
# Windows (PowerShell)
$env:ELEVENLABS_API_KEY="your_api_key_here"
ElevenLabs API Uç Noktalarına Genel Bakış
API, birkaç kaynak grubu etrafında düzenlenmiştir. İşte en sık kullanılan uç noktalar:
| Uç Nokta | Yöntem | Açıklama |
|---|---|---|
/v1/text-to-speech/{voice_id} | POST | Metni konuşma sesine dönüştür |
/v1/text-to-speech/{voice_id}/stream | POST | Oluşturulduğu anda sesi aktar |
/v1/speech-to-speech/{voice_id} | POST | Konuşmayı bir sesten başka bir sese dönüştür |
/v1/voices | GET | Tüm mevcut sesleri listele |
/v1/voices/{voice_id} | GET | Belirli bir sesin ayrıntılarını al |
/v1/models | GET | Tüm mevcut modelleri listele |
/v1/user | GET | Kullanıcı hesap bilgilerini ve kullanımını al |
/v1/voice-generation/generate-voice | POST | Yeni bir rastgele ses oluştur |
Temel URL: https://api.elevenlabs.io
Kimlik Doğrulama: Tüm istekler xi-api-key başlığını gerektirir:
xi-api-key: your_api_key_here
cURL ile Metin-Konuşma
API'yi test etmenin en hızlı yolu bir cURL komutu kullanmaktır. Bu örnek, tüm planlarda bulunan varsayılan seslerden biri olan Rachel sesini (ID: 21m00Tcm4TlvDq8ikWAM) kullanır:
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": "Welcome to our application. This audio was generated using the ElevenLabs API.",
"model_id": "eleven_flash_v2_5",
"voice_settings": {
"stability": 0.5,
"similarity_boost": 0.75,
"style": 0.0,
"use_speaker_boost": true
}
}' \
--output speech.mp3
Başarılı olursa, oluşturulan sesle birlikte bir speech.mp3 dosyası alırsınız. Herhangi bir medya oynatıcıyla oynatın.
İsteği ayrıştırma:
- voice_id (URL'de): Kullanılacak sesin kimliği. ElevenLabs'taki her sesin benzersiz bir kimliği vardır.
- text: Konuşmaya dönüştürülecek içerik. Flash v2.5 modeli, istek başına 40.000 karaktere kadar destekler.
- model_id: Hangi yapay zeka modeli kullanılacak.
eleven_flash_v2_5, hız ve kalite arasında en iyi dengeyi sunar. - voice_settings: İsteğe bağlı ince ayar parametreleri (aşağıda ayrıntılı olarak ele alınmıştır).
Yanıt ham ses verilerini döndürür. Varsayılan biçim MP3'tür, ancak output_format sorgu parametresini ekleyerek başka biçimler de isteyebilirsiniz:
# MP3 yerine PCM sesi al
curl -X POST "https://api.elevenlabs.io/v1/text-to-speech/21m00Tcm4TlvDq8ikWAM?output_format=pcm_44100" \
-H "xi-api-key: $ELEVENLABS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Hello world", "model_id": "eleven_flash_v2_5"}' \
--output speech.pcm
Python SDK Kullanma
Resmi Python SDK'sı, tür ipuçları, yerleşik ses çalma ve akış desteği ile entegrasyonu basitleştirir.
Kurulum
pip install elevenlabs
Sesi doğrudan hoparlörlerinizden çalmak için mpv veya ffmpeg'ye de ihtiyacınız olabilir:
# macOS
brew install mpv
# Ubuntu/Debian
sudo apt install mpv
Temel Metin-Konuşma
import os
from elevenlabs.client import ElevenLabs
from elevenlabs import play
client = ElevenLabs(
api_key=os.getenv("ELEVENLABS_API_KEY")
)
audio = client.text_to_speech.convert(
text="The ElevenLabs API makes it easy to add realistic voice output to any application.",
voice_id="JBFqnCBsd6RMkjVDRZzb", # George voice
model_id="eleven_multilingual_v2",
output_format="mp3_44100_128",
)
play(audio)
Sesi Dosyaya Kaydet
from elevenlabs.client import ElevenLabs
client = ElevenLabs(api_key="your_api_key")
audio = client.text_to_speech.convert(
text="This audio will be saved to a file.",
voice_id="21m00Tcm4TlvDq8ikWAM",
model_id="eleven_flash_v2_5",
)
with open("output.mp3", "wb") as f:
for chunk in audio:
f.write(chunk)
print("Audio saved to output.mp3")
Mevcut Sesleri Listele
from elevenlabs.client import ElevenLabs
client = ElevenLabs(api_key="your_api_key")
response = client.voices.search()
for voice in response.voices:
print(f"Name: {voice.name}, ID: {voice.voice_id}, Category: {voice.category}")
Bu, önceden hazırlanmış sesler, klonlanmış sesler ve eklediğiniz topluluk sesleri dahil olmak üzere hesabınızdaki tüm mevcut sesleri yazdırır.
Asenkron Destek
asyncio kullanan uygulamalar için SDK, AsyncElevenLabs'ı sağlar:
import asyncio
from elevenlabs.client import AsyncElevenLabs
client = AsyncElevenLabs(api_key="your_api_key")
async def generate_speech():
audio = await client.text_to_speech.convert(
text="This was generated asynchronously.",
voice_id="21m00Tcm4TlvDq8ikWAM",
model_id="eleven_flash_v2_5",
)
with open("async_output.mp3", "wb") as f:
async for chunk in audio:
f.write(chunk)
print("Async audio saved.")
asyncio.run(generate_speech())
JavaScript SDK Kullanma
Resmi Node.js SDK'sı (@elevenlabs/elevenlabs-js), tam TypeScript desteği sağlar ve Node.js ortamlarında çalışır.
Kurulum
npm install @elevenlabs/elevenlabs-js
Temel Metin-Konuşma
import { ElevenLabsClient, play } from "@elevenlabs/elevenlabs-js";
const elevenlabs = new ElevenLabsClient({
apiKey: process.env.ELEVENLABS_API_KEY,
});
const audio = await elevenlabs.textToSpeech.convert(
"21m00Tcm4TlvDq8ikWAM", // Rachel voice ID
{
text: "Hello from the ElevenLabs JavaScript SDK!",
modelId: "eleven_multilingual_v2",
}
);
await play(audio);
Dosyaya Kaydet (Node.js)
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";
import { createWriteStream } from "fs";
import { Readable } from "stream";
import { pipeline } from "stream/promises";
const elevenlabs = new ElevenLabsClient({
apiKey: process.env.ELEVENLABS_API_KEY,
});
const audio = await elevenlabs.textToSpeech.convert(
"21m00Tcm4TlvDq8ikWAM",
{
text: "This audio will be written to a file using Node.js streams.",
modelId: "eleven_flash_v2_5",
}
);
const readable = Readable.from(audio);
const writeStream = createWriteStream("output.mp3");
await pipeline(readable, writeStream);
console.log("Audio saved to output.mp3");
Hata Yönetimi
import { ElevenLabsClient, ElevenLabsError } from "@elevenlabs/elevenlabs-js";
const elevenlabs = new ElevenLabsClient({
apiKey: process.env.ELEVENLABS_API_KEY,
});
try {
const audio = await elevenlabs.textToSpeech.convert(
"21m00Tcm4TlvDq8ikWAM",
{
text: "Testing error handling.",
modelId: "eleven_flash_v2_5",
}
);
await play(audio);
} catch (error) {
if (error instanceof ElevenLabsError) {
console.error(`API Error: ${error.message}, Status: ${error.statusCode}`);
} else {
console.error("Unexpected error:", error);
}
}
SDK, başarısız istekleri varsayılan olarak 2 kez, 60 saniyelik zaman aşımı ile yeniden dener. Her iki değer de yapılandırılabilir.
Gerçek Zamanlı Ses Akışı
Sohbet robotları, sesli asistanlar veya gecikmenin önemli olduğu herhangi bir uygulama için akış, yanıtın tamamı oluşturulmadan sesi çalmaya başlamanıza olanak tanır. Bu, kullanıcıların anında yanıt beklediği sohbet yapay zekası için kritik öneme sahiptir.
Python Akışı
from elevenlabs import stream
from elevenlabs.client import ElevenLabs
client = ElevenLabs(api_key="your_api_key")
audio_stream = client.text_to_speech.stream(
text="Streaming allows you to start hearing audio almost instantly, without waiting for the entire generation to complete.",
voice_id="JBFqnCBsd6RMkjVDRZzb",
model_id="eleven_flash_v2_5",
)
# Play streamed audio through speakers in real time
stream(audio_stream)
JavaScript Akışı
import { ElevenLabsClient, stream } from "@elevenlabs/elevenlabs-js";
const elevenlabs = new ElevenLabsClient();
const audioStream = await elevenlabs.textToSpeech.stream(
"JBFqnCBsd6RMkjVDRZzb",
{
text: "This audio streams in real time with minimal latency.",
modelId: "eleven_flash_v2_5",
}
);
stream(audioStream);
WebSocket Akışı
En düşük gecikme için WebSocket bağlantılarını kullanın. Bu, metnin parçalar halinde geldiği (örneğin bir LLM'den) gerçek zamanlı sesli ajanlar için idealdir:
import asyncio
import websockets
import json
import base64
async def stream_tts_websocket():
voice_id = "21m00Tcm4TlvDq8ikWAM"
model_id = "eleven_flash_v2_5"
uri = f"wss://api.elevenlabs.io/v1/text-to-speech/{voice_id}/stream-input?model_id={model_id}"
async with websockets.connect(uri) as ws:
# Send initial config
await ws.send(json.dumps({
"text": " ",
"voice_settings": {"stability": 0.5, "similarity_boost": 0.75},
"xi_api_key": "your_api_key",
}))
# Send text chunks as they arrive (e.g., from an LLM)
text_chunks = [
"Hello! ",
"This is streaming ",
"via WebSockets. ",
"Each chunk is sent separately."
]
for chunk in text_chunks:
await ws.send(json.dumps({"text": chunk}))
# Signal end of input
await ws.send(json.dumps({"text": ""}))
# Receive audio chunks
audio_data = b""
async for message in ws:
data = json.loads(message)
if data.get("audio"):
audio_data += base64.b64decode(data["audio"])
if data.get("isFinal"):
break
with open("websocket_output.mp3", "wb") as f:
f.write(audio_data)
print("WebSocket audio saved.")
asyncio.run(stream_tts_websocket())
Ses Seçimi ve Yönetimi
ElevenLabs yüzlerce ses sunar. Doğru olanı seçmek, uygulamanızın kullanıcı deneyimi için önemlidir.
Varsayılan Sesler
Bu sesler, ücretsiz katman dahil tüm planlarda mevcuttur:
| Ses Adı | Ses Kimliği | Açıklama |
|---|---|---|
| Rachel | 21m00Tcm4TlvDq8ikWAM | Sakin, genç kadın |
| Drew | 29vD33N1CtxCmqQRPOHJ | Dengeli erkek |
| Clyde | 2EiwWnXFnvU5JabPnv8n | Savaş gazisi karakteri |
| Paul | 5Q0t7uMcjvnagumLfvZi | Muhabir |
| Domi | AZnzlk1XvdvUeBnXmlld | Güçlü, iddialı kadın |
| Dave | CYw3kZ02Hs0563khs1Fj | Konuşkan İngiliz erkek |
| Fin | D38z5RcWu1voky8WS1ja | İrlandalı erkek |
| Sarah | EXAVITQu4vr4xnSDxMaL | Yumuşak, genç kadın |
Ses Kimliklerini Bulma
Tüm mevcut sesleri aramak için API'yi kullanın:
curl -X GET "https://api.elevenlabs.io/v1/voices" \
-H "xi-api-key: $ELEVENLABS_API_KEY" | python3 -m json.tool
Veya kategoriye göre filtreleyin (önceden hazırlanmış, klonlanmış, oluşturulmuş):
from elevenlabs.client import ElevenLabs
client = ElevenLabs(api_key="your_api_key")
# List only premade voices
response = client.voices.search(category="premade")
for voice in response.voices:
print(f"{voice.name}: {voice.voice_id}")
ElevenLabs web sitesinden de bir ses kimliğini doğrudan kopyalayabilirsiniz: bir ses seçin, üç noktalı menüye tıklayın ve Ses Kimliğini Kopyala'yı seçin.
Doğru Modeli Seçme
ElevenLabs, her biri farklı kullanım durumları için optimize edilmiş birden fazla model sunar:

# List all available models with details
from elevenlabs.client import ElevenLabs
client = ElevenLabs(api_key="your_api_key")
models = client.models.list()
for model in models:
print(f"Model: {model.name}")
print(f" ID: {model.model_id}")
print(f" Languages: {len(model.languages)}")
print(f" Max chars: {model.max_characters_request_free_user}")
print()
ElevenLabs API'yi Apidog ile Test Etme
Entegrasyon kodu yazmadan önce, API uç noktalarını etkileşimli olarak test etmek yardımcı olur. Apidog bunu kolaylaştırır — istekleri görsel olarak yapılandırabilir, yanıtları inceleyebilir (ses dahil) ve memnun kaldığınızda istemci kodu oluşturabilirsiniz.

Adım 1: Yeni Bir Proje Kurma
Apidog'u açın ve yeni bir proje oluşturun. Adını "ElevenLabs API" koyun veya uç noktaları mevcut bir projeye ekleyin.

Adım 2: Kimlik Doğrulamayı Yapılandırma
Proje Ayarları > Kimlik Doğrulama'ya gidin ve genel bir başlık ayarlayın:
- Başlık adı:
xi-api-key - Başlık değeri: ElevenLabs API anahtarınız
Bu, kimlik doğrulamayı projedeki her isteğe otomatik olarak ekler.
Adım 3: Metin-Konuşma İsteği Oluşturma
Yeni bir POST isteği oluşturun:
- URL:
https://api.elevenlabs.io/v1/text-to-speech/21m00Tcm4TlvDq8ikWAM - Gövde (JSON):
{
"text": "Testing the ElevenLabs API through Apidog. This makes it easy to experiment with different voices and settings.",
"model_id": "eleven_flash_v2_5",
"voice_settings": {
"stability": 0.5,
"similarity_boost": 0.75
}
}

Gönder'e tıklayın. Apidog, yanıt başlıklarını gösterir ve sesi doğrudan indirmenize veya oynatmanıza olanak tanır.
Adım 4: Parametrelerle Deneme Yapma
Apidog'un arayüzünü kullanarak ham JSON'u düzenlemeden ses kimliklerini hızla değiştirebilir, modelleri değiştirebilir veya ses ayarlarını yapabilirsiniz. Kolay karşılaştırma için farklı yapılandırmaları koleksiyonunuzda ayrı uç noktalar olarak kaydedin.
Adım 5: İstemci Kodu Oluşturma
İsteğin çalıştığını onayladıktan sonra, Apidog'da Kod Oluştur'a tıklayarak Python, JavaScript, cURL, Go, Java ve daha fazlası için kullanıma hazır istemci kodu alın. Bu, API belgelerinden çalışan koda manuel çeviriyi ortadan kaldırır.
Şimdi deneyin:Apidog'u ücretsiz indirin
Ses Ayarları ve İnce Ayar
Ses ayarları, bir sesin nasıl duyulduğunu ayarlamanıza olanak tanır. Bu parametreler voice_settings nesnesinde gönderilir:
| Parametre | Aralık | Varsayılan | Etki |
|---|---|---|---|
stability | 0.0 - 1.0 | 0.5 | Daha yüksek = daha tutarlı, daha az etkileyici. Daha düşük = daha değişken, daha duygusal. |
similarity_boost | 0.0 - 1.0 | 0.75 | Daha yüksek = orijinal sese daha yakın. Daha düşük = daha fazla varyasyon. |
style | 0.0 - 1.0 | 0.0 | Daha yüksek = daha abartılı stil. Gecikmeyi artırır. Sadece Multilingual v2 için geçerlidir. |
use_speaker_boost | boolean | true | Orijinal konuşmacıya benzerliği artırır. Küçük gecikme artışı. |
Pratik örnekler:
from elevenlabs.client import ElevenLabs
client = ElevenLabs(api_key="your_api_key")
# Narration voice: consistent, stable
narration = client.text_to_speech.convert(
text="Chapter One. It was a bright cold day in April.",
voice_id="21m00Tcm4TlvDq8ikWAM",
model_id="eleven_multilingual_v2",
voice_settings={
"stability": 0.8,
"similarity_boost": 0.8,
"style": 0.2,
"use_speaker_boost": True,
},
)
# Conversational voice: expressive, natural
conversational = client.text_to_speech.convert(
text="Oh wow, that's actually a great idea! Let me think about how we could make it work.",
voice_id="JBFqnCBsd6RMkjVDRZzb",
model_id="eleven_multilingual_v2",
voice_settings={
"stability": 0.3,
"similarity_boost": 0.6,
"style": 0.5,
"use_speaker_boost": True,
},
)
Yönergeler:
- Sesli kitaplar ve anlatım için, tutarlı bir sunum için daha yüksek stabilite (0.7-0.9) kullanın
- Sohbet robotları ve sohbet yapay zekası için, doğal varyasyon için daha düşük stabilite (0.3-0.5) kullanın
- Karakter sesleri için, farklı kişilikler yaratmak amacıyla daha düşük similarity_boost (0.4-0.6) ile deney yapın
styleparametresi yalnızca Multilingual v2 ile çalışır ve gecikmeyi artırır — gerçek zamanlı uygulamalar için bunu atlayın
ElevenLabs API Fiyatlandırması ve Hız Sınırları
ElevenLabs, kredi tabanlı bir fiyatlandırma sistemi kullanır. İşte dökümü:

Sorun Giderme
| Hata | Neden | Çözüm |
|---|---|---|
| 401 Yetkilendirilmemiş | Geçersiz veya eksik API anahtarı | xi-api-key başlık değerinizi kontrol edin |
| 422 İşlenemeyen Varlık | Geçersiz istek gövdesi | voice_id'nin var olduğundan ve metnin boş olmadığından emin olun |
| 429 Çok Fazla İstek | Hız sınırı aşıldı | Üstel geri çekilme ekleyin veya planınızı yükseltin |
| Ses robotik geliyor | Yanlış model veya ayarlar | Multilingual v2'yi stabilite 0.5 ile deneyin |
| Telaffuz hataları | Metin normalleştirme sorunu | Sayıları/kısaltmaları heceleyin veya SSML benzeri biçimlendirme kullanın |
Sonuç
ElevenLabs API, geliştiricilere bugün mevcut en gerçekçi konuşma sentezlerinden bazılarına erişim sağlar. İster birkaç satır anlatıma ister tam teşekküllü gerçek zamanlı bir ses hattına ihtiyacınız olsun, API basit cURL çağrılarından üretim WebSocket akışlarına kadar ölçeklenir.
Uygulamanıza gerçekçi ses eklemeye hazır mısınız? ElevenLabs API uç noktalarını test etmek, ses ayarlarıyla deney yapmak ve istemci kodu oluşturmak için Apidog'u indirin — hepsi ücretsiz, kredi kartı gerekmez.
