مستندات
TTS.ai را در برنامههای کاربردی خود با API REST ما ادغام کنید. فرمت سازگار با OpenAI برای مهاجرت آسان.
نمای کلی
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 در دسترس است.
نشانی وب پایه
https://api.tts.ai/v1/
احراز هویت
نشان حامل از طریق Authorization سرآیند
احراز هویت
تمام درخواستهای API نیاز به احراز هویت از طریق یک نشانه حامل در Authorization سرآیند.
Authorization: Bearer sk-tts-your-api-key-here
نشانی وب پایه
تمام نقاط پایانی نسبت به این نشانی وب پایه هستند. برای مثال ، نقطه پایانی TTS این است:
محدودیتهای نرخ
محدودیتهای نرخ API بسته به برنامه متفاوت است:
| نقشه | درخواستها/دقیقه | Concurrent | طول متن بیشینه |
|---|---|---|---|
| حرفهای | 60 | 5 | ۵۰۰۰ کاراکتر |
| انترپرایز | 300 | 20 | 50000 حرف |
سرآیندهای محدودیت نرخ در هر پاسخ شامل میشوند: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
هزینههای اعتبار
| سرویس | هزینه | Unit |
|---|---|---|
| TTS (مدلهای آزاد: Piper, VITS, MeloTTS) | 1 امتیاز | هر ۱۰۰۰ کاراکتر |
| TTS (مدلهای استاندارد: Kokoro, CosyVoice 2, etc.) | 2 امتیاز | هر ۱۰۰۰ کاراکتر |
| TTS (مدلهای پریمیوم: Tortoise، Chatterbox، و غیره) | 4 امتیاز | هر ۱۰۰۰ کاراکتر |
| تبدیل گفتار به متنComment | 2 امتیاز | در هر دقیقه صدا |
| شبیهسازی صدا | 4 امتیاز | هر ۱۰۰۰ کاراکتر |
| تغییردهندۀ صداName | 3 امتیاز | در هر دقیقه صدا |
| بهبود صوتی | 2 امتیاز | در هر دقیقه صدا |
| حذف صدا / تقسیم صدا | 3-4 امتیاز | در هر دقیقه صدا |
| ترجمۀ گفتارName | 5 امتیاز | در هر دقیقه صدا |
| گپ صوتی | 3 امتیاز | در هر نوبت |
| یابنده کلید & BPM | آزاد | -- |
| مبدل صوتیName | آزاد | -- |
متن به گفتارName
تبدیل متن به صدای گفتار. پروندۀ صوتی را در قالب خواسته شده برمیگرداند.
بدنه درخواست
| پارامتر | & نوع | الزامی | & توصیف |
|---|---|---|---|
| model | string | آره | شناسهٔ مدل (برای مثال، kokoro، chatterbox، piper) |
| text | string | آره | متن برای تبدیل به گفتار) حداکثر ۵۰۰۰ کاراکتر برای Pro، ۵۰۰۰۰ کاراکتر برای Enterprise ( |
| voice | string | آره | شناسۀ صدا (برای فهرست کردن صداهای موجود از /v1/voices/ استفاده کنید) |
| format | string | نه | قالب خروجی: mp3 (به صورت پیشفرض)، wav، flac، ogg |
| speed | float | نه | ضربکننده سرعت گفتار. پیشفرض: ۱٫۰. محدوده: ۰٫۵ تا ۲٫۰ |
| language | string | نه | کد زبان (برای مثال، en, es). اگر حذف شود، به صورت خودکار شناسایی میشود. |
| 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
پاسخ
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
تبدیل گفتار به متنComment
رونوشت صدا به متن. از ۹۹ زبان با تشخیص خودکار پشتیبانی میکند.
بدنه درخواست (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 | نه | تلاش برای حفظ گوینده اصلی |
پاسخ
{
"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 | نه | تنظیم سرعت. پیشفرض: ۱٫۰. محدوده: ۰٫۵ تا ۲٫۰ |
پاسخ
پروندۀ صوت تبدیلشده را به عنوان داده باینری برمیگرداند.
ابزارهای صوتی
پایانههای پردازش صوتی برای بهبود، حذف صدا، تقسیم ساقه و غیره.
بهبود کیفیت صدا: حذف نویز، بهبود شفافیت، وضوح بالا.
| 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 | 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"]
}
تبدیل صدا بین قالبها.
| file file | پروندۀ صوتی برای تبدیل |
| format string | فرمت هدف: mp3, wav, flac, ogg, m4a, aac |
| bitrate integer | نرخ بیت خروجی به کیلوبایت بر ثانیه: ۶۴، ۱۲۸، ۱۹۲، ۲۵۶، ۳۲۰ |
| sample_rate integer | نرخ نمونه: 22050, 44100, 48000 |
| channels string | mono یا stereo |
گپ صوتی
ارسال صدا یا متن و دریافت پاسخ هوش مصنوعی با گفتار سنتز شده.
بدنه درخواست (multipart/form-data یا JSON)
| پارامتر | & نوع | الزامی | & توصیف |
|---|---|---|---|
| audio | file | نه* | ورودی صوتی (یا audio یا text لازم است) |
| text | string | نه* | ورودی متن (یا audio یا text لازم است) |
| voice | string | نه | صدای پاسخ هوش مصنوعی. پیشفرض: af_bella |
| tts_model | string | نه | مدل TTS برای پاسخ. پیشفرض: kokoro |
| system_prompt | string | نه | درخواست سیستم سفارشی برای هوش مصنوعیName |
| 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
}
فهرست مدلها
یک فهرست از تمام مدلهای موجود با قابلیتهایشان را برمیگرداند.
پاسخ
{
"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 | پالایش بر اساس شناسهٔ مدل (مثلاً kokoro) |
| language | string | پالایش بر اساس کد زبان (مثلاً en) |
| gender | string | فیلتر بر اساس جنسیت: male, female, neutral |
پاسخ
{
"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
}
مثالهای کد
متن به گفتار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')}")
تبدیل گفتار به متنComment
# 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();
تبدیل گفتار به متنComment
// 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
تبدیل گفتار به متنComment
# 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 credits for this request.",
"credits_required": 4,
"credits_available": 2
}
}
| وضعیت HTTP | Error 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 |
در حال بارگذاری مدل. تا چند ثانیه دیگر دوباره سعی کنید. |
Webhookها
برای تکالیف طولانیمدت (شکافتن ریشه، TTS بسته)، میتوانید یک پارامتر webhook_url را ارائه دهید. هنگامی که تکالیف به پایان میرسد، ما نتیجه را به نشانی 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"
}
آماده ساختن؟
کلید API خود را دریافت کنید و شروع به ادغام TTS.ai در برنامههای خود کنید.