clarion.uz

API hujjatlari

Clarion API o'zbek nutqini tinish belgilari, so'z vaqt belgilari va tovush hodisalari bilan matnga aylantiradi: fayllar REST orqali, jonli ovoz WebSocket orqali. API OpenAI bilan mos, shuning uchun OpenAI SDK'da faqat base_url o'zgaradi.

Asosiy URLhttps://api.uzasr.uz/v1

Autentifikatsiya

Kalit har bir so'rov sarlavhasida uzatiladi.

uzasr_live_… ko'rinishidagi kalit bir marta ko'rsatiladi. Uni brauzer yoki ilovada emas, serverda saqlang.

HTTP
Authorization: Bearer uzasr_live_…

Tezkor boshlash

Faylni bitta so'rov bilan matnga aylantirish.

import os from openai import OpenAI client = OpenAI(    base_url="https://api.uzasr.uz/v1",    api_key=os.environ["UZASR_API_KEY"],) result = client.audio.transcriptions.create(    model="uzasr-large",    file=open("call.mp3", "rb"),    response_format="verbose_json",    timestamp_granularities=["word"],)print(result.text)

Sinxron transkripsiya

10 daqiqagacha fayllar. Javob o'sha so'rovning o'zida keladi.

POST/v1/audio/transcriptions

ParametrTuriTavsif
filefileAudio yoki video: wav, mp3, m4a, ogg, flac, mp4, webm.
modelstringuzasr-large yoki uzasr-base, yoki aniq versiya.
response_formatstringjson, text yoki verbose_json. Standart: json.
timestamp_granularities[]stringword: so'z vaqt belgilari, faqat verbose_json bilan.
languagestringIxtiyoriy. Faqat uz qo'llab-quvvatlanadi.

Javob formati

So'z vaqt belgilari va tovush hodisalari bilan verbose_json.

ParametrTuriTavsif
textstringTinish belgilari bilan matn, lotin yozuvida.
words[]objectword, start, end: so'z va uning soniyalardagi chegaralari.
segments[]objectChegaralari va matni bilan yozuv parchalari.
events[]objectlabel, start, end, score. Belgilar: laughter, applause, music. Noma'lum belgilarni e'tiborsiz qoldiring.
verbose_json
{  "task": "transcribe",  "language": "uz",  "duration": 28.0,  "text": "Oyoqdagi yechish bilan shunaqa ovoz chiqaradiki, …",  "segments": [    { "id": 0, "start": 0.0, "end": 9.8, "text": "Oyoqdagi yechish bilan …" }  ],  "words": [    { "word": "Oyoqdagi", "start": 0.12, "end": 0.64 }  ],  "events": [    { "label": "laughter", "start": 2.28, "end": 2.52, "score": 0.557 },    { "label": "applause", "start": 19.28, "end": 21.04, "score": 0.659 }  ]}

X-Uzasr-Processing-Seconds sarlavhasida navbat va ishga tushishsiz, GPU'dagi sof qayta ishlash vaqti bor.

Asinxron vazifalar

3 soatgacha fayllar. Vazifa yarating va holatini so'rab turing.

POST/v1/jobs

GET/v1/jobs/{id}

O'sha Idempotency-Key bilan takroriy so'rov dastlabki vazifani qaytaradi. Holatlar: queued, succeeded, failed.

import osimport time import requests API = "https://api.uzasr.uz/v1"headers = {"Authorization": f"Bearer {os.environ['UZASR_API_KEY']}"} job = requests.post(    f"{API}/jobs",    headers={**headers, "Idempotency-Key": "call-2026-10-21-0042"},    files={"file": open("meeting.mp3", "rb")},    data={"model": "uzasr-large"},).json() while job["status"] == "queued":    time.sleep(5)    job = requests.get(f"{API}/jobs/{job['id']}", headers=headers).json() print(job["result"]["text"])

Real vaqt rejimi

WebSocket: kirishda PCM oqimi, chiqishda matn hodisalari.

WS/v1/realtime?model=uzasr-large

HodisaYo'nalishTavsif
ready← serverSessiya ochildi, modelning aniq versiyasi ko'rsatilgan.
partial← serverJoriy ibora. stable maydoni o'zgarmaydi, qolgani aniqlashtirilishi mumkin.
final← serverIbora 0,8 s pauzadan keyin tinish belgilari bilan qayd etildi.
event← serverTovush hodisasi, u tugaganidan 1–1,5 s keyin.
done← serverSessiya yopildi, hisob uchun audio_seconds.
binary→ mijozPCM s16le, 16 kHz, mono. Tavsiya etilgan kadr hajmi 100 ms.
stop→ mijoz{"type":"stop"}: oxirgi iborani qayd etish va sessiyani yopish.
WebSocket
← serverdan→ mijozdan
wss://api.uzasr.uz/v1/realtime?model=uzasr-large ← { "type": "ready" }→ <binary PCM s16le 16 kHz, 100 ms>← { "type": "partial", "utterance": 0, "start": 0.0,    "text": "Assalomu alaykum qanday", "stable": "Assalomu alaykum" }← { "type": "final", "utterance": 0, "start": 0.0, "end": 2.4,    "text": "Assalomu alaykum, qanday yordam bera olaman?" }→ { "type": "stop" }← { "type": "done", "audio_seconds": 2.9 }

Brauzer WebSocket'da sarlavhalarni uzatmaydi: o'z serveringizdan ulaning va oqimni proksi qiling.

Modellar

Taxallus doim joriy versiyaga ishora qiladi.

GET/v1/models

ModelParametrlarWERQachon tanlash kerak
uzasr-large600M8,1%Standart tanlov, maksimal aniqlik
uzasr-base220M9,4%Katta hajmlar, arzonroq narx

Xatolar

OpenAI bilan mos yagona format.

HTTPcodeNima bo'ldi
400unsupported_parameterNoma'lum forma parametri.
400unsupported_languagelanguage parametri uz emas.
400audio_unreadableAudioni dekodlab bo'lmadi.
400audio_too_longYozuv endpoint limitidan uzun. /v1/jobs endpointidan foydalaning.
401invalid_api_keyKalit uzatilmagan, noto'g'ri yoki bekor qilingan.
404model_not_foundBunday model yo'q. Ro'yxat: GET /v1/models.
413file_too_largeFayl limitdan katta.
429concurrency_limit_exceededParallel so'rovlar soni oshib ketdi. Retry-After sarlavhasiga qarang.
503model_unavailableModel ishga tushmoqda yoki texnik xizmatda. Bir daqiqadan keyin qayta urinib ko'ring.
504timeoutTanib olish belgilangan vaqtga sig'madi. Uzun fayllar uchun /v1/jobs endpointidan foydalaning.
JSON
{  "error": {    "type": "invalid_request_error",    "code": "unsupported_language",    "message": "Only 'uz' is supported"  }}

Limitlar

Standart qiymatlar. Korporativ mijozlar uchun sozlanadi.

CheklovQiymat
Sinxron so'rov10 daqiqagacha audio
Asinxron vazifa3 soatgacha audio
Bitta kalitga parallel so'rovlar8
Real vaqt sessiyasi5 daqiqagacha
Vazifa natijasini saqlash7 kun