วิธีใช้ ElevenLabs API

Herve Kom

Herve Kom

29 January 2026

วิธีใช้ ElevenLabs API

Apidog สำหรับองค์กร

การติดตั้งแบบ On-Premises

SSO & RBAC

รองรับมาตรฐาน SOC 2

สำรวจ Apidog Enterprise

ElevenLabs เปลี่ยนข้อความให้เป็นคำพูดที่เป็นธรรมชาติ และรองรับเสียง ภาษา และรูปแบบที่หลากหลาย API ช่วยให้ฝังเสียงลงในแอปพลิเคชัน สร้างระบบบรรยายอัตโนมัติ หรือสร้างประสบการณ์แบบเรียลไทม์ เช่น ตัวแทนเสียง ได้อย่างง่ายดาย หากคุณสามารถส่งคำขอ HTTP ได้ คุณก็จะสามารถสร้างเสียงได้ภายในไม่กี่วินาที

💡
อยากทดสอบ ElevenLabs API โดยไม่ต้องเขียนโค้ดก่อนใช่ไหม? ดาวน์โหลด Apidog เพื่อส่งคำขอ ตรวจสอบการตอบสนองของเสียง และทดลองการตั้งค่าเสียงด้วยภาพ Apidog ช่วยให้คุณบันทึกชุด API แชร์กับทีมของคุณ และสร้างโค้ดไคลเอนต์ได้โดยอัตโนมัติ ซึ่งช่วยประหยัดเวลาในการตั้งค่าได้หลายชั่วโมง
button

ElevenLabs API คืออะไร?

ElevenLabs API ให้การเข้าถึงโปรแกรมโมเดล AI ที่สร้าง เปลี่ยนแปลง และวิเคราะห์เสียง แพลตฟอร์มนี้เริ่มต้นจากการเป็นบริการแปลงข้อความเป็นคำพูด แต่ได้ขยายไปสู่ชุด AI เสียงเต็มรูปแบบ

เว็บไซต์ทางการของ ElevenLabs API

ความสามารถหลัก:

API ทำงานผ่านโปรโตคอล HTTP และ WebSocket มาตรฐาน คุณสามารถเรียกใช้ได้จากทุกภาษา แต่มี SDK อย่างเป็นทางการสำหรับ Python และ JavaScript/TypeScript ที่มาพร้อมกับการป้องกันชนิดข้อมูล (type safety) และการรองรับการสตรีมในตัว

การขอ API Key ของ ElevenLabs

ก่อนที่จะเรียกใช้ API ใดๆ คุณต้องมี API key นี่คือวิธีการขอ:

ขั้นตอนที่ 1: สร้าง บัญชีฟรี แม้แต่แผนฟรีก็ยังมีการเข้าถึง API พร้อมอักขระ 10,000 ตัวต่อเดือน

ขั้นตอนที่ 2: เข้าสู่ระบบและไปที่ส่วน Profile + API Key คุณสามารถหาได้โดยคลิกไอคอนโปรไฟล์ของคุณที่มุมล่างซ้าย หรือไปที่การตั้งค่าสำหรับนักพัฒนาโดยตรง

ขั้นตอนที่ 3: คลิก Create API Key คัดลอกคีย์และจัดเก็บไว้ในที่ปลอดภัย คุณจะไม่สามารถเห็นคีย์เต็มได้อีก

ข้อควรระวังด้านความปลอดภัยที่สำคัญ:

ตั้งค่าเป็นตัวแปรสภาพแวดล้อมสำหรับตัวอย่างในคู่มือนี้:

# Linux/macOS
export ELEVENLABS_API_KEY="your_api_key_here"

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

ภาพรวม Endpoint ของ ElevenLabs API

API ถูกจัดกลุ่มตามทรัพยากรต่างๆ นี่คือ endpoint ที่ใช้บ่อยที่สุด:

Endpointเมธอดคำอธิบาย
/v1/text-to-speech/{voice_id}POSTแปลงข้อความเป็นเสียงพูด
/v1/text-to-speech/{voice_id}/streamPOSTสตรีมเสียงขณะที่กำลังสร้าง
/v1/speech-to-speech/{voice_id}POSTแปลงเสียงจากเสียงหนึ่งไปเป็นอีกเสียงหนึ่ง
/v1/voicesGETแสดงรายการเสียงทั้งหมดที่มี
/v1/voices/{voice_id}GETดูรายละเอียดสำหรับเสียงที่ระบุ
/v1/modelsGETแสดงรายการโมเดลทั้งหมดที่มี
/v1/userGETดูข้อมูลบัญชีผู้ใช้และการใช้งาน
/v1/voice-generation/generate-voicePOSTสร้างเสียงสุ่มใหม่

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

การยืนยันตัวตน: คำขอทั้งหมดต้องมีส่วนหัว xi-api-key:

xi-api-key: your_api_key_here

Text-to-Speech ด้วย cURL

วิธีที่เร็วที่สุดในการทดสอบ API คือการใช้คำสั่ง cURL ตัวอย่างนี้ใช้เสียง Rachel (ID: 21m00Tcm4TlvDq8ikWAM) ซึ่งเป็นหนึ่งในเสียงเริ่มต้นที่มีในทุกแผนบริการ:

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

หากสำเร็จ คุณจะได้รับไฟล์ speech.mp3 ที่มีเสียงที่สร้างขึ้นมา เล่นไฟล์ด้วยโปรแกรมเล่นสื่อใดก็ได้

วิเคราะห์คำขอ:

การตอบสนองจะคืนข้อมูลเสียงดิบ รูปแบบเริ่มต้นคือ MP3 แต่คุณสามารถขอรูปแบบอื่นได้โดยการเพิ่มพารามิเตอร์การสอบถาม output_format:

# Get PCM audio instead of 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

การใช้ Python SDK

Python SDK อย่างเป็นทางการช่วยลดความซับซ้อนของการรวมระบบด้วย type hints, การเล่นเสียงในตัว และการรองรับการสตรีม

การติดตั้ง

pip install elevenlabs

ในการเล่นเสียงโดยตรงผ่านลำโพงของคุณ คุณอาจต้องใช้ mpv หรือ ffmpeg ด้วย:

# macOS
brew install mpv

# Ubuntu/Debian
sudo apt install mpv

Text-to-Speech พื้นฐาน

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)

บันทึกเสียงลงไฟล์

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

แสดงรายการเสียงที่มี

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

นี่จะแสดงเสียงทั้งหมดที่มีในบัญชีของคุณ รวมถึงเสียงที่สร้างไว้ล่วงหน้า เสียงที่โคลน และเสียงจากชุมชนที่คุณเพิ่มเข้ามา

การรองรับแบบ Async

สำหรับแอปพลิเคชันที่ใช้ asyncio, SDK มี 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("Async audio saved.")

asyncio.run(generate_speech())

การใช้ JavaScript SDK

Node.js SDK อย่างเป็นทางการ (@elevenlabs/elevenlabs-js) ให้การรองรับ TypeScript เต็มรูปแบบและทำงานได้ในสภาพแวดล้อม Node.js

การติดตั้ง

npm install @elevenlabs/elevenlabs-js

Text-to-Speech พื้นฐาน

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

บันทึกเป็นไฟล์ (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");

การจัดการข้อผิดพลาด

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 จะลองส่งคำขอที่ล้มเหลวใหม่สูงสุด 2 ครั้งโดยค่าเริ่มต้น พร้อมกับการหมดเวลา 60 วินาที ทั้งสองค่าสามารถกำหนดค่าได้

การสตรีมเสียงแบบเรียลไทม์

สำหรับแชทบอท ผู้ช่วยเสียง หรือแอปพลิเคชันใดๆ ที่ความล่าช้าเป็นสิ่งสำคัญ การสตรีมช่วยให้คุณสามารถเริ่มเล่นเสียงได้ก่อนที่การตอบสนองทั้งหมดจะถูกสร้างเสร็จสมบูรณ์ สิ่งนี้สำคัญสำหรับ AI สนทนาที่ผู้ใช้คาดหวังการตอบสนองเกือบจะทันที

การสตรีมด้วย 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",
)

# Play streamed audio through speakers in real time
stream(audio_stream)

การสตรีมด้วย 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);

การสตรีมด้วย WebSocket

เพื่อความล่าช้าที่น้อยที่สุด ให้ใช้การเชื่อมต่อ WebSocket นี่เหมาะสำหรับตัวแทนเสียงแบบเรียลไทม์ที่ข้อความมาเป็นส่วนๆ (เช่น จาก 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:
        # 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())

การเลือกและการจัดการเสียง

ElevenLabs มีเสียงให้เลือกหลายร้อยเสียง การเลือกเสียงที่เหมาะสมเป็นสิ่งสำคัญสำหรับประสบการณ์ผู้ใช้ของแอปพลิเคชันของคุณ

เสียงเริ่มต้น

เสียงเหล่านี้มีให้ใช้งานในทุกแผน รวมถึงแผนฟรี:

ชื่อเสียงรหัสเสียงคำอธิบาย
Rachel21m00Tcm4TlvDq8ikWAMหญิงสาวใจเย็น
Drew29vD33N1CtxCmqQRPOHJชายหนุ่มเสียงดี
Clyde2EiwWnXFnvU5JabPnv8nตัวละครทหารผ่านศึก
Paul5Q0t7uMcjvnagumLfvZiนักข่าวภาคสนาม
DomiAZnzlk1XvdvUeBnXmlldหญิงสาวแข็งแกร่ง มั่นใจ
DaveCYw3kZ02Hs0563khs1Fjชายชาวอังกฤษเสียงสนทนา
FinD38z5RcWu1voky8WS1jaชายชาวไอริช
SarahEXAVITQu4vr4xnSDxMaLหญิงสาวอ่อนโยน

การค้นหารหัสเสียง

ใช้ API เพื่อค้นหาเสียงทั้งหมดที่มี:

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

หรือกรองตามหมวดหมู่ (ที่สร้างไว้ล่วงหน้า, โคลน, สร้างขึ้น):

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: เลือกเสียง คลิกเมนูสามจุด แล้วเลือก Copy Voice ID (คัดลอกรหัสเสียง)

การเลือกโมเดลที่เหมาะสม

ElevenLabs มีโมเดลหลายรูปแบบ โดยแต่ละแบบได้รับการปรับให้เหมาะสมกับการใช้งานที่แตกต่างกันไป:

รายการโมเดล ElevenLabs
# 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 ด้วย Apidog

ก่อนที่จะเขียนโค้ดสำหรับผสานรวม การทดสอบ endpoint ของ API แบบโต้ตอบจะมีประโยชน์ Apidog ทำให้เรื่องนี้ง่ายขึ้น คุณสามารถกำหนดค่าคำขอด้วยภาพ ตรวจสอบการตอบสนอง (รวมถึงเสียง) และสร้างโค้ดไคลเอนต์ได้เมื่อคุณพอใจแล้ว

button

ขั้นตอนที่ 1: ตั้งค่าโปรเจกต์ใหม่

เปิด Apidog และสร้างโปรเจกต์ใหม่ ตั้งชื่อว่า "ElevenLabs API" หรือเพิ่ม endpoint ลงในโปรเจกต์ที่มีอยู่

ขั้นตอนที่ 2: กำหนดค่าการยืนยันตัวตน

ไปที่ Project Settings > Auth และตั้งค่าส่วนหัวแบบ global:

สิ่งนี้จะแนบการยืนยันตัวตนกับทุกคำขอในโปรเจกต์โดยอัตโนมัติ

ขั้นตอนที่ 3: สร้างคำขอ Text-to-Speech

สร้างคำขอ POST ใหม่:

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

คลิก Send Apidog จะแสดงส่วนหัวการตอบสนองและช่วยให้คุณดาวน์โหลดหรือเล่นเสียงได้โดยตรง

ขั้นตอนที่ 4: ทดลองกับพารามิเตอร์

ใช้ส่วนต่อประสานของ Apidog เพื่อสลับรหัสเสียง เปลี่ยนโมเดล หรือปรับการตั้งค่าเสียงได้อย่างรวดเร็วโดยไม่ต้องแก้ไข JSON ดิบ บันทึกการกำหนดค่าต่างๆ เป็น endpoint แยกกันในคอลเลกชันของคุณเพื่อการเปรียบเทียบที่ง่ายดาย

ขั้นตอนที่ 5: สร้างโค้ดไคลเอนต์

เมื่อคุณยืนยันว่าคำขอทำงานได้แล้ว ให้คลิก Generate Code ใน Apidog เพื่อรับโค้ดไคลเอนต์พร้อมใช้งานใน Python, JavaScript, cURL, Go, Java และอื่นๆ ซึ่งช่วยลดการแปลคู่มือ API เป็นโค้ดที่ใช้งานได้ด้วยตนเอง

ลองเลย:ดาวน์โหลด Apidog ฟรี

การตั้งค่าเสียงและการปรับแต่งอย่างละเอียด

การตั้งค่าเสียงช่วยให้คุณปรับแต่งเสียงได้ พารามิเตอร์เหล่านี้จะถูกส่งในออบเจกต์ voice_settings:

พารามิเตอร์ช่วงค่าเริ่มต้นผลกระทบ
stability0.0 - 1.00.5สูงขึ้น = สม่ำเสมอมากขึ้น, แสดงอารมณ์น้อยลง ต่ำลง = ผันแปรมากขึ้น, แสดงอารมณ์มากขึ้น
similarity_boost0.0 - 1.00.75สูงขึ้น = ใกล้เคียงกับเสียงต้นฉบับมากขึ้น ต่ำลง = มีความหลากหลายมากขึ้น
style0.0 - 1.00.0สูงขึ้น = รูปแบบที่เกินจริงมากขึ้น เพิ่มความล่าช้า เฉพาะสำหรับ Multilingual v2 เท่านั้น
use_speaker_boostbooleantrueเพิ่มความคล้ายคลึงกับผู้พูดต้นฉบับ เพิ่มความล่าช้าเล็กน้อย

ตัวอย่างการใช้งานจริง:

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

แนวทางปฏิบัติ:

ราคาและข้อจำกัดการเรียกใช้ API ของ ElevenLabs

ElevenLabs ใช้ระบบราคาแบบเครดิต นี่คือรายละเอียด:

ราคา ElevenLabs

การแก้ไขปัญหา

ข้อผิดพลาดสาเหตุวิธีแก้ไข
401 UnauthorizedAPI key ไม่ถูกต้องหรือหายไปตรวจสอบค่าส่วนหัว xi-api-key ของคุณ
422 Unprocessable Entityบอดี้คำขอไม่ถูกต้องตรวจสอบว่า voice_id มีอยู่จริงและข้อความไม่ว่างเปล่า
429 Too Many Requestsเกินขีดจำกัดการเรียกใช้เพิ่ม exponential backoff หรืออัปเกรดแผนของคุณ
Audio sounds roboticโมเดลหรือการตั้งค่าไม่ถูกต้องลองใช้ Multilingual v2 โดยตั้งค่า stability ที่ 0.5
Pronunciation errorsปัญหาการทำให้ข้อความเป็นมาตรฐานสะกดตัวเลข/คำย่อ หรือใช้การจัดรูปแบบที่คล้าย SSML

บทสรุป

ElevenLabs API ช่วยให้นักพัฒนาสามารถเข้าถึงการสังเคราะห์เสียงที่สมจริงที่สุดในปัจจุบัน ไม่ว่าคุณจะต้องการการบรรยายเพียงไม่กี่บรรทัด หรือไปป์ไลน์เสียงแบบเรียลไทม์เต็มรูปแบบ API ก็สามารถปรับขนาดได้ตั้งแต่การเรียกใช้ cURL แบบง่าย ไปจนถึงการสตรีม WebSocket ในระดับการใช้งานจริง

พร้อมที่จะเพิ่มเสียงที่สมจริงให้กับแอปพลิเคชันของคุณแล้วหรือยัง? ดาวน์โหลด Apidog เพื่อทดสอบ endpoint ของ ElevenLabs API ทดลองกับการตั้งค่าเสียง และสร้างโค้ดไคลเอนต์—ทั้งหมดนี้ฟรี ไม่ต้องใช้บัตรเครดิต

button

ฝึกการออกแบบ API แบบ Design-first ใน Apidog

ค้นพบวิธีที่ง่ายขึ้นในการสร้างและใช้ API