API ডকুমেন্টেশন
আমাদের REST API এর সাথে আপনার অ্যাপ্লিকেশনে TTS.ai একীভূত করুন। সহজে মাইগ্রেশনের জন্য OpenAI-সমর্থিত ফরম্যাট।
সারসংক্ষেপ
TTS.ai API সকল প্ল্যাটফর্ম বৈশিষ্ট্যসমূহের জন্য প্রোগ্রামিং অ্যাক্সেস প্রদান করে: টেক্সট-টু-স্পীচ সংশ্লেষণ, স্পীচ-টু-টেক্সট ট্রান্সক্রিপশন, ভয়েস ক্লোনিং, অডিও উন্নতি, এবং আরো। API JSON অনুরোধ/প্রতিক্রিয়া দেহের সাথে মানসম্মত REST কনভেনশন ব্যবহার করে।
API কী
এখানে থেকে আপনার API কী প্রাপ্ত করুন অ্যাকাউন্ট সেটিংস. প্রো এবং এন্টারপ্রাইজ প্ল্যানে উপলব্ধ।
ভিত্তি ইউ- আর- এল
https://api.tts.ai/v1/
অনুমোদন
বিয়ারার টোকেন Authorization শীর্ষচরণ
অনুমোদন
/v1/tts/ কোন প্রমাণ ছাড়া কাজ করুন, প্রতি আইপিতে ৫,০০০ অক্ষর/দিন পর্যন্ত, আমাদের যে কোন ফ্রি মডেল ব্যবহার করে (piper, vits, melotts, kokoro). ১৫,০০০ বোনাস চরিত্র এবং প্রিমিয়াম মডেল ব্যবহারের জন্য একটি বিনামূল্যে অ্যাকাউন্টের জন্য নিবন্ধন করুন।
প্রাইম মডেল এবং উচ্চতর হার সীমার জন্য, প্রমাণীকরণ একটি বহনকারী টোকেন সঙ্গে Authorization শীর্ষচরণ.
Authorization: Bearer sk-tts-your-api-key-here
এস- ডি- কে
সরকারি 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")
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');
ভিত্তি ইউ- আর- এল
সব এনড- বিন্দু এই মৌলিক ইউ- আর- এল- এর সাথে সম্পর্কিত। উদাহরণস্বরূপ, 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
টেক্সটকে বক্তৃতার অডিওতে রূপান্তর করে । অনুরোধ করা ফরম্যাটে অডিও ফাইল ফিরিয়ে দেয় ।
অনুরোধের মূল অংশ
| প্যারামিটার | ধরন | আবশ্যক | বর্ণনা |
|---|---|---|---|
| model | string | না | মডেল আইডি (যেমন, kokoro, chatterbox, piper)। যদি অপ্রয়োজনীয় হয়, তাহলে আমরা স্বয়ংক্রিয়ভাবে একটি মডেল বেছে নেব যা অনুরোধ করা language সমর্থন করে - en/ja/zh/ko/fr/de/it/pt/es/hi/ru-এর জন্য kokoro, অন্যান্য সমর্থিত ভাষার জন্য piper (ar/pl/nl/cs/da/fi/el/hu/tr/uk/vi/etc.)। |
| text | string | হ্যাঁ | যে টেক্সটটিকে কথায় রূপান্তর করা হবে। প্রতিটি অনুরোধের সর্বোচ্চ সংখ্যা: ৫০০ অক্ষর (অজ্ঞাত), ৫,০০০ (মুক্ত অ্যাকাউন্ট), ১,০০,০০০ (পেইড প্ল্যান)। সার্ভার-পাশে দীর্ঘ ইনপুট স্বয়ংক্রিয়ভাবে টুকরো করা হবে। |
| voice | string | হ্যাঁ | ভয়েস ID (প্রয়োজনীয় ভয়েস তালিকাভুক্ত করতে /v1/voices/ ব্যবহার করুন) |
| format | string | না | আউটপুট ফরম্যাট: mp3 (ডিফল্ট), wav, flac, ogg |
| speed | float | না | কথা বলার গতি বহুগুণক। ডিফল্ট: ১.০। পরিসীমা: ০.৫ থেকে ২.০ |
| language | string | না | ভাষার কোড (যেমন, en, es)। অনুপস্থিত থাকলে স্বয়ংক্রিয়ভাবে সনাক্ত করা হবে। |
| instructions | string | না | কাজ/প্রদান চিহ্ন (≤৫০০ অক্ষর)। উদাহরণস্বরূপ \ |
| pronunciations | object | array | না | প্রতি-আবেদন উচ্চারণ অগ্রাহ্য করে। অথবা {\ |
| stream | boolean | না | স্ট্রিমিং প্রতিক্রিয়া সক্রিয় করা হবে। ডিফল্ট: false |
উদাহরণ অনুরোধ
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
SSML ট্যাগ
তারিখের ফরম্যাট ডিফল্টভাবে The TTS endpoint queues your request and returns a JSON response with a job UUID. You then poll for the result. Poll this endpoint every 1-2 seconds until Fetch the Streaming alternative: For supported models (Kokoro, MeloTTS), use
ব্যাখ্যা করো ইনপুট এই নামে বর্ণনা করা হয়েছে cardinal1234one thousand two hundred thirty-four ordinal21twenty-first date1999-12-31ডিসেম্বর ৩১, ১৯৯৯ time14:30two thirty PM telephone+1-555-867-5309plus one five five five eight six seven… currency$1,234.56one thousand two hundred thirty-four dollars and fifty-six cents spell-outNASAN A S A mdy ইংরেজি এবং dmy অন্যত্র; format=\ দ্বারা অগ্রাহ্য করা হবে{
"model": "kokoro",
"voice": "af_bella",
"text": "Your appointment is on <say-as interpret-as=\"date\">2026-04-26</say-as> at <say-as interpret-as=\"time\">14:30</say-as>. Please call <say-as interpret-as=\"telephone\">+1-555-867-5309</say-as> if you need to reschedule."
}প্রতিক্রিয়া
Step 1: Submit request
{
"uuid": "77b71db532874ce98e84a69a2d740d4c",
"job_id": "f21316bb-aefa-480d-8523-701d1e3184ce",
"status": "queued",
"credits_used": 11,
"credits_remaining": 15000
}Step 2: Poll for result
status is completed or failed.{
"status": "completed",
"result_url": "https://api.tts.ai/static/downloads/77b71db5.../output.mp3"
}{
"status": "processing"
}Step 3: Download audio
result_url from the completed response to download the audio file.পূর্ণ উদাহরণ
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)POST /v1/tts/stream/ for real-time Server-Sent Events (SSE) streaming — no polling needed.
বক্তৃতা থেকে লেখাName
অডিও থেকে টেক্সট অনুবাদ করুন। স্বয়ংক্রিয় সনাক্তকরণ সহ ৯৯টি ভাষা সমর্থন করে।
অনুরোধের মূল অংশ (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 |
প্রতিক্রিয়া
{
"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"
}
]
}
ভয়েস ক্লোন
ক্লোন করা কন্ঠে বাক্য তৈরি করুন। রেফারেন্স অডিও এবং টেক্সট আপলোড করুন।
অনুরোধের মূল অংশ (multipart/form-data)
| প্যারামিটার | ধরন | আবশ্যক | বর্ণনা |
|---|---|---|---|
| reference_audio | file | হ্যাঁ | রেফারেন্স ভয়েস অডিও (১০-৩০ সেকেন্ড সুপারিশ করা হয়)। সর্বোচ্চ ২০ মেগাবাইট। |
| text | string | হ্যাঁ | ক্লোন করা কন্ঠে বলার জন্য টেক্সট। |
| model | string | না | ক্লোন মডেল: chatterbox (ডিফল্ট), cosyvoice2, gpt-sovits |
| format | string | না | আউটপুট ফরম্যাট: mp3 (ডিফল্ট), wav, flac |
| language | string | না | লক্ষ্য ভাষার কোড । নির্বাচিত মডেল দ্বারা সমর্থিত হওয়া আবশ্যক । |
প্রতিক্রিয়া
অডিও ফাইলটি বাইনারি তথ্য হিসেবে ফিরিয়ে আনে, TTS-এর শেষ বিন্দুর মতই।
শব্দ পরিবর্তকName
অডিওকে অন্য একটি কন্ঠস্বরের মত শোনার জন্য রূপান্তর করুন। উৎস অডিও আপলোড করুন এবং লক্ষ্যস্বর নির্বাচন করুন।
অনুরোধের মূল অংশ (multipart/form-data)
| প্যারামিটার | ধরন | আবশ্যক | বর্ণনা |
|---|---|---|---|
| file | file | হ্যাঁ | উৎস অডিও ফাইল (MP3, WAV, FLAC)। সর্বাধিক ৫০ মেগাবাইট। |
| target_voice | string | হ্যাঁ | যে ভয়েস আইডিতে রূপান্তর করা হবে (প্রযোজ্য ভয়েস তালিকাভুক্ত করতে /v1/voices/ ব্যবহার করুন) |
| model | string | না | শব্দ রূপান্তর মডেল: openvoice (ডিফল্ট), knn-vc |
| format | string | না | আউটপুট ফরম্যাট: wav (ডিফল্ট), mp3, flac |
উদাহরণ অনুরোধ
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
একটি ভাষা থেকে অন্য ভাষায় অডিও অনুবাদ করুন। একটি কলের মধ্যে বাক্যের-থেকে-লেখ্য, অনুবাদ এবং বাক্যের-থেকে-লেখ্য একত্রিত করে।
অনুরোধের মূল অংশ (multipart/form-data)
| প্যারামিটার | ধরন | আবশ্যক | বর্ণনা |
|---|---|---|---|
| file | file | হ্যাঁ | মূল ভাষায় উৎস অডিও ফাইল। সর্বোচ্চ ১০০ মেগাবাইট। |
| target_language | string | হ্যাঁ | লক্ষ্য ভাষার কোড (যেমন, es, fr, de, ja) |
| voice | string | না | অনুবাদকৃত আউটপুট-এর জন্য শব্দ। অগ্রাহ্য করা হলে স্বয়ংক্রিয়ভাবে নির্বাচিত হবে। |
| preserve_voice | boolean | না | মূল স্পিকারের কন্ঠের বৈশিষ্ট্য সংরক্ষণের চেষ্টা করা হবে। ডিফল্ট: false |
প্রতিক্রিয়া
{
"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
}
বক্তৃতা থেকে বক্তৃতা
বিষয়বস্তু সংরক্ষণ করে কথা বলার ধরন, আবেগ বা উপস্থাপনা পরিবর্তন করুন। টোন, গতি এবং অভিব্যক্তি সংশোধন করার জন্য ব্যবহারযোগ্য।
অনুরোধের মূল অংশ (multipart/form-data)
| প্যারামিটার | ধরন | আবশ্যক | বর্ণনা |
|---|---|---|---|
| file | file | হ্যাঁ | উৎস বাক্য অডিও ফাইল। সর্বোচ্চ ৫০ মেগাবাইট। |
| voice | string | হ্যাঁ | আউটপুট বাক্যাংশের জন্য লক্ষ্য ভয়েস আইডি |
| model | string | না | মডেল: openvoice (ডিফল্ট), chatterbox |
| emotion | string | না | লক্ষ্য আবেগ: neutral, happy, sad, angry, excited |
| speed | float | না | গতি সংশোধন। ডিফল্ট: ১.০। পরিধি: ০.৫ থেকে ২.০ |
প্রতিক্রিয়া
রূপান্তরিত অডিও ফাইলটি বাইনারি তথ্য হিসেবে ফিরিয়ে দেয়।
অডিও টুলName
উন্নতির জন্য অডিও প্রসেসিং এন্ডপয়েন্ট, ভয়েস অপসারণ, স্টেম বিভাজন এবং আরও অনেক কিছু।
অডিও গুণমান উন্নত করুন: ঝামেলা দূর করুন, সুস্পষ্টতা উন্নত করুন, সুপার রেজোলিউশন।
| file file | উন্নত করার জন্য অডিও ফাইল |
| denoise boolean | নিঃশব্দীকরণ সক্রিয় করো (ডিফল্ট: সত্য) |
| enhance_clarity boolean | বক্তৃতার স্পষ্টতা বাড়াও (ডিফল্ট: সত্য) |
| super_resolution boolean | অডিও গুণমান উন্নত করুন (ডিফল্ট: মিথ্যা) |
| strength integer | ১- ৩ (হালকা, মাঝারি, কঠিন) । ডিফল্ট: ২ |
সঙ্গীতের সঙ্গীত থেকে ভয়েস আলাদা করুন (ভয়েস অপসারণ) অথবা স্টেম- এ বিভক্ত করুন।
| file file | যে অডিও ফাইলটি আলাদা করা হবে |
| model string | demucs (ডিফল্ট) অথবা spleeter |
| stems integer | স্টেম- এর সংখ্যা: ২, ৪, ৫, অথবা ৬ (ডিফল্ট: ২) |
| format string | আউটপুট ফরম্যাট: wav, mp3, flac |
অডিও রেকর্ড থেকে প্রতিধ্বনি এবং প্রতিধ্বনি অপসারণ করুন।
| file file | যে অডিও ফাইলটি প্রক্রিয়া করা হবে |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
কী, 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"]
}
ফরম্যাটের মধ্যে অডিও রূপান্তর করুন।
| file file | যে অডিও ফাইল রূপান্তর করা হবে |
| format string | লক্ষ্য ফরম্যাট: mp3, wav, flac, ogg, m4a, aac |
| bitrate integer | আউটপুট বিটরেট (কেবিপিএস- এ): ৬৪, ১২৮, ১৯২, ২৫৬, ৩২০ |
| sample_rate integer | নমুনা হার: 22050, 44100, 48000 |
| channels string | mono অথবা stereo |
ভয়েস আড্ডা
অডিও অথবা টেক্সট পাঠান এবং সংশ্লেষিত বক্তব্যের সাথে একটি 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 | না | একটি বিদ্যমান আলাপ চালিয়ে যান |
প্রতিক্রিয়া
{
"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
সমান্তরাল TTS উৎপাদনের জন্য একাধিক টেক্সট জমা দিন। সকল কাজ সম্পন্ন হলে ইচ্ছাকৃতভাবে একটি ওয়েবহুক কলব্যাক গ্রহণ করুন।
পরামিতি
| পরামিতি | ধরন | বর্ণনা |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | ব্যাচ সম্পন্ন হলে POST ফলাফল প্রদর্শনের জন্য বৈকল্পিক URL। |
প্রতিক্রিয়া
{
"batch_id": "abc123",
"total": 3,
"completed": 0,
"status": "processing"
}
GET /v1/tts/batch/result/?batch_id=abc123 এর মাধ্যমে ভোট প্রক্রিয়া
শব্দের অন্তর্ভুক্তকরণ
রেফারেন্স অডিও থেকে একটি ভয়েস ইম্বেডিং পূর্ব-গণনা করা হবে। পরবর্তী ভয়েস ক্লোন অনুরোধের ক্ষেত্রে প্রায়-অবিলম্বে উৎপাদনের জন্য ফিরিয়ে পাওয়া embed_id ব্যবহার করা হবে।
পরামিতি
| পরামিতি | ধরন | বর্ণনা |
|---|---|---|
| file | file | Reference audio file (WAV, MP3, FLAC). |
| model | string | Cloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts. |
প্রতিক্রিয়া
{
"embed_id": "emb_abc123",
"model": "chatterbox",
"duration_ms": 450
}
স্বাস্থ্য পরীক্ষা
GPU সার্ভারের অবস্থা, লোডকৃত মডেল এবং লাইন আকার পরীক্ষা করুন। অনুমোদনের প্রয়োজন নেই। ৩০ সেকেন্ডের জন্য ক্যাশ করা হয়েছে।
প্রতিক্রিয়া
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
মডেলের তালিকা
সমস্ত উপলব্ধ মডেল এবং তাদের বৈশিষ্ট্যের একটি তালিকা প্রদান করে ।
প্রতিক্রিয়া
{
"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
}
]
}
শব্দের তালিকা
সমস্ত উপলব্ধ শব্দের একটি তালিকা প্রদান করে, ইচ্ছাকৃতভাবে মডেল অথবা ভাষা অনুসারে পরিশোধিত ।
পরামিতি
| প্যারামিটার | ধরন | বর্ণনা |
|---|---|---|
| model | string | মডেল ID অনুযায়ী পরিশোধক (যেমন, kokoro) |
| language | string | ভাষা কোড অনুযায়ী পরিশোধক (যেমন, en) |
| gender | string | লিঙ্গ অনুযায়ী পরিশোধক: পুরুষ, মহিলা, নিরপেক্ষ |
প্রতিক্রিয়া
{
"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
}
সাবটাইটেল (SRT / VTT) নতুন
যেকোন সম্পন্ন TTS কাজের জন্য সমন্বিত সাবটাইটেল তৈরি করুন। অডিওতে Whisper alignment চালিয়ে SRT অথবা WebVTT ফিরিয়ে দিন। ফলাফল ডিস্কে ক্যাশ করা হয় যাতে একই uuid-এর জন্য দ্বিতীয় কলটি ডিস্ক পড়ার মতো হয়।
পরামিতি
| প্যারামিটার | আবশ্যক | বর্ণনা |
|---|---|---|
| uuid | হ্যাঁ | /v1/tts/ অথবা /v1/voice-clone/ দ্বারা প্রদত্ত কাজের UUID। |
| format | না | srt (ডিফল্ট) অথবা vtt। |
| download | না | 1 Content-Disposition: attachment প্রেরণ করতে, যাতে প্রদর্শনের পরিবর্তে ব্রাউজারের দ্বারা সংরক্ষণ করা হয়। |
| language | না | সংযোগ মডেলের জন্য ইঙ্গিত (অবহেলা করলে স্বয়ংক্রিয়ভাবে সনাক্ত করা হবে)। |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
উচ্চারণ অভিধান নতুন
TTS ইঞ্জিনকে নির্দিষ্ট শব্দের উচ্চারণ সম্পর্কে জানান। সংরক্ষিত এন্ট্রিগুলি স্বয়ংক্রিয়ভাবে আপনার প্রতিটি TTS অনুরোধের ক্ষেত্রে প্রয়োগ করা হবে। প্রতি অ্যাকাউন্টে ২০০ এন্ট্রির সীমা।
অনুরোধের মূল অংশ (POST)
| প্যারামিটার | ধরন | বর্ণনা |
|---|---|---|
| word | string | অগ্রাহ্য করার জন্য শব্দ (যেমন GIF, Anthropic)। শব্দের সীমানা মিলেছে। |
| replacement | string | মডেলের জন্য এটি কীভাবে বানান হবে (যেমন jiff, ann THROP ick)। |
| language | string | বৈকল্পিক আই. এস. ও. কোড । ফাঁকা = সব ভাষায় প্রযোজ্য । |
| case_sensitive | boolean | ডিফল্ট false। true হলে অক্ষরের বড়-ছোট আকার সঠিকভাবে মেলে। |
# Save an entry
curl -X POST https://tts.ai/api/v1/pronunciations/ \
-H "Authorization: Bearer sk-tts-..." \
-H "Content-Type: application/json" \
-d '{"word": "GIF", "replacement": "jiff"}'
# List your entries
curl https://tts.ai/api/v1/pronunciations/ -H "Authorization: Bearer sk-tts-..."
# Delete entry by id
curl -X DELETE "https://tts.ai/api/v1/pronunciations/?id=42" -H "Authorization: Bearer sk-tts-..."
আপনি প্রতি-আবেদনে অগ্রাহ্য করতে পারেন তাদের সংরক্ষণ না করে — অন্তর্ভুক্ত করুন pronunciations যেকোন /v1/tts/ কল একটি বস্তু বা একটি এরে হিসাবে (TTS শেষ বিন্দু পরামিতি দেখুন)।
বার্তা বর্ণনাকারী নতুন
যে কোন প্রবন্ধ পৃষ্ঠায় একটি ট্যাগ স্থাপন করুন এবং ভিজিটররা একটি নির্দিষ্ট পাঠক বার পাবে যা ক্লিক করলে পৃষ্ঠাটি বর্ণনা করে। প্রবন্ধের মূল অংশ স্বয়ংক্রিয়ভাবে সনাক্ত করে, স্বনির্বাচিত শব্দ / মডেল / অবস্থান / উচ্চারণ রং সমর্থন করে।
<script src="https://tts.ai/narrator.js"
data-pk="pk-tts-your-publishable-key"
data-voice="af_bella"
data-model="kokoro"
data-extract="auto"
data-position="bottom"
data-color="#e60000"
data-locale="en"></script>
অপশন
| প্যারামিটার | বর্ণনা |
|---|---|
data-pk | প্রকাশযোগ্য কী (pk-tts-…)। কী-এর allowed_domains ক্ষেত্র ব্যবহার করে ডোমেইন সংক্রান্ত নিষেধাজ্ঞা প্রয়োগ করা হবে। |
data-voice | ভয়েস ID। ডিফল্ট af_bella। |
data-model | TTS মডেল ID। ডিফল্ট kokoro। |
data-extract | auto (ডিফল্ট) — article/main/.post-content/.entry-content নির্বাচনকারী ব্যবহার করে, সবচেয়ে ঘন পংক্তির ক্লাস্টারে ফিরে যায়। অথবা নির্দিষ্ট উপাদানকে লক্ষ্য করে যেকোন CSS নির্বাচনকারী প্রদান করে। |
data-position | bottom (ডিফল্ট) অথবা top। |
data-color | উচ্চারণ রং (কোন CSS রং)। ডিফল্ট #e60000। |
data-min-chars / data-max-chars | বারটি ছেড়ে দিন যদি বারটি সর্বনিম্ন অক্ষরের (ডিফল্ট ২০০) চেয়ে ছোট হয় । ইনপুট সর্বোচ্চ অক্ষরের (ডিফল্ট ৫০,০০০) উপরে রাখুন । |
শুনুন বাটন উইজেটName
ইনলাইন বাটন-শৈলীর অন্তর্ভুক্ত। এর ট্যাগের পাশে রেন্ডার করা হয় এবং বাটন-প্রদত্ত একটি ছোট স্নিপেট চালানো হয়। উপরের বার্তা বর্ণনাকারী থেকে ভিন্ন আকৃতি (যা পৃষ্ঠা-বিস্তৃত বার স্বয়ংক্রিয়ভাবে প্রবেশ করায় এবং পুরো বার্তা বর্ণনা করে)।
<script src="https://tts.ai/widget.js"
data-voice="af_bella"
data-model="kokoro"
data-style="full"
data-theme="light"></script>
সংরক্ষিত শব্দ (স্থায়ী ক্লোন)
একটি রেফারেন্স অডিও একবার আপলোড করুন, একটি স্থায়ী voice_id পুনরুদ্ধার করুন, তারপর প্রতিটি কলের জন্য অডিও পুনরায় আপলোড করার পরিবর্তে TTS অনুরোধের মধ্যে এই id-এর রেফারেন্স করুন। উচ্চ পরিমাণের সংযোগের জন্য উপযুক্ত।
একটি শব্দ আপলোড করুন
POST
https://tts.ai/api/v1/user-voices/
অনুমোদন প্রয়োজন
বহু-অংশ বিশিষ্ট ফর্ম। ক্ষেত্র: ফাইল (অবশ্যক, ৫-৩০ সেকেন্ডের অডিও), নাম (অবশ্যক), ভাষা (বৈকল্পিক, ডিফল্ট en), মডেল (বৈকল্পিক — zh/ja/ko এর জন্য cosyvoice2 অথবা openvoice এর জন্য স্বয়ংক্রিয়ভাবে নির্বাচন করা হবে), consent_confirmed (অবশ্যক, যেকোন সত্য মান)।
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"
}
TTS-এ সংরক্ষিত শব্দ ব্যবহার করা হবে
user_voice_id সহ /api/v1/tts/ এ POST করুন (নিজেকে জানিয়ে নিন: ওয়েব VPS হোস্ট, api.tts.ai নয়)। আমরা আপনার সংরক্ষিত অডিও এবং ক্লোনিং পাইপলাইনের জন্য পথ লোড করব।
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.
তালিকা / মুছে ফেলো
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
আর্কাইভ / পুনরায় সক্রিয় (মুক্ত)
আর্কাইভকৃত শব্দ আপনার অ্যাকাউন্টে থাকবে কিন্তু TTS-এ ব্যবহার করা যাবে না। নিষ্ক্রিয় শেষ ব্যবহারকারীদের জন্য উপকারী যাতে আপনার তালিকা পরিষ্কার থাকে।
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/archive/
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/reactivate/
কোড উদাহরণ
টেক্সট- থেকে- কথাName
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
# 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"])
ভয়েস ক্লোন
# 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
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
// 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
# 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
# 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"
ভয়েস ক্লোন
# 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
অডিও উন্নতি
# 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 একীভূত শুরু করুন।