Cara Menggunakan ElevenLabs API dengan Mudah

Herve Kom

Herve Kom

29 January 2026

Cara Menggunakan ElevenLabs API dengan Mudah

ElevenLabs mengubah teks menjadi ucapan alami dan mendukung berbagai jenis suara, bahasa, dan gaya. API ini memudahkan untuk menyematkan suara ke dalam aplikasi, mengotomatiskan alur narasi, atau membangun pengalaman real-time seperti agen suara. Jika Anda dapat mengirim permintaan HTTP, Anda dapat menghasilkan audio dalam hitungan detik.

💡
Ingin menguji API ElevenLabs tanpa menulis kode terlebih dahulu? Unduh Apidog untuk mengirim permintaan, memeriksa respons audio, dan bereksperimen dengan pengaturan suara secara visual. Apidog memungkinkan Anda menyimpan koleksi API, membagikannya dengan tim Anda, dan menghasilkan kode klien secara otomatis—menghemat berjam-jam waktu penyiapan.

button

Apa Itu API ElevenLabs?

API ElevenLabs menyediakan akses terprogram ke model AI yang menghasilkan, mengubah, dan menganalisis audio. Platform ini dimulai sebagai layanan text-to-speech tetapi telah berkembang menjadi suite AI audio lengkap.

Situs web resmi ElevenLabs API

Kemampuan inti:

API ini bekerja melalui protokol HTTP dan WebSocket standar. Anda dapat memanggilnya dari bahasa apa pun, tetapi SDK resmi tersedia untuk Python dan JavaScript/TypeScript dengan keamanan tipe dan dukungan streaming yang terintegrasi.

Mendapatkan Kunci API ElevenLabs

Sebelum melakukan panggilan API apa pun, Anda memerlukan kunci API. Berikut cara mendapatkannya:

Langkah 1: Buat akun gratis. Bahkan paket gratis sudah termasuk akses API dengan 10.000 karakter per bulan.

Langkah 2: Masuk dan navigasi ke bagian **Profil + Kunci API**. Anda dapat menemukannya dengan mengklik ikon profil Anda di sudut kiri bawah, atau langsung menuju ke pengaturan pengembang.

Langkah 3: Klik **Buat Kunci API**. Salin kunci tersebut dan simpan dengan aman—Anda tidak akan dapat melihat kunci lengkapnya lagi.

Catatan keamanan penting:

Atur sebagai variabel lingkungan untuk contoh dalam panduan ini:

# Linux/macOS
export ELEVENLABS_API_KEY="your_api_key_here"

# Windows (PowerShell)
$env:ELEVENLABS_API_KEY="your_api_key_here"

Gambaran Umum Endpoint API ElevenLabs

API diorganisasikan berdasarkan beberapa grup sumber daya. Berikut adalah endpoint yang paling umum digunakan:

EndpointMetodeDeskripsi
/v1/text-to-speech/{voice_id}POSTMengubah teks menjadi audio ucapan
/v1/text-to-speech/{voice_id}/streamPOSTMengalirkan audio saat dibuat
/v1/speech-to-speech/{voice_id}POSTMengubah ucapan dari satu suara ke suara lain
/v1/voicesGETMencantumkan semua suara yang tersedia
/v1/voices/{voice_id}GETMendapatkan detail untuk suara tertentu
/v1/modelsGETMencantumkan semua model yang tersedia
/v1/userGETMendapatkan info dan penggunaan akun pengguna
/v1/voice-generation/generate-voicePOSTMenghasilkan suara acak baru

URL Dasar: https://api.elevenlabs.io

Otentikasi: Semua permintaan memerlukan header xi-api-key:

xi-api-key: your_api_key_here

Text-to-Speech dengan cURL

Cara tercepat untuk menguji API adalah dengan perintah cURL. Contoh ini menggunakan suara `Rachel` (ID: `21m00Tcm4TlvDq8ikWAM`), salah satu suara default yang tersedia di semua paket:

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

Jika berhasil, Anda akan mendapatkan file speech.mp3 dengan audio yang dihasilkan. Putar dengan pemutar media apa pun.

Membedah permintaan:

Respons mengembalikan data audio mentah. Format default adalah MP3, tetapi Anda dapat meminta format lain dengan menambahkan parameter kueri output_format:

# Dapatkan audio PCM daripada MP3
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

Menggunakan Python SDK

SDK Python resmi menyederhanakan integrasi dengan petunjuk tipe, pemutaran audio bawaan, dan dukungan streaming.

Instalasi

pip install elevenlabs

Untuk memutar audio langsung melalui speaker Anda, Anda mungkin juga memerlukan mpv atau ffmpeg:

# macOS
brew install mpv

# Ubuntu/Debian
sudo apt install mpv

Text-to-Speech Dasar

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",  # Suara George
    model_id="eleven_multilingual_v2",
    output_format="mp3_44100_128",
)

play(audio)

Menyimpan Audio ke File

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 disimpan ke output.mp3")

Mencantumkan Suara yang Tersedia

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}")

Ini mencetak semua suara yang tersedia di akun Anda, termasuk suara premade, suara kloning, dan suara komunitas yang telah Anda tambahkan.

Dukungan Asinkron

Untuk aplikasi yang menggunakan asyncio, SDK menyediakan AsyncElevenLabs:

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("Audio asinkron disimpan.")

asyncio.run(generate_speech())

Menggunakan JavaScript SDK

SDK Node.js resmi (@elevenlabs/elevenlabs-js) menyediakan dukungan TypeScript penuh dan berfungsi di lingkungan Node.js.

Instalasi

npm install @elevenlabs/elevenlabs-js

Text-to-Speech Dasar

import { ElevenLabsClient, play } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient({
  apiKey: process.env.ELEVENLABS_API_KEY,
});

const audio = await elevenlabs.textToSpeech.convert(
  "21m00Tcm4TlvDq8ikWAM",  // ID suara Rachel
  {
    text: "Hello from the ElevenLabs JavaScript SDK!",
    modelId: "eleven_multilingual_v2",
  }
);

await play(audio);

Menyimpan ke File (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 disimpan ke output.mp3");

Penanganan Kesalahan

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(`Kesalahan API: ${error.message}, Status: ${error.statusCode}`);
  } else {
    console.error("Kesalahan tak terduga:", error);
  }
}

SDK akan mencoba ulang permintaan yang gagal hingga 2 kali secara default, dengan batas waktu 60 detik. Kedua nilai ini dapat dikonfigurasi.

Streaming Audio Secara Real Time

Untuk chatbot, asisten suara, atau aplikasi apa pun di mana latensi menjadi masalah, streaming memungkinkan Anda mulai memutar audio sebelum seluruh respons dihasilkan. Ini sangat penting untuk AI percakapan di mana pengguna mengharapkan respons yang hampir instan.

Streaming Python

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",
)

# Putar audio yang di-streaming melalui speaker secara real time
stream(audio_stream)

Streaming JavaScript

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);

Streaming WebSocket

Untuk latensi terendah, gunakan koneksi WebSocket. Ini ideal untuk agen suara real-time di mana teks tiba dalam potongan (misalnya, dari LLM):

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:
        # Kirim konfigurasi awal
        await ws.send(json.dumps({
            "text": " ",
            "voice_settings": {"stability": 0.5, "similarity_boost": 0.75},
            "xi_api_key": "your_api_key",
        }))

        # Kirim potongan teks saat tiba (misalnya, dari 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}))

        # Sinyalkan akhir input
        await ws.send(json.dumps({"text": ""}))

        # Terima potongan audio
        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("Audio WebSocket disimpan.")

asyncio.run(stream_tts_websocket())

Pemilihan dan Manajemen Suara

ElevenLabs menawarkan ratusan suara. Memilih suara yang tepat penting untuk pengalaman pengguna aplikasi Anda.

Suara Default

Suara-suara ini tersedia di semua paket, termasuk paket gratis:

Nama SuaraID SuaraDeskripsi
Rachel21m00Tcm4TlvDq8ikWAMTenang, perempuan muda
Drew29vD33N1CtxCmqQRPOHJPria yang lengkap
Clyde2EiwWnXFnvU5JabPnv8nKarakter veteran perang
Paul5Q0t7uMcjvnagumLfvZiReporter lapangan
DomiAZnzlk1XvdvUeBnXmlldKuat, perempuan tegas
DaveCYw3kZ02Hs0563khs1FjPria Inggris yang komunikatif
FinD38z5RcWu1voky8WS1jaPria Irlandia
SarahEXAVITQu4vr4xnSDxMaLLembut, perempuan muda

Menemukan ID Suara

Gunakan API untuk mencari semua suara yang tersedia:

curl -X GET "https://api.elevenlabs.io/v1/voices" \
  -H "xi-api-key: $ELEVENLABS_API_KEY" | python3 -m json.tool

Atau filter berdasarkan kategori (premade, cloned, generated):

from elevenlabs.client import ElevenLabs

client = ElevenLabs(api_key="your_api_key")

# Hanya daftar suara yang sudah jadi
response = client.voices.search(category="premade")

for voice in response.voices:
    print(f"{voice.name}: {voice.voice_id}")

Anda juga dapat menyalin ID suara langsung dari situs web ElevenLabs: pilih suara, klik menu tiga titik, dan pilih **Salin ID Suara**.

Memilih Model yang Tepat

ElevenLabs menawarkan beberapa model, masing-masing dioptimalkan untuk kasus penggunaan yang berbeda:

Daftar model ElevenLabs
# Cantumkan semua model yang tersedia dengan detailnya
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()

Menguji API ElevenLabs dengan Apidog

Sebelum menulis kode integrasi, ada baiknya untuk menguji endpoint API secara interaktif. Apidog membuatnya mudah—Anda dapat mengonfigurasi permintaan secara visual, memeriksa respons (termasuk audio), dan menghasilkan kode klien setelah Anda puas.

button

Langkah 1: Siapkan Proyek Baru

Buka Apidog dan buat proyek baru. Beri nama "ElevenLabs API" atau tambahkan endpoint ke proyek yang sudah ada.

Langkah 2: Konfigurasi Otentikasi

Buka **Pengaturan Proyek > Auth** dan siapkan header global:

Ini secara otomatis melampirkan otentikasi ke setiap permintaan dalam proyek.

Langkah 3: Buat Permintaan Text-to-Speech

Buat permintaan POST baru:

{
  "text": "Menguji API ElevenLabs melalui Apidog. Ini memudahkan untuk bereksperimen dengan berbagai suara dan pengaturan.",
  "model_id": "eleven_flash_v2_5",
  "voice_settings": {
    "stability": 0.5,
    "similarity_boost": 0.75
  }
}

Klik **Kirim**. Apidog menampilkan header respons dan memungkinkan Anda mengunduh atau memutar audio secara langsung.

Langkah 4: Bereksperimen dengan Parameter

Gunakan antarmuka Apidog untuk dengan cepat mengganti ID suara, mengubah model, atau menyesuaikan pengaturan suara tanpa mengedit JSON mentah. Simpan konfigurasi yang berbeda sebagai endpoint terpisah dalam koleksi Anda untuk perbandingan yang mudah.

Langkah 5: Hasilkan Kode Klien

Setelah Anda mengonfirmasi bahwa permintaan berfungsi, klik **Hasilkan Kode** di Apidog untuk mendapatkan kode klien siap pakai dalam Python, JavaScript, cURL, Go, Java, dan lainnya. Ini menghilangkan terjemahan manual dari dokumen API ke kode yang berfungsi.

Coba sekarang:Unduh Apidog gratis

Pengaturan Suara dan Penyetelan Halus

Pengaturan suara memungkinkan Anda menyesuaikan bagaimana suara terdengar. Parameter-parameter ini dikirim dalam objek voice_settings:

ParameterRentangDefaultEfek
stability0.0 - 1.00.5Lebih tinggi = lebih konsisten, kurang ekspresif. Lebih rendah = lebih bervariasi, lebih emosional.
similarity_boost0.0 - 1.00.75Lebih tinggi = lebih dekat ke suara asli. Lebih rendah = lebih banyak variasi.
style0.0 - 1.00.0Lebih tinggi = gaya lebih berlebihan. Meningkatkan latensi. Hanya untuk Multilingual v2.
use_speaker_boostbooleantrueMeningkatkan kemiripan dengan pembicara asli. Peningkatan latensi kecil.

Contoh Praktis:

from elevenlabs.client import ElevenLabs

client = ElevenLabs(api_key="your_api_key")

# Suara narasi: konsisten, stabil
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,
    },
)

# Suara percakapan: ekspresif, alami
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,
    },
)

Pedoman:

Harga API ElevenLabs dan Batas Tarif

ElevenLabs menggunakan sistem harga berbasis kredit. Berikut adalah rinciannya:

Harga ElevenLabs

Pemecahan Masalah

KesalahanPenyebabSolusi
401 UnauthorizedKunci API tidak valid atau hilangPeriksa nilai headerxi-api-keyAnda
422 Unprocessable EntityBadan permintaan tidak validVerifikasi voice_id ada dan teks tidak kosong
429 Too Many RequestsBatas tarif terlampauiTambahkan `exponential backoff`, atau tingkatkan paket Anda
Audio terdengar robotikModel atau pengaturan salahCoba Multilingual v2 dengan stabilitas 0.5
Kesalahan pengucapanMasalah normalisasi teksEja angka/singkatan, atau gunakan pemformatan mirip SSML

Kesimpulan

API ElevenLabs memberikan akses kepada pengembang ke beberapa sintesis ucapan paling realistis yang tersedia saat ini. Baik Anda memerlukan beberapa baris narasi atau alur suara real-time penuh, API ini dapat diskalakan dari panggilan cURL sederhana hingga aliran WebSocket produksi.

Siap menambahkan suara realistis ke aplikasi Anda? Unduh Apidog untuk menguji endpoint API ElevenLabs, bereksperimen dengan pengaturan suara, dan menghasilkan kode klien—semuanya gratis, tanpa kartu kredit.

button

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.