ElevenLabs Voice AI

Najbardziej naturalne głosy AI z kontrolą emocji i obsługą wielu języków.

✓ Naturalne głosy

✓ Kontrola emocji

✓ 29 języków

✓ Klonowanie głosu

Uwierzytelnianie

Aby uzyskać dostęp do ElevenLabs przez Doitong API, użyj swojego klucza API. Dołącz go do mutacji GraphQL lub nagłówków REST API.

Ważne: Dbaj o bezpieczeństwo swojego klucza API Doitong i nigdy nie udostępniaj go w kodzie po stronie klienta. Zawsze wykonuj połączenia API ze swojego serwera backendowego.
// GraphQL Header
{
  "Authorization": "Bearer YOUR_API_KEY"
}

// REST Header
"X-API-Key": "YOUR_API_KEY"

Szybki start

Zacznij korzystać z ElevenLabs TTS API w zaledwie kilka minut. Wykonaj te proste kroki, aby wygenerować swój pierwszy tts.

Krok 1: Uzyskaj klucz API

Zarejestruj się w Doitong i przejdź do panelu sterowania, aby wygenerować klucz API.

Krok 2: Wykonaj pierwsze zapytanie

Użyj jednego z poniższych przykładów kodu, aby wykonać swoje pierwsze połączenie API.

curl -X POST https://api.doitong.com/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "query": "mutation Generate($input: GenerateInput!) { generate(input: $input) { id status type provider url metadata creditCost } }",
    "variables": {
      "input": {
        "type": "AUDIO",
        "provider": "elevenlabs",
        "input": {
          "text": "Hello world, this is a text to speech example.",
          "voice": "en-US-neural"
        },
        "options": {
          "speed": 1.0
        }
      }
    }
  }'
const response = await fetch('https://api.doitong.com/graphql', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify({
    query: `
      mutation GenerateSpeech($input: TTSInput!) {
        generateSpeech(input: $input) {
          id
          audioUrl
          duration
        }
      }
    `,
    variables: {
      input: {
        service: 'elevenlabs',
        text: 'Hello world, this is a text to speech example.',
        voice: 'en-US-neural',
        speed: 1.0
      }
    }
  })
});

const data = await response.json();
console.log('Result:', data.data.generate);
import requests
import json

url = "https://api.doitong.com/graphql"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_API_KEY"
}

query = """
mutation Generate($input: GenerateInput!) {
  generate(input: $input) {
    id
    status
    type
    provider
    url
    metadata
    creditCost
  }
}
"""

variables = {
    "input": {
        "type": "AUDIO",
        "provider": "elevenlabs",
        "input": {
            "text": "Hello world, this is a text to speech example.",
            "voice": "en-US-neural"
        },
        "options": {
            "speed": 1.0
        }
    }
}

response = requests.post(url, json={
    "query": query,
    "variables": variables
}, headers=headers)

data = response.json()
print("Result:", data["data"]["generate"])
mutation Generate($input: GenerateInput!) {
  generate(input: $input) {
    id
    status
    type
    provider
    url
    metadata
    creditCost
    createdAt
  }
}

# Variables
{
  "input": {
    "type": "AUDIO",
    "provider": "elevenlabs",
    "input": {
      "text": "Hello world, this is a text to speech example.",
      "voice": "en-US-neural"
    },
    "options": {
      "speed": 1.0,
      "pitch": 1.0,
      "language": "en",
      "version": "eleven-turbo-v2"
    }
  }
}

Cennik

ElevenLabs TTS API korzysta z modelu opartego na kredytach. Kredyty są pobierane w zależności od złożoności i czasu trwania generowanej treści.

Funkcja Kredyty Opis
Głos standardowy 1 kredyt za 100 znaków Podstawowe głosy neuronowe
Głos Premium 2 kredyty za 100 znaków Zaawansowane głosy neuronowe z emocjami

Endpointy API

ElevenLabs TTS API jest dostępny za pośrednictwem naszego ujednoliconego punktu końcowego GraphQL.

Endpoint GraphQL

POST https://api.doitong.com/graphql

Endpoint REST

POST https://api.doitong.com/v1/tts

Parametry

Dostępne parametry dla zapytań ElevenLabs TTS API:

Parametr Typ Wymagane Opis
service String Yes Identyfikator usługi: "elevenlabs"
version String No Model version: "eleven-turbo-v2"
webhookUrl String No URL do odbierania powiadomień o ukończeniu

Format odpowiedzi

Wszystkie odpowiedzi API mają spójny format:

Odpowiedź sukcesu

{
  "data": {
    "tts": {
      "id": "abc123xyz",
      "status": "processing",
      "url": null,
      "webhookUrl": "https://your-webhook.com/callback",
      "createdAt": "2024-01-01T00:00:00Z"
    }
  }
}

Odpowiedź ukończenia

{
  "data": {
    "tts": {
      "id": "abc123xyz",
      "status": "completed",
      "url": "https://cdn.doitong.com/outputs/abc123xyz.mp3",
      "duration": null,
      "createdAt": "2024-01-01T00:00:00Z"
    }
  }
}

Obsługa błędów

API korzysta ze standardowych kodów statusu HTTP i zwraca szczegółowe komunikaty o błędach.

Częste kody błędów

Kod statusu Typ błędu Opis
400 Bad Request Invalid parameters or malformed request
401 Unauthorized Missing or invalid API key
402 Payment Required Insufficient credits
429 Too Many Requests Rate limit exceeded
500 Internal Server Error Server error, please retry

Format odpowiedzi błędu

{
  "errors": [
    {
      "message": "Insufficient credits for this operation",
      "extensions": {
        "code": "INSUFFICIENT_CREDITS",
        "creditsRequired": 100,
        "creditsAvailable": 50
      }
    }
  ]
}

Webhooki

Otrzymuj powiadomienia w czasie rzeczywistym po zakończeniu generowania tts.

Konfiguracja webhooków

Include a <code>webhookUrl</code> parameter in your request to receive a POST notification when processing is complete.

Payload webhooka

{
  "id": "abc123xyz",
  "status": "completed",
  "url": "https://cdn.doitong.com/outputs/abc123xyz.mp3",
  "service": "elevenlabs",
  "createdAt": "2024-01-01T00:00:00Z",
  "completedAt": "2024-01-01T00:01:00Z",
  "metadata": {
    "duration": null,
    "width": null,
    "height": null
  }
}

Bezpieczeństwo webhooków

Wszystkie żądania webhook zawierają nagłówek z sygnaturą do weryfikacji:

X-Doitong-Signature: sha256=abc123...

Limity zapytań

Aby zapewnić sprawiedliwe użytkowanie i stabilność systemu, obowiązują następujące limity:

Plan Zapytania/minutę Równoległe zadania Limit dzienny
Bezpłatny 10 1 100
Starter 30 3 1,000
Pro 60 10 10,000
Enterprise Niestandardowy Niestandardowy Bez limitu
Nagłówki limitów: Sprawdź nagłówki odpowiedzi, aby poznać aktualny status limitów:
  • X-RateLimit-Limit: Maximum requests per window
  • X-RateLimit-Remaining: Requests remaining
  • X-RateLimit-Reset: Window reset timestamp

Dobre praktyki

1. Optymalizuj prompty

Twórz jasne i opisowe prompty, aby uzyskać najlepsze wyniki:

  • Be specific about visual elements, style, and mood
  • Include details about lighting, camera angles, and composition
  • Avoid contradictory or impossible requests

2. Obsługuj przetwarzanie asynchroniczne

Generowanie odbywa się asynchronicznie. Zaimplementuj odpowiednie odpytywanie (polling) lub webhooki:

// Polling example
async function pollStatus(jobId) {
  let status = 'processing';
  while (status === 'processing') {
    await sleep(2000); // Wait 2 seconds
    const result = await checkJobStatus(jobId);
    status = result.status;
  }
  return result;
}

3. Obsługa błędów i ponawianie

Zaimplementuj logikę ponawiania prób z wykładniczym czasem oczekiwania (exponential backoff):

async function retryWithBackoff(fn, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await fn();
    } catch (error) {
      if (i === maxRetries - 1) throw error;
      await sleep(Math.pow(2, i) * 1000);
    }
  }
}

4. Monitoruj zużycie kredytów

Śledź zużycie kredytów, aby uniknąć przerw w działaniu usługi:

  • Check credit balance before large batch operations
  • Set up alerts for low credit thresholds
  • Implement credit-aware request queuing

Gotowy, by zacząć?

Dołącz do tysięcy programistów używających ElevenLabs TTS API do tworzenia niesamowitych treści

Uzyskaj klucz API Sprawdź cennik