Report Bug / Feature Request

API ডকুমেন্টেশন

আমাদের REST API এর সাথে আপনার অ্যাপ্লিকেশনে TTS.ai একীভূত করুন। সহজে মাইগ্রেশনের জন্য OpenAI-সমর্থিত ফরম্যাট।

REST API OpenAI সমর্থিত JSON প্রতিক্রিয়া স্ট্রিমিং সমর্থন

সারসংক্ষেপ

TTS.ai API সকল প্ল্যাটফর্ম বৈশিষ্ট্যসমূহের জন্য প্রোগ্রামিং অ্যাক্সেস প্রদান করে: টেক্সট-টু-স্পীচ সংশ্লেষণ, স্পীচ-টু-টেক্সট ট্রান্সক্রিপশন, ভয়েস ক্লোনিং, অডিও উন্নতি, এবং আরো। API JSON অনুরোধ/প্রতিক্রিয়া দেহের সাথে মানসম্মত REST কনভেনশন ব্যবহার করে।

API কী

এখানে থেকে আপনার API কী প্রাপ্ত করুন অ্যাকাউন্ট সেটিংস. প্রো এবং এন্টারপ্রাইজ প্ল্যানে উপলব্ধ।

ভিত্তি ইউ- আর- এল

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

অনুমোদন

বিয়ারার টোকেন Authorization শীর্ষচরণ

অনুমোদন

Free tier — no key required. Anonymous POSTs to /v1/tts/ work without any auth, up to 5,000 characters/day per IP, using any of our free models (piper, vits, melotts, kokoro). Sign up for a free account to get 15,000 bonus characters and access to premium models.

সমস্ত API অনুরোধের জন্য প্রমাণীকরণের প্রয়োজন Authorization শীর্ষচরণ.

HTTP হেডার
Authorization: Bearer sk-tts-your-api-key-here
আপনার API কী গোপন রাখুন। ক্লায়েন্ট-সাইড কোড, পাবলিক রিপোজিটরি অথবা লগ-এ এটি শেয়ার করবেন না। আপনার অ্যাকাউন্টের বৈশিষ্ট্য থেকে নিয়মিতভাবে কী পাল্টান।

এস- ডি- কে

সরকারি SDKs আপনার অ্যাপ্লিকেশনে TTS.ai একীভূত করতে সহজ করে তোলে। উভয়ই উন্মুক্ত উৎস এবং GitHub এ উপলব্ধ।

Python

pip install ttsai
from tts_ai import TTSClient

client = TTSClient(api_key="sk-tts-...")
audio = client.generate(
    text="Hello world!",
    model="kokoro"
)
client.save(audio, "output.wav")
GitHub

JavaScript / Node.js

npm install @ttsainpm/ttsai
const { TTSClient } = require('@ttsainpm/ttsai');

const client = new TTSClient({
  apiKey: 'sk-tts-...'
});
const audio = await client.generate({
  input: 'Hello world!',
  model: 'kokoro'
});
await client.saveToFile(audio, 'output.wav');
GitHub

ভিত্তি ইউ- আর- এল

ভিত্তি ইউ- আর- এল: https://api.tts.ai/v1/

সব এনড- বিন্দু এই মৌলিক ইউ- আর- এল- এর সাথে সম্পর্কিত। উদাহরণস্বরূপ, TTS এনড- বিন্দু হল:

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

হারের সীমা

API হার সীমা পরিকল্পনা অনুযায়ী পরিবর্তিত হয়:

প্ল্যান অনুরোধ/মিনিট একই সময়ে টেক্সটের সর্বোচ্চ দৈর্ঘ্য
মুক্ত 10 2 ৫০০ অক্ষর
স্টার্টার 30 3 ১০০,০০০ অক্ষর
প্রফেশনাল 60 5 ১০০,০০০ অক্ষর
এন্টারপ্রাইজ 300 20 ৫০,০০০ অক্ষর

প্রতিটি উত্তরে রেট লিমিট হেডার অন্তর্ভুক্ত করা হবে: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

ক্রেডিট খরচ

সার্ভিস খরচ একক
TTS (মুক্ত মডেল: পাইপার, VITS, MeloTTS) ১,০০০ অক্ষর প্রতি ১০০০ অক্ষর
TTS (প্রমিত মডেল: Kokoro, CosyVoice ২, ইত্যাদি) ২,০০০ অক্ষর প্রতি ১০০০ অক্ষর
TTS (প্রিমিয়াম মডেল: Tortoise, Chatterbox, ইত্যাদি) ৪,০০০ অক্ষর প্রতি ১০০০ অক্ষর
বক্তৃতা থেকে লেখাName ২,০০০ অক্ষর অডিও
ভয়েস ক্লোন ৪,০০০ অক্ষর প্রতি ১০০০ অক্ষর
শব্দ পরিবর্তকName ৩টি ক্রেডিট অডিও
অডিও উন্নতি ২,০০০ অক্ষর অডিও
ভয়েসেল অপসারণ / স্টেম বিভাজন ৩,০০০-৪,০০০ অক্ষর অডিও
ভাষণ অনুবাদName ৫,০০০ অক্ষর অডিও
ভয়েস আড্ডা ৩টি ক্রেডিট প্রতি পালা
কী (key) BPM অনুসন্ধানকারী মুক্ত --
অডিও রূপান্তরকারী মুক্ত --

টেক্সট- থেকে- কথাName

POST /v1/tts/

টেক্সটকে বক্তৃতার অডিওতে রূপান্তর করে । অনুরোধ করা ফরম্যাটে অডিও ফাইল ফিরিয়ে দেয় ।

অনুরোধের মূল অংশ

প্যারামিটারধরনআবশ্যকবর্ণনা
model string না মডেল ID (যেমন, kokoro, chatterbox, piper)
text string হ্যাঁ যে টেক্সটটিকে কথায় রূপান্তর করা হবে (প্রতিটি অনুরোধের জন্য সর্বোচ্চ ১০০,০০০ অক্ষর)
voice string হ্যাঁ ভয়েস ID (প্রয়োজনীয় ভয়েস তালিকাভুক্ত করতে /v1/voices/ ব্যবহার করুন)
format string না আউটপুট ফরম্যাট: mp3 (ডিফল্ট), wav, flac, ogg
speed float না কথা বলার গতি বহুগুণক। ডিফল্ট: ১.০। পরিসীমা: ০.৫ থেকে ২.০
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

প্রতিক্রিয়া

The TTS endpoint queues your request and returns a JSON response with a job UUID. You then poll for the result.

Step 1: Submit request

Response (JSON)
{
  "uuid": "77b71db532874ce98e84a69a2d740d4c",
  "job_id": "f21316bb-aefa-480d-8523-701d1e3184ce",
  "status": "queued",
  "credits_used": 11,
  "credits_remaining": 15000
}

Step 2: Poll for result

GET /v1/speech/results/?uuid=<job_uuid>

Poll this endpoint every 1-2 seconds until status is completed or failed.

Polling response (completed)
{
  "status": "completed",
  "result_url": "https://api.tts.ai/static/downloads/77b71db5.../output.mp3"
}
Polling response (still processing)
{
  "status": "processing"
}

Step 3: Download audio

Fetch the result_url from the completed response to download the audio file.

Full example

Python
import requests, time

API_KEY = "sk-tts-your-key"
BASE = "https://api.tts.ai"

# 1. Submit TTS request
resp = requests.post(f"{BASE}/v1/tts/", json={
    "model": "kokoro",
    "text": "Hello from TTS.ai!",
    "voice": "af_bella"
}, headers={"Authorization": f"Bearer {API_KEY}"})
data = resp.json()
uuid = data["uuid"]

# 2. Poll for result
while True:
    result = requests.get(f"{BASE}/v1/speech/results/",
        params={"uuid": uuid}).json()
    if result["status"] == "completed":
        # 3. Download audio
        audio = requests.get(result["result_url"])
        with open("output.mp3", "wb") as f:
            f.write(audio.content)
        break
    elif result["status"] == "failed":
        raise Exception(result.get("error", "Generation failed"))
    time.sleep(1.5)

Streaming alternative: For supported models (Kokoro, MeloTTS), use POST /v1/tts/stream/ for real-time Server-Sent Events (SSE) streaming — no polling needed.

বক্তৃতা থেকে লেখাName

POST /v1/stt/

অডিও থেকে টেক্সট অনুবাদ করুন। স্বয়ংক্রিয় সনাক্তকরণ সহ ৯৯টি ভাষা সমর্থন করে।

অনুরোধের মূল অংশ (multipart/form-data)

প্যারামিটারধরনআবশ্যকবর্ণনা
file file হ্যাঁ অডিও ফাইল (MP3, WAV, FLAC, OGG, M4A, MP4, WebM)। সর্বোচ্চ ১০০ মেগাবাইট।
model string না STT মডেল: whisper (ডিফল্ট), faster-whisper, sensevoice
language string না ভাষার কোড। স্বয়ংক্রিয় সনাক্তকরণের জন্য auto (ডিফল্ট)।
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 হ্যাঁ রেফারেন্স ভয়েস অডিও (১০-৩০ সেকেন্ড সুপারিশ করা হয়)। সর্বোচ্চ ২০ মেগাবাইট।
text string হ্যাঁ ক্লোন করা কন্ঠে বলার জন্য টেক্সট।
model string না ক্লোন মডেল: chatterbox (ডিফল্ট), cosyvoice2, gpt-sovits
format string না আউটপুট ফরম্যাট: mp3 (ডিফল্ট), wav, flac
language string না লক্ষ্য ভাষার কোড । নির্বাচিত মডেল দ্বারা সমর্থিত হওয়া আবশ্যক ।

প্রতিক্রিয়া

অডিও ফাইলটি বাইনারি তথ্য হিসেবে ফিরিয়ে আনে, TTS-এর শেষ বিন্দুর মতই।

শব্দ পরিবর্তকName

POST /v1/voice-convert/

অডিওকে অন্য একটি কন্ঠস্বরের মত শোনার জন্য রূপান্তর করুন। উৎস অডিও আপলোড করুন এবং লক্ষ্যস্বর নির্বাচন করুন।

অনুরোধের মূল অংশ (multipart/form-data)

প্যারামিটারধরনআবশ্যকবর্ণনা
file file হ্যাঁ উৎস অডিও ফাইল (MP3, WAV, FLAC)। সর্বাধিক ৫০ মেগাবাইট।
target_voice string হ্যাঁ যে ভয়েস আইডিতে রূপান্তর করা হবে (প্রযোজ্য ভয়েস তালিকাভুক্ত করতে /v1/voices/ ব্যবহার করুন)
model string না শব্দ রূপান্তর মডেল: openvoice (ডিফল্ট), knn-vc
format string না আউটপুট ফরম্যাট: wav (ডিফল্ট), 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

প্রতিক্রিয়া

রূপান্তরিত অডিও ফাইলটি বাইনারি তথ্য হিসেবে ফিরিয়ে দেয়।

ভাষণ অনুবাদName

POST /v1/speech-translate/

একটি ভাষা থেকে অন্য ভাষায় অডিও অনুবাদ করুন। একটি কলের মধ্যে বাক্যের-থেকে-লেখ্য, অনুবাদ এবং বাক্যের-থেকে-লেখ্য একত্রিত করে।

অনুরোধের মূল অংশ (multipart/form-data)

প্যারামিটারধরনআবশ্যকবর্ণনা
file file হ্যাঁ মূল ভাষায় উৎস অডিও ফাইল। সর্বোচ্চ ১০০ মেগাবাইট।
target_language string হ্যাঁ লক্ষ্য ভাষার কোড (যেমন, es, fr, de, ja)
voice string না অনুবাদকৃত আউটপুট-এর জন্য শব্দ। অগ্রাহ্য করা হলে স্বয়ংক্রিয়ভাবে নির্বাচিত হবে।
preserve_voice boolean না মূল স্পিকারের কন্ঠের বৈশিষ্ট্য সংরক্ষণের চেষ্টা করা হবে। ডিফল্ট: false

প্রতিক্রিয়া

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 হ্যাঁ উৎস বাক্য অডিও ফাইল। সর্বোচ্চ ৫০ মেগাবাইট।
voice string হ্যাঁ আউটপুট বাক্যাংশের জন্য লক্ষ্য ভয়েস আইডি
model string না মডেল: openvoice (ডিফল্ট), chatterbox
emotion string না লক্ষ্য আবেগ: neutral, happy, sad, angry, excited
speed float না গতি সংশোধন। ডিফল্ট: ১.০। পরিধি: ০.৫ থেকে ২.০

প্রতিক্রিয়া

রূপান্তরিত অডিও ফাইলটি বাইনারি তথ্য হিসেবে ফিরিয়ে দেয়।

অডিও টুলName

উন্নতির জন্য অডিও প্রসেসিং এন্ডপয়েন্ট, ভয়েস অপসারণ, স্টেম বিভাজন এবং আরও অনেক কিছু।

POST /v1/audio/enhance/

অডিও গুণমান উন্নত করুন: ঝামেলা দূর করুন, সুস্পষ্টতা উন্নত করুন, সুপার রেজোলিউশন।

file fileউন্নত করার জন্য অডিও ফাইল
denoise booleanনিঃশব্দীকরণ সক্রিয় করো (ডিফল্ট: সত্য)
enhance_clarity booleanবক্তৃতার স্পষ্টতা বাড়াও (ডিফল্ট: সত্য)
super_resolution booleanঅডিও গুণমান উন্নত করুন (ডিফল্ট: মিথ্যা)
strength integer১- ৩ (হালকা, মাঝারি, কঠিন) । ডিফল্ট: ২
POST /v1/audio/separate/

সঙ্গীতের সঙ্গীত থেকে ভয়েস আলাদা করুন (ভয়েস অপসারণ) অথবা স্টেম- এ বিভক্ত করুন।

file fileযে অডিও ফাইলটি আলাদা করা হবে
model stringdemucs (ডিফল্ট) অথবা spleeter
stems integerস্টেম- এর সংখ্যা: ২, ৪, ৫, অথবা ৬ (ডিফল্ট: ২)
format stringআউটপুট ফরম্যাট: wav, mp3, flac
POST /v1/audio/dereverb/

অডিও রেকর্ড থেকে প্রতিধ্বনি এবং প্রতিধ্বনি অপসারণ করুন।

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 integerআউটপুট বিটরেট (কেবিপিএস- এ): ৬৪, ১২৮, ১৯২, ২৫৬, ৩২০
sample_rate integerনমুনা হার: 22050, 44100, 48000
channels stringmono অথবা stereo

ভয়েস আড্ডা

POST /v1/voice-chat/

অডিও অথবা টেক্সট পাঠান এবং সংশ্লেষিত বক্তব্যের সাথে একটি AI প্রতিক্রিয়া গ্রহণ করুন।

অনুরোধের মূল অংশ (multipart/form-data অথবা JSON)

প্যারামিটারধরনআবশ্যকবর্ণনা
audio file না* অডিও ইনপুট (audio অথবা text আবশ্যক)
text string না* টেক্সট ইনপুট (audio অথবা text আবশ্যক)
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
}

ব্যাচ TTS

POST /v1/tts/batch/

সমান্তরাল TTS উৎপাদনের জন্য একাধিক টেক্সট জমা দিন। সকল কাজ সম্পন্ন হলে ইচ্ছাকৃতভাবে একটি ওয়েবহুক কলব্যাক গ্রহণ করুন।

পরামিতি

পরামিতিধরনবর্ণনা
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringOptional URL to POST results when batch completes.

প্রতিক্রিয়া

JSON প্রতিক্রিয়া
{
  "batch_id": "abc123",
  "total": 3,
  "completed": 0,
  "status": "processing"
}

GET /v1/tts/batch/result/?batch_id=abc123 এর মাধ্যমে ভোট প্রক্রিয়া

শব্দের অন্তর্ভুক্তকরণ

POST /v1/voice-embed/

রেফারেন্স অডিও থেকে একটি ভয়েস ইম্বেডিং পূর্ব-গণনা করা হবে। পরবর্তী ভয়েস ক্লোন অনুরোধের ক্ষেত্রে প্রায়-অবিলম্বে উৎপাদনের জন্য ফিরিয়ে পাওয়া embed_id ব্যবহার করা হবে।

পরামিতি

পরামিতিধরনবর্ণনা
filefileReference audio file (WAV, MP3, FLAC).
modelstringCloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts.

প্রতিক্রিয়া

JSON প্রতিক্রিয়া
{
  "embed_id": "emb_abc123",
  "model": "chatterbox",
  "duration_ms": 450
}

স্বাস্থ্য পরীক্ষা

GET /v1/health/

GPU সার্ভারের অবস্থা, লোডকৃত মডেল এবং লাইন আকার পরীক্ষা করুন। অনুমোদনের প্রয়োজন নেই। ৩০ সেকেন্ডের জন্য ক্যাশ করা হয়েছে।

প্রতিক্রিয়া

JSON প্রতিক্রিয়া
{
  "status": "online",
  "latency_ms": 45,
  "queue_size": 3,
  "models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}

মডেলের তালিকা

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

শব্দের তালিকা

GET /v1/voices/

সমস্ত উপলব্ধ শব্দের একটি তালিকা প্রদান করে, ইচ্ছাকৃতভাবে মডেল অথবা ভাষা অনুসারে পরিশোধিত ।

পরামিতি

প্যারামিটারধরনবর্ণনা
model string মডেল ID অনুযায়ী পরিশোধক (যেমন, kokoro)
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
}

Saved Voices (Persistent Clones)

Upload a reference audio once, get back a persistent voice_id, then reference that id in TTS requests instead of re-uploading audio every call. Ideal for high-volume integrations.

Pricing: Your first saved voice is free to store. Each additional voice: 500 characters upload fee + 50 characters/day storage. Delete anytime from /account/ or via DELETE.

Upload a voice

POST https://tts.ai/api/v1/user-voices/ Auth required

Multipart form. Fields: file (required, 5-30s audio), name (required), language (optional, default en), model (optional — auto-picks cosyvoice2 for zh/ja/ko else openvoice), consent_confirmed (required, any truthy value).

curl -X POST https://tts.ai/api/v1/user-voices/ \
  -H "Authorization: Bearer sk-tts-your-key" \
  -F "file=@reference.wav" \
  -F "name=My Narrator" \
  -F "language=en" \
  -F "consent_confirmed=true"

# Response:
{
  "public_id": "uv_a1b2c3d4e5f6",
  "id": 42,
  "name": "My Narrator",
  "model_name": "openvoice",
  "language": "en",
  "reference_audio_url": "https://tts.ai/media/user-voices/....wav",
  "storage_status": "active",
  "created_at": "2026-04-17T03:45:00+00:00"
}

Use the saved voice in TTS

POST to /api/v1/tts/ (NOTE: web VPS host, not api.tts.ai) with user_voice_id. We load your stored audio and route to the cloning pipeline.

curl -X POST https://tts.ai/api/v1/tts/ \
  -H "Authorization: Bearer sk-tts-your-key" \
  -H "Content-Type: application/json" \
  -d '{"text":"Hello from my saved voice","user_voice_id":"uv_a1b2c3d4e5f6"}'

# Returns a queued job — poll /v1/speech/results/?uuid=... for the audio URL.

List / delete

GET    https://tts.ai/api/v1/user-voices/           # list your saved voices + quota info
DELETE https://tts.ai/api/v1/user-voices/?public_id=uv_a1b2c3d4e5f6

কোড উদাহরণ

টেক্সট- থেকে- কথাName

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

বক্তৃতা থেকে লেখাName

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)

টেক্সট- থেকে- কথাName

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

বক্তৃতা থেকে লেখাName

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

টেক্সট- থেকে- কথাName

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

বক্তৃতা থেকে লেখাName

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 characters for this request.",
    "characters_required": 4000,
    "characters_available": 2000
  }
}
HTTP স্ট্যাটাসত্রুটি কোডবর্ণনা
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 মডেল লোড করা হচ্ছে । কয়েক সেকেন্ডের মধ্যে আবার চেষ্টা করুন ।

ওয়েবহুক

দীর্ঘস্থায়ী কাজের জন্য (স্টেম বিভাজন, ব্যাচ TTS), আপনি webhook_url পরামিতি প্রদান করতে পারেন। কাজ সম্পন্ন হলে, আমরা ফলাফলটি আপনার URL-এ POST করব।

ওয়েবহুক পেইলোড
{
  "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"
}
ওয়েবহুক ফলাফল সম্পূর্ণ হওয়ার ২৪ ঘণ্টার মধ্যে ডাউনলোডের জন্য উপলব্ধ হবে। নিশ্চিত হয়ে তা দ্রুত ডাউনলোড করুন।

তৈরি করতে প্রস্তুত?

আপনার অ্যাপলিকেশনের জন্য আপনার অ্যাপিআই কী পেতে এবং TTS.ai একীভূত শুরু করুন।