API-dokumentation
Integrera TTS.ai i dina applikationer med vårt REST API. OpenAI-kompatibelt format för enkel migrering.
Översikt
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- nyckel
Få din API-nyckel från Kontoinställningar. Finns på Pro och Enterprise planer.
Baswebbadress
https://api.tts.ai/v1/
Behörighet
Bärarsymbol via Authorization Huvud
Behörighetskontroll
Alla API-förfrågningar kräver autentisering via en Bearer token i Authorization Huvud.
Authorization: Bearer sk-tts-your-api-key-here
Baswebbadress
Alla endpoints är relaterade till denna baswebbadress. TTS-slutpunkten är till exempel:
Betygsgränser
API hastighetsbegränsningar varierar enligt plan:
| Plan | Begäran/min | Concurrent | Max textlängd |
|---|---|---|---|
| För | 60 | 5 | 5 000 rödingar |
| Företag | 300 | 20 | 50.000 rödingar |
Betygsgränsrubriker ingår i varje svar: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Kreditkostnader
| Tjänst | Kostnad | Enhet |
|---|---|---|
| TTS (Gratis modeller: Piper, VITS, Melotts) | 1 tillgodohavanden | per 1 000 tecken |
| TTS (Standardmodeller: Kokoro, CosyVoice 2, etc.) | 2 tillgodohavanden | per 1 000 tecken |
| TTS (Premiummodeller: Tortoise, Chatterbox, etc.) | 4 tillgodohavanden | per 1 000 tecken |
| Tal till text | 2 tillgodohavanden | per ljudminut |
| Röstförslutning | 4 tillgodohavanden | per 1 000 tecken |
| Röstförändrare | 3 tillgodohavanden | per ljudminut |
| Ljudförbättring | 2 tillgodohavanden | per ljudminut |
| Röstborttagning/ Stamdelning | 3-4 hp | per ljudminut |
| Talöversättning | 5 hp | per ljudminut |
| Röstchatt | 3 tillgodohavanden | per varv |
| Nyckelsökare & BPM | Avgiftsfri | -- |
| Ljudomvandlare | Avgiftsfri | -- |
Text till tal
Konvertera text till talljud. Returnerar ljudfil i önskat format.
Begärande organ
| Parameter | Typ | Krävs | Varuslag |
|---|---|---|---|
| model | string | Ja, det är jag. | Förlaga ID (t.ex. |
| text | string | Ja, det är jag. | Text att konvertera till tal (max 5000 tecken för Pro, 50 000 för Enterprise) |
| voice | string | Ja, det är jag. | Röst-ID (använd |
| format | string | Ej tillämpligt | Utgångsformat: < code>mp3 (standard), wav , flac , ogg |
| speed | float | Ej tillämpligt | Talande hastighetsmultiplikator. Förvalt: < code> 1. 0 code>. Range: < code> 0.5 code > till < code> 2. 0 code> |
| language | string | Ej tillämpligt | Språkkod (t.ex. < code>sv , es ). Avkänns automatiskt om det utelämnas. |
| stream | boolean | Ej tillämpligt | Aktivera strömningssvar. Förvalt: < code>false |
Exempel på begäran
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
Svar
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
Tal till text
Översättning av ljud till text. Stöder 99 språk med automatisk upptäckt.
Begärande organ (multipart/form-data)
| Parameter | Typ | Krävs | Varuslag |
|---|---|---|---|
| file | file | Ja, det är jag. | Ljudfil (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB. |
| model | string | Ej tillämpligt | STT-modell: < code>whisker (standard), fastare whisper , sensevoice |
| language | string | Ej tillämpligt | Språkkod. auto för automatisk upptäckt (standard). |
| timestamps | boolean | Ej tillämpligt | Inkludera tidstämpel på ordnivå. Förval: < code>false |
| diarize | boolean | Ej tillämpligt | Aktivera högtalardiarisering. Förval: < code>false |
Svar
{
"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"
}
]
}
Röstförslutning
Skapa tal i en klonad röst. Ladda upp ett referensljud och en text.
Begärande organ (multipart/form-data)
| Parameter | Typ | Krävs | Varuslag |
|---|---|---|---|
| reference_audio | file | Ja, det är jag. | Referensröstljud (10-30 sekunder rekommenderas). Max 20MB. |
| text | string | Ja, det är jag. | Text för att tala i den klonade rösten. |
| model | string | Ej tillämpligt | Klonmodell: chatterbox (standard), cosyvoice2 , gpt-sovits |
| format | string | Ej tillämpligt | Utgångsformat: < code>mp3 (standard), wav , flac |
| language | string | Ej tillämpligt | Målspråkskod. Måste stödjas av den valda modellen. |
Svar
Returnerar ljudfilen som binär data, samma som TTS endpoint.
Röstförändrare
Konvertera ljud till ljud som en annan röst. Ladda upp källljud och välj en målröst.
Begärande organ (multipart/form-data)
| Parameter | Typ | Krävs | Varuslag |
|---|---|---|---|
| file | file | Ja, det är jag. | Källa ljudfil (MP3, WAV, FLAC). Max 50MB. |
| target_voice | string | Ja, det är jag. | Målröst-ID att konvertera till (använd < code>/v1/voices/ för att lista tillgängliga röster) |
| model | string | Ej tillämpligt | Röstkonverteringsmodell: openvoice (standard), kn-vc |
| format | string | Ej tillämpligt | Utgångsformat: < code>wav (standard), mp3 , flac |
Exempel på begäran
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
Svar
Returnerar den konverterade ljudfilen som binär data.
Talöversättning
Översätt talat ljud från ett språk till ett annat. Kombinerar tal-till-text, översättning och text-till-tal i ett enda samtal.
Begärande organ (multipart/form-data)
| Parameter | Typ | Krävs | Varuslag |
|---|---|---|---|
| file | file | Ja, det är jag. | Källa ljudfil på originalspråket. Max 100MB. |
| target_language | string | Ja, det är jag. | Målspråkskod (t.ex. < code>es , fr , de , ja ) |
| voice | string | Ej tillämpligt | Röst för översatt utmatning. Automatiskt vald om utelämnad. |
| preserve_voice | boolean | Ej tillämpligt | Försök att bevara den ursprungliga talaren |
Svar
{
"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
}
Tal till tal
Förvandla talstil, känslor, eller leverans samtidigt som innehållet. Användbar för att justera ton, gå och uttrycksfullhet.
Begärande organ (multipart/form-data)
| Parameter | Typ | Krävs | Varuslag |
|---|---|---|---|
| file | file | Ja, det är jag. | Källtal ljudfil. Max 50MB. |
| voice | string | Ja, det är jag. | Målröst-ID för utmatningstalet |
| model | string | Ej tillämpligt | Förlaga: < code>openvoice (standard), chatterbox |
| emotion | string | Ej tillämpligt | Målkänsla: |
| speed | float | Ej tillämpligt | Hastighetsjustering. Standardvärde: < kod>1.0 . Område: < kod>0.5 till |
Svar
Returnerar den omvandlade ljudfilen som binär data.
Ljudverktyg
Ljudbehandlingsslutpunkter för förbättring, röstborttagning, stamdelning och mycket mer.
Förbättra ljudkvaliteten: denoise, förbättra tydligheten, superupplösning.
| file file | Ljudfil för att förbättra |
| denoise boolean | Aktivera denoisering (standard: true) |
| enhance_clarity boolean | Förbättra taluppfattbarheten (standard: sant) |
| super_resolution boolean | Uppskalad ljudkvalitet (standard: false) |
| strength integer | 1-3 (lätt, medelhög, stark). Förval: 2 |
Skilj sång från instrumentaler (vokal borttagning) eller delas upp i stjälkar.
| file file | Ljudfil att separera |
| model string | demucs (förval) eller spleeter |
| stems integer | Antal stjälkar: 2, 4, 5 eller 6 (standard: 2) |
| format string | Utgångsformat: < code>wav , mp3 , flac |
Ta bort eko och reverb från ljudinspelningar.
| file file | Ljudfil att bearbeta |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Analysera ljud för att upptäcka nyckel, BPM och tidssignatur.
| file file | Audio file to analyze |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
Konvertera ljud mellan format.
| file file | Ljudfil att konvertera |
| format string | Målformat: < code>mp3 , wav , flac , ogg , m4a , aac |
| bitrate integer | Utgångsbitartakt i kbps: 64, 128, 192, 256, 320 |
| sample_rate integer | Provtagningsfrekvens: 22050, 44100, 48000 |
| channels string | mono eller stereo |
Röstchatt
Skicka ljud eller text och ta emot ett AI-svar med syntetiserat tal.
Begärande organ (multipart/form-data eller JSON)
| Parameter | Typ | Krävs | Varuslag |
|---|---|---|---|
| audio | file | Ej tillämpligt* | Ljudingång (antingen < kod>ljud eller < kod>text krävs) |
| text | string | Ej tillämpligt* | Textinmatning (antingen < code>audio eller text krävs) |
| voice | string | Ej tillämpligt | Röst för AI-svar. Standardvärde: < code>af_bella |
| tts_model | string | Ej tillämpligt | TTS-modell för svar. Förval: < code>kokoro |
| system_prompt | string | Ej tillämpligt | Anpassad systemprompt för AI |
| conversation_id | string | Ej tillämpligt | Fortsätt med ett existerande samtal |
Svar
{
"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
}
Förteckningsmallar
Returnerar en lista över alla tillgängliga modeller med deras kapacitet.
Svar
{
"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
}
]
}
Liströster
Returnerar en lista över alla tillgängliga röster, eventuellt filtreras med modell eller språk.
För att säkerställa en effektiv kontroll av överensstämmelse med kraven i denna förordning ska medlemsstaterna se till att följande krav uppfylls:
| Parameter | Typ | Varuslag |
|---|---|---|
| model | string | Filtrera enligt modell-ID (t.ex. < code>kokoro ) |
| language | string | Filtrera efter språkkod (t.ex. < code>sv ) |
| gender | string | Filtrera efter kön: < code> manlig , kvinnlig , |
Svar
{
"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
}
Exempel på koder
Text till tal
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')}")
Tal till text
# 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"])
Röstförslutning
# 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)
Text till tal
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();
Tal till text
// 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);
Text till tal
# 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
Tal till text
# 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"
Röstförslutning
# 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
Ljudförbättring
# 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
Felkoder
Alla fel returnerar ett JSON svar med en error Fält.
{
"error": {
"code": "insufficient_credits",
"message": "You do not have enough credits for this request.",
"credits_required": 4,
"credits_available": 2
}
}
| HTTP- status | Error Code | Varuslag |
|---|---|---|
| 400 | bad_request |
Ogiltig begäran parametrar. Kontrollera felmeddelandet för detaljer. |
| 401 | unauthorized |
Saknas eller är ogiltig API- nyckel. |
| 402 | insufficient_credits |
Inte tillräckligt med krediter. Köp mer på /pris /. |
| 403 | forbidden |
API-åtkomst inte tillgänglig på din plan. |
| 404 | not_found |
Modell eller röst hittades inte. |
| 413 | file_too_large |
Uppladdad fil överskrider storleksgränsen. |
| 429 | rate_limited |
För många förfrågningar. Kontrollera hastighetsbegränsningsrubriker. |
| 500 | internal_error |
Serverfel. Försök igen senare. |
| 503 | model_loading |
Modellen laddas, försök igen om några sekunder. |
Webbhooks
För långvariga uppgifter (stamdelning, parti TTS) kan du ange en parameter < code>webhook_url . När uppgiften är klar kommer vi att ange resultatet till din URL.
{
"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"
}
Redo att bygga?
Få din API-nyckel och börja integrera TTS.ai i dina program.