ElevenLabs Voice AI

Luonnollisimmat tekoälyäänet tunneilmaisulla ja laajalla kielituella.

✓ Luonnolliset äänet

✓ Tunteiden hallinta

✓ 29 kieltä

✓ Äänen kloonaus

Autentikointi

Käyttääksesi palvelua ElevenLabs Doitong-API:n kautta, käytä Doitong-API-avaintasi. Lisää se GraphQL-mutaatioon tai REST-API-otsikoihin.

Tärkeää: Pidä Doitong-API-avaimesi turvassa äläkä koskaan paljasta sitä asiakaspuolen koodissa. Tee API-kutsut aina taustapalvelimeltasi.
// GraphQL Header
{
  "Authorization": "Bearer YOUR_API_KEY"
}

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

Pika-aloitus

Aloita palvelun ElevenLabs TTS API käyttö muutamassa minuutissa. Seuraa näitä ohjeita luodaksesi ensimmäisen kohteesi (tts).

Vaihe 1: Hae API-avaimesi

Luo Doitong-tili ja siirry hallintapaneeliin luodaksesi API-avaimen.

Vaihe 2: Tee ensimmäinen pyyntösi

Käytä alla olevia koodiesimerkkejä ensimmäisen API-kutsun tekemiseen.

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

Hinnoittelu

ElevenLabs TTS API käyttää krediittipohjaista hinnoittelumallia. Krediittejä kuluu luodun sisällön monimutkaisuuden ja keston mukaan.

Ominaisuus Krediitit Kuvaus
Vakioääni 1 krediitti per 100 merkkiä Perustason neuroverkot
Premium-ääni 2 krediittiä per 100 merkkiä Edistyneet tunteita ilmaisevat neuroverkot

API-päätepisteet

ElevenLabs TTS API on käytettävissä yhtenäisen GraphQL-päätepisteemme kautta.

GraphQL-päätepiste

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

REST-päätepiste

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

Parametrit

Käytettävissä olevat parametrit ElevenLabs TTS API-pyyntöihin:

Parametri Tyyppi Pakollinen Kuvaus
service Merkkijono Yes Palvelun tunniste: "elevenlabs"
version Merkkijono No Model version: "eleven-turbo-v2"
webhookUrl Merkkijono No URL-osoite ilmoitusten vastaanottamiseen

Vastausmuoto

Kaikki API-vastaukset noudattavat yhtenäistä muotoa:

Onnistunut vastaus

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

Valmis vastaus

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

Virheiden käsittely

API käyttää vakioita HTTP-tilakoodeja ja palauttaa yksityiskohtaisia virheilmoituksia.

Yleiset virhekoodit

Tilakoodi Virhetyyppi Kuvaus
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

Virhevastauksen muoto

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

Webhookit

Vastaanota reaaliaikaisia ilmoituksia, kun tts-luonti on valmis.

Webhookien määrittäminen

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

Webhook-data (Payload)

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

Webhook-tietoturva

Kaikki webhook-pyynnöt sisältävät allekirjoitusotsikon varmennusta varten:

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

Käyttörajat

Reilun käytön ja järjestelmän vakauden varmistamiseksi sovelletaan seuraavia rajoituksia:

Tilaus Pyyntöä/minuutti Samanaikaiset työt Päivittäinen raja
Ilmainen 10 1 100
Starter 30 3 1,000
Pro 60 10 10,000
Enterprise Mukautettu Mukautettu Rajoittamaton
Käyttörajojen otsikot: Tarkista vastauksen otsikoista nykyinen rajoitustila:
  • X-RateLimit-Limit: Maximum requests per window
  • X-RateLimit-Remaining: Requests remaining
  • X-RateLimit-Reset: Window reset timestamp

Parhaat käytännöt

1. Optimoi kehotteesi

Kirjoita selkeitä ja kuvailevia kehotteita parhaiden tulosten saavuttamiseksi:

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

2. Hallitse asynkronista käsittelyä

Luonti on asynkronista. Toteuta asianmukainen kysely (polling) tai käytä webhookeja:

// 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. Virheistä toipuminen

Toteuta uudelleenyrityslogiikka eksponentiaalisella viiveellä:

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. Seuraa krediittien kulutusta

Seuraa krediittien käyttöä välttääksesi keskeytykset:

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

Oletko valmis aloittamaan?

Liity tuhansien kehittäjien joukkoon, jotka käyttävät palvelua ElevenLabs TTS API upean sisällön luomiseen

Hae API-avain nyt Katso hinnoittelu