API misollari
Kalitni muhit o'zgaruvchisida saqlang: export SADOLAR_KEY=sk_sadolar_...
Matndan nutq (TTS)
curl -s https://sadolar.uz/v1/tts \
-H "Authorization: Bearer $SADOLAR_KEY" -H "Content-Type: application/json" \
-d '{"text": "Buyurtmangiz 125 000 so'"'"'mga rasmiylashtirildi.", "voice": "malika", "wait": true}'
# javobdagi result.audio_mp3 manzilidan yuklab olish:
curl -s -H "Authorization: Bearer $SADOLAR_KEY" -o ovoz.mp3 https://sadolar.uz/v1/jobs/JOB_ID/audio.mp3
import os, time, requests
BASE = "https://sadolar.uz"
H = {"Authorization": f"Bearer {os.environ['SADOLAR_KEY']}"}
job = requests.post(f"{BASE}/v1/tts", headers=H, json={
"text": "Assalomu alaykum! Bugun 28-oktabr.", "voice": "malika", "speed": 1.0,
}).json()
while job["status"] not in ("done", "error"):
time.sleep(1)
job = requests.get(f"{BASE}/v1/jobs/{job['id']}", headers=H).json()
if job["status"] == "done":
mp3 = requests.get(BASE + job["result"]["audio_mp3"], headers=H).content
open("ovoz.mp3", "wb").write(mp3)
else:
print("Xato:", job["error"])
const BASE = "https://sadolar.uz";
const H = { Authorization: `Bearer ${process.env.SADOLAR_KEY}`, "Content-Type": "application/json" };
let job = await (await fetch(`${BASE}/v1/tts`, { method: "POST", headers: H,
body: JSON.stringify({ text: "Assalomu alaykum!", voice: "malika" }) })).json();
while (!["done", "error"].includes(job.status)) {
await new Promise(r => setTimeout(r, 1000));
job = await (await fetch(`${BASE}/v1/jobs/${job.id}`, { headers: H })).json();
}
const audio = await (await fetch(BASE + job.result.audio_mp3, { headers: H })).arrayBuffer();
// Node.js: require("fs").writeFileSync("ovoz.mp3", Buffer.from(audio));
Nutqdan matn (STT) va subtitr
curl -s https://sadolar.uz/v1/stt -H "Authorization: Bearer $SADOLAR_KEY" \
-F file=@suhbat.mp3 -F subtitles=false
# -> {"id": "stt_...", "status": "queued", ...}
curl -s -H "Authorization: Bearer $SADOLAR_KEY" https://sadolar.uz/v1/jobs/stt_...
curl -s -H "Authorization: Bearer $SADOLAR_KEY" -o sub.srt https://sadolar.uz/v1/jobs/stt_.../transcript.srt
import os, time, requests
BASE = "https://sadolar.uz"
H = {"Authorization": f"Bearer {os.environ['SADOLAR_KEY']}"}
with open("suhbat.mp3", "rb") as f:
job = requests.post(f"{BASE}/v1/stt", headers=H, files={"file": f}).json()
while job["status"] not in ("done", "error"):
time.sleep(2)
job = requests.get(f"{BASE}/v1/jobs/{job['id']}", headers=H).json()
for seg in job["result"]["segments"]:
print(f"[{seg['start']:7.2f}] {seg['text']}")
const fd = new FormData();
fd.append("file", fileInput.files[0]); // brauzerda yoki Node 18+ da Blob
let job = await (await fetch(`${BASE}/v1/stt`, { method: "POST", headers: { Authorization: `Bearer ${KEY}` }, body: fd })).json();
// keyin GET /v1/jobs/{id} bilan kuting; job.result.srt / job.result.vtt havolalari
Boshqa
curl -s -H "Authorization: Bearer $SADOLAR_KEY" https://sadolar.uz/v1/voices # ovozlar
curl -s -H "Authorization: Bearer $SADOLAR_KEY" https://sadolar.uz/v1/me # balans