ایران ناتیفیکیشن

تبدیل متن به گفتار (GET)

متن فارسی ← فایل صوتی ۸ کیلوهرتز برای IVR و VoIP؛ مناسب آدرس ttsUrl سانترال.

GEThttps://api.irnoti.com/v1/tts/say
scope: tts.say

متن فارسی را به فایل صوتی تک‌کانالهٔ آمادهٔ سانترال تبدیل می‌کند و **خود فایل** را برمی‌گرداند (نه JSON). روی دامنهٔ اختصاصی همین سرویس، همین عملیات با مسیر کوتاه https://tts.irnoti.com/say?text=... هم در دسترس است. **هزینه:** به‌ازای هر حرفِ جملهٔ تازه (با حداقل هر جمله). هر جملهٔ تکراری (همان متن، صدا و قالب) برای شما فقط یک‌بار حساب می‌شود، حتی اگر سانترال صدها بار آن را بگیرد. متن داخل [ ] و ( ) و علائم مارک‌داون خوانده و حساب نمی‌شود. **بدون کلید:** درخواست بدون key آزمایش رایگان است (متن کوتاه، محدودیت نرخ و سقف روزانهٔ پلتفرم). **با کلید:** هزینه از کیف پول صاحب کلید کم می‌شود؛ کلید آزمایشی (Sandbox) صدای آزمایشی می‌دهد و هزینه‌ای ندارد. **امنیت:** سانترال‌ها معمولاً فقط می‌توانند آدرس باز کنند، پس کلید را می‌توان در key= گذاشت؛ برای کلید حتماً فهرست IP مجاز تعریف کنید. در برنامه‌ها از هدر Authorization: Bearer استفاده کنید. **هدرهای پاسخ:** X-TTS-Chars (حرف‌های خوانده‌شده)، X-TTS-Price (ریال؛ ۰ برای دریافت مجدد)، X-TTS-Duration-Ms. پاسخ برای یک روز قابل کش است.

پارامترها

ناممحلنوعتوضیح
text *querystringمتن فارسی؛ حداکثر ۱۵۰۰ حرف (تنظیم سامانه؛ در آزمایش رایگان کوتاه‌تر).
voicequerystringشناسهٔ صدا مثل char_teacher_lady؛ فهرست در GET /public/tts/info. پیش‌فرض: صدای پیش‌فرض سامانه.
formatquerystringwav8k (پیش‌فرض)، wav16k، sln، ulaw یا alaw.
keyquerystringکلید API با دامنهٔ tts.say (به‌جای هدر Authorization، برای سانترال‌ها).

خطاهای خاص این endpoint

401unauthorizedکلید نامعتبر است، یا آزمایش رایگان بسته شده و کلیدی نفرستاده‌اید (key_required).
402insufficient_balanceاعتبار برای این جمله کافی نیست؛ قبل از تولید صدا رد می‌شود و هزینه‌ای ندارد.
403forbiddenکلید دامنهٔ tts.say ندارد یا ویژگی TTS برای حساب شما فعال نیست.
409kyc_requiredاحراز هویت تأیید نشده است.
422text_too_longمتن از سقف مجاز طولانی‌تر است (در آزمایش رایگان کوتاه‌تر).
422empty_textمتن چیزی برای خواندن ندارد (مثلاً فقط توضیح داخل [ ] یا ( ) است).
422unknown_voiceصدای خواسته‌شده در دسترس نیست؛ فهرست را از GET /public/tts/info بگیرید.
422unknown_formatقالب خواسته‌شده در دسترس نیست.
422daily_limitسقف حرف روزانهٔ کلید پر شده است.
429demo_limitسقف روزانهٔ آزمایش رایگان پر شده است یا درخواست‌ها در دقیقه زیاد بوده؛ با کلید API ادامه دهید.
502tts_failedموتور صدا پاسخ نداد؛ هزینه‌ای کم نشده است، دوباره تلاش کنید.
503tts_disabledسرویس موقتاً غیرفعال است.

اجرای زنده (محیط تست)

باز کردن در کنسول کامل ←

با یک کلید آزمایشی (در پنل ← وب‌سرویس ← «کلید آزمایشی») این درخواست را همین‌جا اجرا کنید. پیام واقعی ارسال نمی‌شود و هزینه‌ای کسر نمی‌شود.

curl -X GET 'https://api.irnoti.com/v1/tts/say?text=%D8%B3%D9%84%D8%A7%D9%85%D8%8C+%D8%A8%D9%87+%D8%B4%D8%B1%DA%A9%D8%AA+%D9%85%D8%A7+%D8%AE%D9%88%D8%B4+%D8%A2%D9%85%D8%AF%DB%8C%D8%AF&voice=char_teacher_lady&format=wav8k' \
  -H "Authorization: Bearer $IRNOTI_KEY"
پاسخ نمونه200 OK
"(باینری audio/wav) — X-TTS-Chars: 25, X-TTS-Price: 500, X-TTS-Duration-Ms: 2400"
تبدیل متن به گفتار (GET) — مستندات API | ایران ناتیفیکیشن