AzerTTS
Mətni Azərbaycan nitqinə çevirin
Mətni daxil edin
Sistem tərəfindən səsləndiriləcək mətni yazın
İstifadə Şərtləri
AzerTTS platformasının istifadə qaydaları və hüquqi müddəalar
Son yenilənmə tarixi: 22 may 2026
1. Ümumi Müddəalar
AzerTTS («Xidmət») Azərbaycan dilində mətnin süni intellekt vasitəsilə nitqə çevrilməsi (TTS — Text-to-Speech) funksionallığını və proqram təminatı ilə inteqrasiya üçün API xidmətlərini təqdim edir. Xidmətdən istifadə etməklə siz bu İstifadə Şərtlərini («Şərtlər») tam olaraq qəbul etmiş sayılırsınız. Əgər bu şərtlərlə razı deyilsinizsə, xidmətdən istifadə etməməlisiniz. Bu şərtlər həm veb-interfeys, həm də API vasitəsilə istifadəni əhatə edir.
2. Hesabın Yaradılması və Təhlükəsizlik
API xidmətlərindən istifadə etmək üçün Google hesabı vasitəsilə qeydiyyatdan keçmək tələb olunur. Qeydiyyat zamanı sizin e-poçt ünvanı, ad və profil şəkli Google tərəfindən bizim sistemə ötürülür. Siz öz hesab məlumatlarının təhlükəsizliyinə cavabdehsiniz. Başqa şəxsin hesabına icazəsiz giriş cəhdi qanuni nəticələrə səbəb ola bilər.
- Hesabınızı üçüncü şəxslərlə paylaşmaq qadağandır.
- Hesabınızda icazəsiz fəaliyyət aşkar etsəniz, dərhal bizə məlumat verməlisiniz.
- Biz hesabın təhlükəsizliyini təmin etmək üçün lazımi texniki tədbirlər görürük, lakin mütləq təhlükəsizlik zəmanəti vermirik.
3. API Açarları
Hər istifadəçi hesabına maksimum 5 (beş) API açarı yaradıla bilər. API açarları iki növdür:
- Lite API Key (prefiks: attslak-) — pulsuz plan, ayda 15 000 simvola qədər. Limit bitdikdə növbəti ayın başlanğıcına qədər API istifadəsi dayanır.
- Enterprise API Key (prefiks: attseak-) — ödənişli plan, hər 10 000 simvol üçün $0.10 ödəniş olunur. Limit yoxdur, lakin balansınız kifayət etmədikdə sorğular rədd ediləcək.
API açarları məxfi məlumatlardır və onları üçüncü şəxslərlə paylaşmaq, ictimai saxlama yerlərində (GitHub, Pastebin və s.) dərc etmək qadağandır. API açarınızın sızıntısı halında dərhal onu silib yenisi yaratmağınız tövsiyə olunur. API açarınızın icazəsiz istifadəsi nəticəsində yaranan zərərə görə məsuliyyət sizin üzərinizdir.
4. Limitlər və İstifadə Məhdudiyyətləri
Limitlər API açarlarına deyil, hesaba təyin edilir. Yəni bir hesabdakı bütün API açarları eyni limit və balansı paylaşırlar. Lite planda aylıq 15 000 simvol limiti hesab səviyyəsində hesablanır. Enterprise planda isə simvol sayına uyğun olaraq balansdan avtomatik olaraq ödəniş çıxılır. Aylıq istifadə hər təqvim ayının 1-də sıfırlanır.
- Bir sorğuda maksimum 50 000 simvol göndərilə bilər.
- Veb-interfeys vasitəsilə sorğularda maksimum 5 000 simvol məhdudiyyəti tətbiq olunur.
- Veb-interfeysində həftəlik 300 000 simvol limiti tətbiq olunur.
- API Lite planı üçün dəqiqədə 100 sorğu (RPM) və gündəlik 1200 sorğu (RPD) limitləri mövcuddur.
- API Enterprise planı üçün dəqiqədə 2500 sorğu (RPM) və gündəlik 250,000 sorğu (RPD) limitləri mövcuddur.
- Sistem həddindən artıq yüklənməsinin qarşısını almaq üçün qeyri-API sorğu tezliyinə məhdudiyyət (3 saniyəlik zəmanət aralığı) qoyulmuşdur.
5. Balans və Ödənişlər
Enterprise API istifadəçiləri hesab balansını Paddle vasitəsilə artıra bilərlər. Minimum depozit məbləği $1, maksimum isə $10 000-dır. Ödənişlər Paddle tərəfindən emal edilir və Paddle-ın ödəniş şərtləri tətbiq olunur. Uğurlu ödənişdən sonra balans dərhal yenilənir. Ödəniş uğursuz olarsa, balans artırılmır və sizə müvafiq xəta mesajı göstərilir.
- Balans yalnız AzerTTS API xidmətlərində istifadə oluna bilər, nağdlaşdırıla bilməz.
- Ödənişlərin geri qaytarılması qaydaları ilə "Refund Policy" səhifəsində tanış ola bilərsiniz.
- Biz ödəniş emalında səhv aşkar etsək, müvafiq düzəliş həyata keçirəcəyik.
- Paddle əməliyyatları üçün Paddle-ın komissiya şərtləri tətbiq oluna bilər.
6. Qəbul Edilən İstifadə
Xidmətdən istifadə edərkən aşağıdakı qaydalara əməl etməlisiniz:
- Xidmət yalnız qanuni və etik məqsədlərlə istifadə olunmalıdır.
- Daxil etdiyiniz mətnin məzmununa görə tam məsuliyyət istifadəçinin üzərində qalır.
- Nifrət nitqi, təhdid, fırıldaqçılıq, uşaq istismarı və ya digər qanunsuz məzmunun yaradılmasına xidməti istifadə etmək qadağandır.
- Süni intellekt vasitəsilə yaradılmış səslərdən kiminsə səsini və ya şəxsiyyətini icazəsiz təqlid etmək (deepfake), yanlış məlumat yaymaq və ya aldatma məqsədilə istifadə etmək qadağandır.
- Sistemin normal işini pozmaq, DDoS hücumları, avtomatik sorğuların həddindən artıq göndərilməsi və ya digər sui-istifadə formaları qadağandır.
- API açarlarını avtomatik skriptlərlə kütləvi şəkildə yaratmaq və ya sistemdən sui-istifadə etmək qadağandır.
- Yaradılan audio faylların üçüncü şəxslərin hüquqlarını pozmaq məqsədilə istifadəsi qadağandır.
7. Gözə Keçirilən Məsuliyyət
Bu xidmət «olduğu kimi» (as is) təqdim olunur. Aşağıdakı hallarda gözlə keçirilən məsuliyyət tətbiq olunur:
- Xidmətin fasiləsiz, xətasız və ya daimi əlçatan olacağına zəmanət verilmir.
- Texniki səbəblər, yeniləmələr və ya servis dəyişiklikləri nəticəsində funksionallıq dəyişə bilər və ya müvəqqəti olaraq əlçatan ola bilməyə bilər.
- API cavablarının doğruluğu, audio keyfiyyəti və ya uyğunluğu barədə zəmanət verilmir.
- İstifadəçi tərəfindən daxil edilən mətnin məzmununa, həmçinin yaradılan audio faylın istifadəsinə görə məsuliyyət istifadəçinin üzərindədir.
- Xidmətin işindəki fasilələr, texniki nasazlıqlar və ya məlumat itkisi üçün biz məsuliyyət daşımırıq.
8. Hesabın Dayandırılması və Ləğvi
Aşağıdakı hallarda biz hesabınızı müvəqqəti dayandıra və ya tamamilə ləğv edə bilərik:
- Bu şərtlərin pozulması, o cümlədən sui-istifadə, spam və ya qeyri-qanuni fəaliyyət.
- API açarlarının üçüncü şəxslərə satılması və ya ictimai yayılması.
- Sistemin təhlükəsizliyinə və ya normal işinə təhdid yarandıqda.
- Uzunmüddətli hərəkətsizlik (12 aydan çox hesaba giriş edilmədikdə).
Hesab ləğv edildikdə, istifadə olunmamış balans geri qaytarıla bilməyəcək. İstifadəçi özü hesabını silmək istəyirsə, bizimlə əlaqə saxlamalıdır.
9. Üçüncü Tərəf Xidmətləri
Xidmət aşağıdakı üçüncü tərəf platformalarından istifadə edir və onların öz şərtləri tətbiq olunur:
- Google (Firebase Authentication) — hesabın yaradılması və autentifikasiyası üçün. Google-ın Məxfilik Siyasəti və İstifadə Şərtləri tətbiq olunur.
- Paddle — ödənişlərin emalı üçün. Paddle-ın İstifadəçi Razılaşması və Məxfilik Siyasəti tətbiq olunur.
- Render.com — server infrastrukturu üçün. Render-ın Xidmət Şərtləri tətbiq olunur.
10. Mülkiyyət Hüquqları
AzerTTS platforması, onun dizaynı, kod bazası, süni intellekt modelləri və infrastrukturu bizim mülkiyyətimizdir. İstifadəçilər tərəfindən yaradılan audio fayllar istifadəçiyə məxsusdur. Lakin bu, daxil edilən mətnin öz müəllif hüquqlarına zərər verməməsi şərtinə əsaslanır. API açarları bizim sistemimiz tərəfindən yaradılır və ləğv edilənə qədər bizim bazamızda saxlanılır.
11. Şərtlərin Dəyişdirilməsi
Biz bu şərtləri istənilən vaxt yeniləmək hüququnu özümüzə saxlayırıq. Əhəmiyyətli dəyişikliklər edilərsə, bu barədə istifadəçilərə e-poçt vasitəsilə və ya platforma daxilində bildiriş göndəriləcək. Dəyişdirilmiş şərtlər dərc olunduqdan sonra xidmətdən istifadə etməyə davam etmək, yeni şərtləri qəbul etmək deməkdir. Əgər yeni şərtlərlə razı deyilsinizsə, xidmətdən istifadəni dayandırmalısınız.
12. Mübahisələrin Həlli
Bu şərtlərlə əlaqədar yaranan mübahisələr ilk növbədə danışıqlar yolu ilə həll edilməlidir. Danışıqlar nəticə vermədikdə, mübahisə Azərbaycan Respublikasının qanunvericiliyinə əsasən həll olunacaqdır. Bu şərtlər Azərbaycan Respublikasının qanunları ilə tənzimlənir və onlara əsasən şərh edilir.
13. Əlaqə
Bu şərtlərlə bağlı suallarınız və ya şərhləriniz varsa, bizimlə aşağıdakı ünvan vasitəsilə əlaqə saxlaya bilərsiniz: [email protected]
Məxfilik Siyasəti
Şəxsi məlumatlarınızın toplanması, istifadəsi və qorunması
Son yenilənmə tarixi: 22 may 2026
1. Giriş
AzerTTS («Biz», «Xidmət») istifadəçilərin şəxsi məlumatlarını qorumağa ciddi yanaşır. Bu Məxfilik Siyasəti xidmətimizi istifadə edərkən hansı məlumatların toplandığını, necə istifadə edildiyini, saxlanıldığını və qorunduğunu izah edir. Xidmətdən istifadə etməklə siz bu siyasəti qəbul etmiş sayılırsınız.
2. Toplanan Məlumatlar
Biz aşağıdakı kateqoriyalarda məlumatlar toplayırıq:
- Hesab məlumatları: Google hesabı vasitəsilə qeydiyyat zamanı alınan məlumatlar — e-poçt ünvanı, tam ad, profil şəkli. Bu məlumatlar Google-ın autentifikasiya xidməti tərəfindən təmin edilir və biz əlavə şəxsi məlumatlar toplamırıq.
- API açarları: Sizin tərəfinizdən yaradılan API açarları, onların növü (Lite/Enterprise) və yaradılma tarixi.
- İstifadə məlumatları: Aylıq simvol istifadəsi, həftəlik simvol istifadəsi, ümumi istifadə statistikası, plan növü (Lite/Enterprise).
- Maliyyə məlumatları: Hesab balansı, Paddle əməliyyat tarixçəsi, depozit məbləğləri. Qeyd: Biz kredit kartı və ya bank məlumatlarını birbaşa saxlamırıq — bütün ödənişlər Paddle tərəfindən emal edilir.
- Teknik məlumatlar: Brauzer növü, IP ünvanı (yalnız təhlükəsizlik məqsədilə), sorğu vaxtı, xəta jurnalları.
- İşlənən mətn: TTS sorğusunda göndərilən mətn yalnız audio faylın yaradılması üçün müvəqqəti olaraq emal edilir və heç bir halda daimi saxlanılmır, emal tamamlandıqdan sonra server loglarından da avtomatik olaraq təmizlənir.
3. Məlumatların İstifadə Məqsədləri
Toplanan məlumatlar yalnız aşağıdakı məqsədlər üçün istifadə olunur:
- Xidmətin əsas funksionallığının təmin edilməsi — TTS çevrilməsi, API açarlarının idarəsi, balansın izlənməsi.
- İstifadəçi hesabının idarə edilməsi — autentifikasiya, profil məlumatlarının saxlanması.
- Limitlərin və istifadənin izlənməsi — plan şərtlərinə əməl olunmasının yoxlanması.
- Ödənişlərin emalı — balans artırma əməliyyatlarının həyata keçirilməsi.
- Xidmətin təhlükəsizliyi — icazəsiz girişin, sui-istifadənin və fırıldaqçılığın qarşısının alınması.
- Texniki dəstək — istifadəçi sorğularına cavab verilməsi və texniki problemlərin həlli.
- Xidmətin yaxşılaşdırılması — ümumi istifadə statistikasına əsasən sistem optimizasiyası.
4. Məlumatların Paylaşdırılması
Biz şəxsi məlumatlarınızı satmırıq, icarəyə vermirik və ya reklam məqsədilə paylaşmırıq. Məlumatlarınız yalnız aşağıdakı hallarda üçüncü tərəflərlə paylaşıla bilər:
- Google (Firebase): Autentifikasiya üçün — Google-ın Məxfilik Siyasəti tətbiq olunur.
- Paddle: Ödəniş emalı üçün — Paddle-ın Məxfilik Siyasəti tətbiq olunur.
- Qanuni tələblər: Azərbaycan Respublikasının qanunvericiliyi, məhkəmə qərarı və ya dövlət orqanlarının tələbi ilə.
- Təhlükəsizlik: Xidmətin təhlükəsizliyini təmin etmək, fırıldaqçılıq və ya qanun pozuntusunun qarşısını almaq məqsədilə.
Biz heç bir şəraitdə istifadəçi məlumatlarını üçüncü tərəf reklam şəbəkələrinə, data brokerlərə və ya marketinq şirkətlərinə satmırıq.
5. Məlumatların Saxlanması və Təhlükəsizliyi
İstifadəçi məlumatları Google Firebase Firestore bazasında saxlanılır. Bu bazanın fiziki təhlükəsizliyi Google tərəfindən təmin edilir və SSL/TLS şifrələməsi ilə qorunur. Biz aşağıdakı təhlükəsizlik tədbirlərini həyata keçirmişik:
- Bütün məlumat ötürmələri HTTPS protokolu vasitəsilə şifrələnir.
- Firebase Security Rules vasitəsilə məlumatlara giriş ciddi şəkildə məhdudlaşdırılıb — istifadəçilər yalnız öz məlumatlarını oxuya bilər.
- API açarları server tərəfində yaradılır və yalnız bir dəfə tam şəkildə göstərilir.
- TTS üçün göndərilən mətn serverdə daimi saxlanılmır — audio fayl yaradıldıqdan sonra mətn silinir.
- Server infrastrukturu Render.com platformasında yerləşir və onların təhlükəsizlik standartları tətbiq olunur.
- Məlumatların icazəsiz istifadəsi və ya pozulması halında, biz 72 saat ərzində istifadəçiləri və müvafiq dövlət orqanlarını məlumatlandırmağı öhdəlimizə götürürük.
6. Məlumatların Saxlanma Müddəti
Hesab məlumatları hesab aktiv olduğu müddətdə saxlanılır. Hesab ləğv edildikdə və ya uzunmüddətli hərəkətsizlik (12 ay) səbəbindən silindikdə, əlaqəli bütün məlumatlar 30 gün ərzində silinir. Maliyyə tranzaksiyaları qanuni tələblərə əsasən daha uzun müddət saxlanıla bilər. TTS üçün göndərilən mətnlər heç bir halda daimi olaraq saxlanılmır.
7. İstifadəçi Hüquqları
İstifadəçilər aşağıdakı hüquqlara malikdir:
- Baxış hüququ: Öz şəxsi məlumatlarınızı görüntüləmək üçün API dashboard-ında hesab məlumatlarınızı yoxlaya bilərsiniz.
- Düzəliş hüququ: Hesab məlumatlarınızda dəyişiklik etmək üçün Google hesabınızın parametrlərindən istifadə edə bilərsiniz.
- Silmə hüququ: Hesabınızı və əlaqəli bütün məlumatları silmək üçün bizimlə əlaqə saxlaya bilərsiniz.
- Unutulma hüququ: Hesabınızı silmək və bütün şəxsi məlumatlarınızın sistemimizdən tamamilə silinməsini tələb etmək hüququnuz var.
- Məlumatın çıxarılması: Öz məlumatlarınızın nüsxəsini almaq üçün bizə müraciət edə bilərsiniz.
- Etiraz hüququ: Məlumatlarınızın işlənməsinə etiraz etmək hüququnuz var.
8. Çərəz (Cookies) və İzləmə
Xidmət Firebase Authentication-in işləməsi üçün zəruri olan texniki çərəzlərdən istifadə edir. Biz izləyici çərəzlər (tracking cookies), reklam çərəzləri və ya üçüncü tərəf analitik alətləri (Google Analytics və s.) istifadə etmirik. Firebase-in autentifikasiya sessiyası üçün istifadə etdiyi çərəzlər brauzerinizin bağlanmasından sonra avtomatik olaraq silinir və ya vaxtı keçir.
9. Uşaqların Məxfiliyi
Xidmətimiz 13 yaşından aşağı uşaqlara yönəldilməyib və biz bu yaş qrupundan olan uşaqlardan şüurlu şəkildə şəxsi məlumat toplamırıq. 13 yaşından aşağı uşağın məlumatlarının toplandığını aşkar etsək, həmin məlumatları dərhal siləcəyik. Valideynlər və ya qanuni nümayəndələr bu barədə bizə məlumat verə bilərlər.
10. Beynəlxalq Məlumat Ötürməsi
Xidmət Google Firebase (ABŞ), Paddle (Böyük Britaniya) və Render.com (ABŞ) infrastrukturundan istifadə edir. Bu o deməkdir ki, məlumatlarınız Azərbaycan hüdudlarından kənara ötürülə bilər. Bu ötürmələr müvafiq qanunvericiliyə uyğun olaraq həyata keçirilir və məlumatların qorunması üçün lazımi tədbirlər görülür. Google və Paddle Avropa İttifaqının GDPR standartlarına uyğun olaraq məlumat qoruma tədbirləri həyata keçirirlər.
11. Siyasətin Dəyişdirilməsi
Biz bu Məxfilik Siyasətini vaxtaşırı yeniləyə bilərik. Əhəmiyyətli dəyişikliklər edildikdə, bu səhifədəki «Son yenilənmə tarixi» yenilənəcək və istifadəçilərə e-poçt vasitəsilə bildiriş göndəriləcək. Xidmətdən istifadəyə davam etmək yenilənmiş siyasəti qəbul etmək deməkdir.
12. Əlaqə
Məxfilik siyasəti ilə bağlı suallarınız, şərhləriniz və ya şikayətləriniz varsa, bizimlə əlaqə saxlayın: [email protected]
Haqqımızda
AzerTTS layihəsinin məqsədi və inkişaf yolu
Biz Kimik?
AzerTTS, Azərbaycan dilində rəqəmsal transformasiyanı və əlçatanlığı artırmaq məqsədilə yaradılmış innovativ mətndən-nitqə (Text-to-Speech) platformasıdır. Süni intellekt texnologiyalarından istifadə edərək, mətnlərinizi ən təbii və səlis Azərbaycan dilində səsləndirməyi hədəfləyirik.
Missiyamız
Bizim əsas missiyamız həm fərdi istifadəçilər, həm də bizneslər üçün yüksək keyfiyyətli səs texnologiyalarını əlçatan etməkdir. AzerTTS vasitəsilə görmə məhdudiyyətli şəxslər üçün rəqəmsal xidmətləri asanlaşdırmaq, məzmun yaradıcılarına dəstək olmaq və bizneslərin avtomatlaşdırılmış səs sistemlərini (IVR, elan sistemləri) təkmilləşdirmək mümkündür.
Texnologiyamız
Sistemimiz ən qabaqcıl neyron şəbəkə modellərinə əsaslanır və mətnin kontekstini analiz edərək uyğun intonasiya və vurğu ilə səsləndirməni təmin edir. Yüksək təhlükəsizlik standartları və güclü, asan inteqrasiya olunan API infrastrukturumuz vasitəsilə müxtəlif platformalara fasiləsiz xidmət təqdim edirik. Məhsulumuzu inkişaf etdirərkən performans, əlçatanlıq və istifadə rahatlığını daima ön planda saxlayırıq.
Refund Policy
Ödənişlərin geri qaytarılması qaydaları
Son yenilənmə tarixi: 22 may 2026
1. Geri Qaytarılma Şərtləri
API Enterprise istifadəçiləri üçün balans artırıldıqdan sonra yalnız istifadə olunmamış vəsaitlərin geri qaytarılması mümkündür. Bunun üçün ödəniş tarixindən etibarən 30 gün ərzində müraciət etmək lazımdır. Sistemin fəaliyyətindən istifadə zamanı sərf edilmiş məbləğ geri qaytarılmır.
2. Müraciət Qaydası
Geri qaytarılma tələbi üçün [email protected] ünvanına hesab məlumatlarınızı (e-poçt ünvanı) və ödəniş təsdiqi ilə bağlı qəbzi göndərməyiniz tələb olunur.
3. Emal Müddəti
Geri qaytarılma ilə bağlı müraciətlər komandamız tərəfindən 3-5 iş günü ərzində nəzərdən keçirilir. Təsdiq edildikdən sonra məbləğin ödəniş etdiyiniz bank hesabınıza və ya kartınıza oturması bankınızdan asılı olaraq əlavə 7-14 iş günü çəkə bilər.
Niyə AzerTTS?
Platformamızın üstünlükləri və fərqi
Çünki biz:
- Mətnin nitqə çevrilməsi xidmətini sərfəli qiymətə təqdim edirik
- Çox keyfiyyətli və təmiz Azərbaycan dili səsi yaradırıq
- Çox anlaşıqlı, sadə və sürətliyik
- Etibarlıyıq
- Ucuz, sürətli və rahat API təmin edirik
Nünumələr
Sistem vasitəsilə hazırlanmış audio nümunələri
İçərişəhərin Gizli Zamanı
Abşeronun Gizli Mayakı
Qədim Güzgünün Kölgəsi
Yaddaş Taciri
Tətbiqlər
AzerTTS tətbiqlərini yükləyin və xidmətdən daha sürətli istifadə edin
API Girişi
AzerTTS xidmətlərindən istifadə etmək üçün daxil olun
Billing
Balans artırmaq
Limitlər
Ayda 15,000 simvola qədər.
Limitlər: 100 RPM & 1200 RPD.
Limitlər: 2500 RPM & 250,000 RPD.
Cari istifadə
Yüklənir...
API açarlar
API açarları yüklənir...
API sənədləri
AzerTTS API-dən istifadə nümunələrini araşdırın
C++
#include <curl/curl.h>
#include <fstream>
#include <string>
size_t write_data(void* ptr, size_t size, size_t nmemb, void* stream) {
std::ofstream* out = static_cast<std::ofstream*>(stream);
out->write(static_cast<const char*>(ptr), size * nmemb);
return size * nmemb;
}
int main() {
CURL* curl = curl_easy_init();
if (!curl) {
return 1;
}
std::ofstream out("output.mp3", std::ios::binary);
std::string json = R"({"text":"Salam, mən Azərbaycanda yaşıyıram və Paddle istifadə eliyirəm","voice":"male","apiKey":"YOUR_API_KEY"})";
struct curl_slist* headers = nullptr;
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_URL, "https://azertts.com/api/tts");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_POST, 1L);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json.c_str());
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, json.size());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &out);
CURLcode res = curl_easy_perform(curl);
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
out.close();
return res == CURLE_OK ? 0 : 1;
}
C#
using System.Net.Http;
using System.Text;
using System.Text.Json;
var apiUrl = "https://azertts.com/api/tts";
using var httpClient = new HttpClient();
var payload = new
{
text = "Salam, mən Azərbaycanda yaşıyıram və Paddle istifadə eliyirəm",
voice = "male",
apiKey = "YOUR_API_KEY"
};
var json = JsonSerializer.Serialize(payload);
using var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await httpClient.PostAsync(apiUrl, content);
response.EnsureSuccessStatusCode();
var bytes = await response.Content.ReadAsByteArrayAsync();
await File.WriteAllBytesAsync("output.mp3", bytes);
C
#include <curl/curl.h>
#include <stdio.h>
#include <string.h>
size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream) {
return fwrite(ptr, size, nmemb, (FILE *)stream);
}
int main(void) {
CURL *curl = curl_easy_init();
if (!curl) {
return 1;
}
FILE *fp = fopen("output.mp3", "wb");
const char *json = "{\"text\":\"Salam, mən Azərbaycanda yaşıyıram və Paddle istifadə eliyirəm\",\"voice\":\"male\",\"apiKey\":\"YOUR_API_KEY\"}";
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_URL, "https://azertts.com/api/tts");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_POST, 1L);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json);
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)strlen(json));
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
CURLcode res = curl_easy_perform(curl);
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
fclose(fp);
return res == CURLE_OK ? 0 : 1;
}
PHP
<?php
$apiUrl = 'https://azertts.com/api/tts';
$payload = [
'text' => 'Salam, mən Azərbaycanda yaşıyıram və Paddle istifadə eliyirəm',
'voice' => 'male',
'apiKey' => 'YOUR_API_KEY'
];
$ch = curl_init($apiUrl);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),
CURLOPT_RETURNTRANSFER => true
]);
$response = curl_exec($ch);
if ($response === false) {
throw new Exception(curl_error($ch));
}
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode >= 400) {
throw new Exception($response);
}
file_put_contents('output.mp3', $response);
Kotlin
import java.net.URI
import java.net.http.HttpClient
import java.net.http.HttpRequest
import java.net.http.HttpResponse
import java.nio.file.Files
import java.nio.file.Path
fun main() {
val apiUrl = "https://azertts.com/api/tts"
val json = """{"text":"Salam, mən Azərbaycanda yaşıyıram və Paddle istifadə eliyirəm","voice":"male","apiKey":"YOUR_API_KEY"}"""
val client = HttpClient.newHttpClient()
val request = HttpRequest.newBuilder()
.uri(URI.create(apiUrl))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(json))
.build()
val response = client.send(request, HttpResponse.BodyHandlers.ofByteArray())
if (response.statusCode() >= 400) {
throw RuntimeException(String(response.body()))
}
Files.write(Path.of("output.mp3"), response.body())
}
Java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
public class Main {
public static void main(String[] args) throws Exception {
String apiUrl = "https://azertts.com/api/tts";
String json = """
{"text":"Salam, mən Azərbaycanda yaşıyıram və Paddle istifadə eliyirəm","voice":"male","apiKey":"YOUR_API_KEY"}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(apiUrl))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
HttpResponse<byte[]> response = client.send(request, HttpResponse.BodyHandlers.ofByteArray());
if (response.statusCode() >= 400) {
throw new RuntimeException(new String(response.body(), StandardCharsets.UTF_8));
}
Files.write(Path.of("output.mp3"), response.body());
}
}
TypeScript
import { writeFile } from 'node:fs/promises';
const apiUrl: string = 'https://azertts.com/api/tts';
async function main(): Promise<void> {
const response = await fetch(apiUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
text: 'Salam, mən Azərbaycanda yaşıyıram və Paddle istifadə eliyirəm',
voice: 'male',
apiKey: 'YOUR_API_KEY'
})
});
if (!response.ok) {
throw new Error(await response.text());
}
const buffer = Buffer.from(await response.arrayBuffer());
await writeFile('output.mp3', buffer);
}
main().catch(console.error);
JavaScript
const apiUrl = 'https://azertts.com/api/tts';
async function main() {
const response = await fetch(apiUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
text: 'Salam, mən Azərbaycanda yaşıyıram və Paddle istifadə eliyirəm',
voice: 'male',
apiKey: 'YOUR_API_KEY'
})
});
if (!response.ok) {
throw new Error(await response.text());
}
const blob = await response.blob();
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'output.mp3';
a.click();
URL.revokeObjectURL(url);
}
main().catch(console.error);
JavaScript (node)
const fs = require('fs');
const apiUrl = 'https://azertts.com/api/tts';
(async () => {
const response = await fetch(apiUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
text: 'Salam, mən Azərbaycanda yaşıyıram və Paddle istifadə eliyirəm',
voice: 'male',
apiKey: 'YOUR_API_KEY'
})
});
if (!response.ok) {
throw new Error(await response.text());
}
const buffer = Buffer.from(await response.arrayBuffer());
fs.writeFileSync('output.mp3', buffer);
})();
Shell
API_URL="https://azertts.com/api/tts"
curl -X POST "$API_URL" \
-H "Content-Type: application/json" \
-d '{"text":"Salam, mən Azərbaycanda yaşıyıram və Paddle istifadə eliyirəm","voice":"male","apiKey":"YOUR_API_KEY"}' \
--output output.mp3
Python
import requests
api_url = "https://azertts.com/api/tts"
payload = {
"text": "Salam, mən Azərbaycanda yaşıyıram və Paddle istifadə eliyirəm",
"voice": "male",
"apiKey": "YOUR_API_KEY"
}
response = requests.post(api_url, json=payload, timeout=60)
response.raise_for_status()
with open("output.mp3", "wb") as f:
f.write(response.content)
Powershell
$apiUrl = "https://azertts.com/api/tts"
$body = @{
text = "Salam, mən Azərbaycanda yaşıyıram və Paddle istifadə eliyirəm"
voice = "male"
apiKey = "YOUR_API_KEY"
} | ConvertTo-Json
Invoke-RestMethod `
-Uri $apiUrl `
-Method Post `
-ContentType "application/json" `
-Body $body `
-OutFile "output.mp3"
Swift
import Foundation
let apiUrl = URL(string: "https://azertts.com/api/tts")!
let payload: [String: Any] = [
"text": "Salam, mən Azərbaycanda yaşıyıram və Paddle istifadə eliyirəm",
"voice": "male",
"apiKey": "YOUR_API_KEY"
]
let jsonData = try JSONSerialization.data(withJSONObject: payload)
var request = URLRequest(url: apiUrl)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = jsonData
let semaphore = DispatchSemaphore(value: 0)
URLSession.shared.dataTask(with: request) { data, response, error in
defer { semaphore.signal() }
if let error = error {
print(error)
return
}
guard let httpResponse = response as? HTTPURLResponse else {
return
}
guard (200...299).contains(httpResponse.statusCode) else {
if let data = data {
print(String(data: data, encoding: .utf8) ?? "")
}
return
}
guard let data = data else {
return
}
let outputUrl = URL(fileURLWithPath: "output.mp3")
do {
try data.write(to: outputUrl)
print("Saved to output.mp3")
} catch {
print(error)
}
}.resume()
semaphore.wait()
Golang
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"os"
)
type Payload struct {
Text string `json:"text"`
Voice string `json:"voice"`
ApiKey string `json:"apiKey"`
}
func main() {
apiURL := "https://azertts.com/api/tts"
payload := Payload{
Text: "Salam, mən Azərbaycanda yaşıyıram və Paddle istifadə eliyirəm",
Voice: "male",
ApiKey: "YOUR_API_KEY",
}
jsonData, err := json.Marshal(payload)
if err != nil {
panic(err)
}
req, err := http.NewRequest("POST", apiURL, bytes.NewBuffer(jsonData))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
if resp.StatusCode >= 400 {
body, _ := io.ReadAll(resp.Body)
panic(string(body))
}
file, err := os.Create("output.mp3")
if err != nil {
panic(err)
}
defer file.Close()
_, err = io.Copy(file, resp.Body)
if err != nil {
panic(err)
}
fmt.Println("Saved to output.mp3")
}