Τεκμηρίωση API

Ενσωμάτωση TTS.ai στις εφαρμογές σας με REST API μας. OpenAI συμβατή μορφή για εύκολη μετανάστευση.

REST API OpenAI Συμβατό Ανταποκρίσεις JSON Streaming Support

Επισκόπηση

The TTS.ai API provides programmatic access to all platform features: text-to-speech synthesis, speech-to-text transcription, voice cloning, audio enhancement, and more. The API uses standard REST conventions with JSON request/response bodies.

Κλειδί API

Πάρτε το κλειδί API σας από Ρυθμίσεις λογαριασμού. Διαθέσιμο στα σχέδια Pro και Enterprise.

URL βάσηςName

https://api.tts.ai/v1/

Auth

Σημάδι Bearer μέσω Authorization κεφαλίδα

Ταυτοποίηση

Όλες οι αιτήσεις API απαιτούν εξακρίβωση ταυτότητας μέσω ενός σήματος Bearer στο Authorization κεφαλίδα.

Κεφαλίδα HTTP
Authorization: Bearer sk-tts-your-api-key-here
Κρατήστε το κλειδί API σας μυστικό. Μην το μοιράζεστε σε κωδικό από την πλευρά του πελάτη, δημόσια αρχεία ή αρχεία καταγραφής. Περιστρέψτε τα πλήκτρα τακτικά από τις ρυθμίσεις του λογαριασμού σας.

URL βάσηςName

URL βάσηςName: https://api.tts.ai/v1/

Όλα τα τελικά σημεία είναι σχετικά με αυτό το URL βάσης. Για παράδειγμα, το τελικό σημείο TTS είναι:

POST https://api.tts.ai/v1/tts/

Όρια ποσοστών

Τα όρια του ποσοστού API ποικίλλουν ανάλογα με το σχέδιο:

Σχέδιο Αιτήσεις/λεπτό Concurrent Μέγιστο μήκος κειμένου
Pro 60 5 5.000 chars
ΕντερπράιζCity name (optional, probably does not need a translation) 300 20 50,000 chars

Οι κεφαλίδες ορίου ταχύτητας περιλαμβάνονται σε κάθε απάντηση: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Πιστωτικά έξοδα

Υπηρεσία Κόστος Μονάδα
TTS (Δωρεάν μοντέλα: Piper, VITS, MeloTTS) 1 πίστωση ανά 1.000 χαρακτήρες
TTS (τυπικά μοντέλα: Kokoro, CosyVoice 2, κ.λπ.) 2 πιστώσεις ανά 1.000 χαρακτήρες
TTS (Πremium μοντέλα: Tortoise, Chatterbox κ.λπ.) 4 πιστώσεις ανά 1.000 χαρακτήρες
Ομιλία προς κείμενο 2 πιστώσεις ανά λεπτό ήχου
Κλωνοποίηση φωνής 4 πιστώσεις ανά 1.000 χαρακτήρες
Αλλαγή φωνής 3 πιστώσεις ανά λεπτό ήχου
Ενίσχυση ήχου 2 πιστώσεις ανά λεπτό ήχου
Φωνητική αφαίρεση/Διαχωρισμός στέμματος 3-4 πιστώσεις ανά λεπτό ήχου
Μετάφραση λόγου 5 πιστώσεις ανά λεπτό ήχου
Φωνητική συνομιλία 3 πιστώσεις ανά στροφή
Κλειδί & BPM FinderName Ατελώς --
Μετατροπέας ήχουName Ατελώς --

Κείμενο σε λόγο

POST /v1/tts/

Μετατροπή κειμένου σε ομιλία ήχου. Επιστρέφει το αρχείο ήχου με την αιτούμενη μορφή.

Αιτούμενος φορέας

ΠαράμετροςΤύποςΑπαιτείταιΠεριγραφή εμπορευμάτων
model string Ναι. Υπόδειγμα ID (π.χ., kokoro, chatterbox, piper)
text string Ναι. Κείμενο για μετατροπή σε ομιλία (μέγ. 5.000 chars για Pro, 50.000 για Enterprise)
voice string Ναι. Voice ID (use /v1/voices/ to list available voices)
format string Όχι. Μορφότυπος εξόδου: mp3 (default), wav, flac, ogg
speed float Όχι. Πολλαπλασιαστής ταχύτητας ομιλίας. Προκαθορισμένο: 1.0. Εύρος: 0.5 to 2.0
language string Όχι. Κωδικός γλώσσας (π.χ., en, es).
stream boolean Όχι. Ενεργοποίηση απόκρισης ροής. Προκαθορισμένο: false

Αίτηση παραδείγματος

cURL
curl -X POST https://api.tts.ai/v1/tts/ \
  -H "Authorization: Bearer sk-tts-your-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kokoro",
    "text": "Hello from TTS.ai! This is a test.",
    "voice": "af_bella",
    "format": "mp3"
  }' \
  --output output.mp3

Απάντηση

Returns the audio file as binary data with appropriate Content-Type header (audio/mpeg, audio/wav, etc.).

Επικεφαλίδες απόκρισης
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498

Ομιλία προς κείμενο

POST /v1/stt/

Υποστηρίζει 99 γλώσσες με αυτόματη προστασία.

Αιτούμενος φορέας (multipart/form-data)

ΠαράμετροςΤύποςΑπαιτείταιΠεριγραφή εμπορευμάτων
file file Ναι. Αρχείο ήχου (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB.
model string Όχι. Μοντέλο STT: whisper (default), faster-wisper, sensevoice
language string Όχι. Κωδικός γλώσσας. auto for auto-detection (default).
timestamps boolean Όχι. Συμπεριλάβετε χρονοσφραγίσεις σε επίπεδο λέξεων. Προκαθορισμένο: false
diarize boolean Όχι. Ενεργοποίηση διαχωρισμού ηχείων. Προκαθορισμένο: false

Απάντηση

Απάντηση του JSON
{
  "text": "Hello, this is a transcription test.",
  "language": "en",
  "duration": 3.5,
  "segments": [
    {
      "start": 0.0,
      "end": 1.8,
      "text": "Hello, this is",
      "speaker": "SPEAKER_00"
    },
    {
      "start": 1.8,
      "end": 3.5,
      "text": "a transcription test.",
      "speaker": "SPEAKER_00"
    }
  ]
}

Κλωνοποίηση φωνής

POST /v1/tts/clone/

Δημιουργήστε λόγο σε μια κλωνοποιημένη φωνή. Ανεβάστε έναν ήχο αναφοράς και κείμενο.

Αιτούμενος φορέας (multipart/form-data)

ΠαράμετροςΤύποςΑπαιτείταιΠεριγραφή εμπορευμάτων
reference_audio file Ναι. Αναφορά ήχου φωνής (10-30 δευτερόλεπτα συνιστάται).
text string Ναι. Μήνυμα για να μιλήσω με την κλωνοποιημένη φωνή.
model string Όχι. Μοντέλο Clone: chatterbox (default), cosyvoice2, gpt-sovits
format string Όχι. Μορφότυπος εξόδου: mp3 (default), wav, flac
language string Όχι. Ο κωδικός γλώσσας-στόχου πρέπει να υποστηρίζεται από το επιλεγμένο μοντέλο.

Απάντηση

Επιστρέφει το αρχείο ήχου ως δυαδικά δεδομένα, όπως το τελικό σημείο TTS.

Αλλαγή φωνής

POST /v1/voice-convert/

Μετατρέψτε τον ήχο για να ακούγεται σαν μια διαφορετική φωνή. Ανεβάστε τον ήχο πηγή και επιλέξτε μια φωνή στόχο.

Αιτούμενος φορέας (multipart/form-data)

ΠαράμετροςΤύποςΑπαιτείταιΠεριγραφή εμπορευμάτων
file file Ναι. Πηγή αρχείο ήχου (MP3, WAV, FLAC). Max 50MB.
target_voice string Ναι. ID φωνής στόχου για μετατροπή σε (χρήση <κωδικοποιητή>/v1/φωνές/ στη λίστα διαθέσιμων φωνών)
model string Όχι. Μοντέλο μετατροπής φωνής: openvoice (default), knn-vc
format string Όχι. Μορφότυπος εξόδου: wav (default), mp3, flac

Αίτηση παραδείγματος

cURL
curl -X POST https://api.tts.ai/v1/voice-convert/ \
  -H "Authorization: Bearer sk-tts-your-key" \
  -F "file=@source_audio.mp3" \
  -F "target_voice=af_bella" \
  -F "model=openvoice" \
  -o converted.wav

Απάντηση

Επιστρέφει το μετατρεπόμενο αρχείο ήχου ως δυαδικά δεδομένα.

Μετάφραση λόγου

POST /v1/speech-translate/

Συνδυάζει ομιλία-σε-κείμενο, μετάφραση, και κείμενο-σε- ομιλία σε μια ενιαία κλήση.

Αιτούμενος φορέας (multipart/form-data)

ΠαράμετροςΤύποςΑπαιτείταιΠεριγραφή εμπορευμάτων
file file Ναι. Πηγή αρχείο ήχου στην πρωτότυπη γλώσσα. Max 100MB.
target_language string Ναι. Κωδικός γλώσσας-στόχου (π.χ., es, fr, de, ja)
voice string Όχι. Φωνή για μεταφρασμένη έξοδο. Αυτόματη επιλογή αν παραλειφθεί.
preserve_voice boolean Όχι. Προσπάθησε να διατηρήσεις τον αρχικό ομιλητή

Απάντηση

Απάντηση του JSON
{
  "original_text": "Hello, how are you?",
  "translated_text": "Hola, como estas?",
  "source_language": "en",
  "target_language": "es",
  "audio_url": "https://api.tts.ai/v1/results/translate_abc123.mp3",
  "credits_used": 5
}

Ομιλία προς Λόγο

POST /v1/speech-to-speech/

Χρήσιμο για να προσαρμόσετε τον τόνο, το βηματισμό και την εκφραστικότητα.

Αιτούμενος φορέας (multipart/form-data)

ΠαράμετροςΤύποςΑπαιτείταιΠεριγραφή εμπορευμάτων
file file Ναι. Αρχείο ήχου ομιλίας πηγής, Μαξ 50MB.
voice string Ναι. ID φωνής στόχου για την ομιλία εξόδου
model string Όχι. Υπόδειγμα: openvoice (default), chatterbox
emotion string Όχι. Συναίσθημα στόχου: ουδέτερο , happy, sad, angry, excited
speed float Όχι. Ρύθμιση ταχύτητας. Προκαθορισμένο: 1.0. Εύρος: 0.5 to 2.0

Απάντηση

Επιστρέφει το μεταμορφωμένο αρχείο ήχου ως δυαδικά δεδομένα.

Εργαλεία ήχου

Τελικά σημεία επεξεργασίας ήχου για την ενίσχυση, τη φωνητική αφαίρεση, τον διαχωρισμό των στελεχών, και πολλά άλλα.

POST /v1/audio/enhance/

Ενισχύστε την ποιότητα ήχου: denoise, βελτίωση της σαφήνειας, σούπερ ανάλυση.

file fileΑρχείο ήχου για την ενίσχυση
denoise booleanΕνεργοποίηση αποκωδικοποίησης (προεπιλογή: true)
enhance_clarity booleanΕνίσχυση της σαφήνειας της ομιλίας (προκαθορισμένη: αληθής)
super_resolution booleanΥψηλής ποιότητας ήχου (προκαθορισμένη: ψευδής)
strength integer1-3 (ελαφρύ, μεσαίο, δυνατό). Προκαθορισμένο: 2
POST /v1/audio/separate/

Ξεχωριστά φωνητικά από τα όργανα (φωνητική αφαίρεση) ή χωρισμένα σε στελέχη.

file fileΑρχείο ήχου για διαχωρισμό
model stringdemucs (προεπιλεγμένη) ή spleeter
stems integerΑριθμός στελεχών: 2, 4, 5 ή 6 (προκαθορισμένο: 2)
format stringΜορφότυπος εξόδου: wav, mp3, flac
POST /v1/audio/dereverb/

Αφαίρεση ηχώ και reverb από ηχητικές ηχογραφήσεις.

file fileΑρχείο ήχου προς επεξεργασία
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Ατελώς

Αναλύστε τον ήχο για να ανιχνεύσετε το κλειδί, BPM, και την υπογραφή του χρόνου.

file fileΑρχείο ήχου για ανάλυση
Απάντηση
{
  "key": "C",
  "scale": "Major",
  "bpm": 120.0,
  "time_signature": "4/4",
  "camelot": "8B",
  "compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
POST /v1/audio/convert/ Ατελώς

Μετατροπή ήχου μεταξύ μορφοτύπων.

file fileΑρχείο ήχου για να μετατρέψετε
format stringΜορφότυπος στόχος: mp3, wav, flac, ogg, m4a, aac
bitrate integerbitrate εξόδου σε kbps: 64, 128, 192, 256, 320
sample_rate integerΠοσοστό δείγματος: 22050, 44100, 48000
channels stringmono ή stereo

Φωνητική συνομιλία

POST /v1/voice-chat/

Στείλτε ήχο ή κείμενο και λάβετε μια απάντηση AI με συντεταγμένη ομιλία.

Αιτούμενος φορέας (multipart/form-data ή JSON)

ΠαράμετροςΤύποςΑπαιτείταιΠεριγραφή εμπορευμάτων
audio file Όχι.* Εισαγωγή ήχου (είτε audio είτε text required)
text string Όχι.* Εισαγωγή κειμένου (είτε audio είτε text required)
voice string Όχι. Φωνή για απόκριση AI. Προκαθορισμένο: af_bella
tts_model string Όχι. Μοντέλο TTS για απόκριση. Προκαθορισμένο: kokoro
system_prompt string Όχι. Προσαρμοσμένο σύστημα προτροπής για την AI
conversation_id string Όχι. Συνεχίστε μια υπάρχουσα συζήτηση

Απάντηση

Απάντηση του JSON
{
  "conversation_id": "conv_abc123",
  "user_text": "What is the capital of France?",
  "ai_text": "The capital of France is Paris.",
  "audio_url": "https://api.tts.ai/v1/audio/tmp/resp_xyz.mp3",
  "credits_used": 3
}

Μοντέλα λίστας

GET /v1/models/

Επιστρέφει μια λίστα με όλα τα διαθέσιμα μοντέλα με τις δυνατότητές τους.

Απάντηση

Απάντηση του JSON
{
  "models": [
    {
      "id": "kokoro",
      "name": "Kokoro",
      "type": "tts",
      "tier": "standard",
      "languages": ["en", "ja", "ko", "zh", "fr"],
      "supports_cloning": false,
      "supports_streaming": true,
      "credits_per_1k_chars": 2
    },
    {
      "id": "chatterbox",
      "name": "Chatterbox",
      "type": "tts",
      "tier": "premium",
      "languages": ["en"],
      "supports_cloning": true,
      "supports_streaming": true,
      "credits_per_1k_chars": 4
    }
  ]
}

Φωνές λίσταςName

GET /v1/voices/

Επιστρέφει μια λίστα με όλες τις διαθέσιμες φωνές, προαιρετικά φιλτραρισμένο από το μοντέλο ή τη γλώσσα.

Παράμετροι ερωτήσεων

ΠαράμετροςΤύποςΠεριγραφή εμπορευμάτων
model string Φίλτρο με ID μοντέλου (π.χ., koro)
language string Φίλτρο με κωδικό γλώσσας (π.χ., en)
gender string Φίλτρο ανά φύλο: αρσενικό , θήλυ , ουδέτερο

Απάντηση

Απάντηση του JSON
{
  "voices": [
    {
      "id": "af_bella",
      "name": "Bella",
      "model": "kokoro",
      "language": "en",
      "gender": "female",
      "preview_url": "https://api.tts.ai/v1/voices/preview/af_bella.mp3"
    }
  ],
  "total": 142
}

Παραδείγματα κωδικών

Κείμενο σε λόγο

Python - requests
import requests

API_KEY = "sk-tts-your-key"

# Text to Speech
response = requests.post(
    "https://api.tts.ai/v1/tts/",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "model": "kokoro",
        "text": "Hello from TTS.ai!",
        "voice": "af_bella",
        "format": "mp3"
    }
)

with open("output.mp3", "wb") as f:
    f.write(response.content)

print(f"Credits used: {response.headers.get('X-Credits-Used')}")

Ομιλία προς κείμενο

Python - requests
# Speech to Text
with open("recording.mp3", "rb") as f:
    response = requests.post(
        "https://api.tts.ai/v1/stt/",
        headers={"Authorization": f"Bearer {API_KEY}"},
        files={"file": f},
        data={"model": "faster-whisper", "timestamps": "true"}
    )

result = response.json()
print(result["text"])

Κλωνοποίηση φωνής

Python - requests
# Voice Cloning
with open("reference.wav", "rb") as ref:
    response = requests.post(
        "https://api.tts.ai/v1/tts/clone/",
        headers={"Authorization": f"Bearer {API_KEY}"},
        files={"reference_audio": ref},
        data={
            "text": "This speech uses a cloned voice.",
            "model": "chatterbox"
        }
    )

with open("cloned_output.mp3", "wb") as f:
    f.write(response.content)

Κείμενο σε λόγο

JavaScript - fetch
const API_KEY = 'sk-tts-your-key';

// Text to Speech
const response = await fetch('https://api.tts.ai/v1/tts/', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    model: 'kokoro',
    text: 'Hello from TTS.ai!',
    voice: 'af_bella',
    format: 'mp3'
  })
});

const audioBlob = await response.blob();
const audioUrl = URL.createObjectURL(audioBlob);
const audio = new Audio(audioUrl);
audio.play();

Ομιλία προς κείμενο

JavaScript - fetch
// Speech to Text
const formData = new FormData();
formData.append('file', audioFile);
formData.append('model', 'faster-whisper');

const response = await fetch('https://api.tts.ai/v1/stt/', {
  method: 'POST',
  headers: { 'Authorization': `Bearer ${API_KEY}` },
  body: formData
});

const result = await response.json();
console.log(result.text);

Κείμενο σε λόγο

cURL
# Text to Speech
curl -X POST https://api.tts.ai/v1/tts/ \
  -H "Authorization: Bearer sk-tts-your-key" \
  -H "Content-Type: application/json" \
  -d '{"model":"kokoro","text":"Hello!","voice":"af_bella","format":"mp3"}' \
  -o output.mp3

Ομιλία προς κείμενο

cURL
# Speech to Text
curl -X POST https://api.tts.ai/v1/stt/ \
  -H "Authorization: Bearer sk-tts-your-key" \
  -F "file=@recording.mp3" \
  -F "model=faster-whisper" \
  -F "timestamps=true"

Κλωνοποίηση φωνής

cURL
# Voice Cloning
curl -X POST https://api.tts.ai/v1/tts/clone/ \
  -H "Authorization: Bearer sk-tts-your-key" \
  -F "reference_audio=@reference.wav" \
  -F "text=This uses a cloned voice." \
  -F "model=chatterbox" \
  -o cloned.mp3

Ενίσχυση ήχου

cURL
# Audio Enhancement
curl -X POST https://api.tts.ai/v1/audio/enhance/ \
  -H "Authorization: Bearer sk-tts-your-key" \
  -F "file=@noisy_audio.mp3" \
  -F "denoise=true" \
  -F "enhance_clarity=true" \
  -o enhanced.mp3

Κωδικοί σφάλματος

Όλα τα λάθη επιστρέφουν μια απάντηση JSON με ένα error πεδίο.

Μορφή απόκρισης λάθους
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough credits for this request.",
    "credits_required": 4,
    "credits_available": 2
  }
}
Κατάσταση HTTPError CodeΠεριγραφή εμπορευμάτων
400 bad_request Άκυρες παράμετροι αιτήματος. Ελέγξτε το μήνυμα σφάλματος για λεπτομέρειες.
401 unauthorized Λείπει ή άκυρο κλειδί API.
402 insufficient_credits Αγοράστε περισσότερα στο /pricing /.
403 forbidden Η πρόσβαση API δεν είναι διαθέσιμη στο σχέδιό σας.
404 not_found Μοντέλο ή φωνή δεν βρέθηκε.
413 file_too_large Μεταφορτωμένο αρχείο υπερβαίνει το όριο μεγέθους.
429 rate_limited Πάρα πολλά αιτήματα.
500 internal_error Σφάλμα διακομιστή. Δοκιμάστε ξανά αργότερα.
503 model_loading Το μοντέλο φορτώνει, ξαναπροσπάθησε σε λίγα δευτερόλεπτα.

ΓουέμπγουκςCity name (optional, probably does not need a translation)

Για εργασίες μεγάλης διάρκειας (split stem, TTS παρτίδα), μπορείτε να παρέχετε μια παράμετρο webhook_url. Όταν ολοκληρωθεί η εργασία, θα μετακινήσουμε το αποτέλεσμα στο URL σας.

Webhook Payload
{
  "event": "task.completed",
  "task_id": "task_abc123",
  "status": "success",
  "result_url": "https://api.tts.ai/v1/results/task_abc123",
  "credits_used": 12,
  "created_at": "2025-01-15T10:30:00Z",
  "completed_at": "2025-01-15T10:30:45Z"
}
Τα αποτελέσματα του Webhook είναι διαθέσιμα για λήψη για 24 ώρες μετά την ολοκλήρωση.

Έτοιμοι να φτιάξουμε;

Πάρτε το κλειδί API σας και να αρχίσει την ενσωμάτωση TTS.ai στις εφαρμογές σας.