Javob formati
GET /v1/jobs/{id}/result JSON qaytaradi. Barcha opsiyalar bilan stereo qo‘ng‘iroq uchun qisqartirilgan misol:
{
"schema_version": "gapi_task_result.v0",
"audio_seconds": 282.7,
"speech_seconds": 230.4,
"channels": 2,
"stereo_parties": true,
"speakers": 2,
"vocabulary_terms": 4,
"vocabulary_dropped": false,
"text": "Assalomu alaykum, Metasell kompaniyasi. …",
"segments": [
{
"index": 0,
"start": 0.42,
"end": 3.9,
"speaker": 1,
"text": "Assalomu alaykum, Metasell kompaniyasi.",
"raw_asr_text": "assalomu alaykum metasell kompaniyasi",
"formatted_text": "Assalomu alaykum, Metasell kompaniyasi.",
"emotion": {"mood": "neutral", "label": "neutral", "confidence": 0.88, "valence": 0.52, "arousal": 0.31, "dominance": 0.47, "windows": 1,
"probabilities": {"neutral": 0.88, "happy": 0.05, "sad": 0.02, "angry": 0.02, "fearful": 0.01, "disgusted": 0.01, "surprised": 0.01}},
"pii": {"entities": [], "redacted_text": "Assalomu alaykum, Metasell kompaniyasi."}
}
],
"speaker_info": [
{
"index": 0,
"speech_seconds": 149.2,
"gender": {"label": "male", "confidence": 0.97},
"role": "client",
"identity": {"status": "new", "voice_id": 100, "speaker_id": "e3db…", "name": null},
"has_voiceprint": true,
"emotion": {"dominant_mood": "negative", "mood_share": {"negative": 0.46, "neutral": 0.41, "positive": 0.13}, "valence": 0.38, "arousal": 0.61, "dominance": 0.44}
}
],
"voices": [
{"label": "SPEAKER_1", "speaker": 0, "voice_id": 100, "name": null, "status": "new"},
{"label": "SPEAKER_2", "speaker": 1, "voice_id": 101, "name": "Azimbek", "status": "matched", "score": 0.97}
],
"options_report": {"requested": ["gender", "speaker_roles", "speaker_identification", "emotion", "pii"], "errors": {}, "seconds": 1.8},
"timing": {"decode_seconds": 0.3, "vad_seconds": 0.4, "stt_seconds": 2.1, "total_seconds": 4.9}
}Matn lotin yozuvida keladi: model o‘zbek tilining lotin yozuvida o‘qitilgan va barcha opsiyalar (tinish belgilari, raqamlar, shaxsiy ma’lumotlar) u bilan ishlaydi. Chiqishda kirill yozuvi yo‘q.
Yuqori daraja
| Maydon | Bu nima |
|---|---|
audio_seconds | Yozuv uzunligi; g dagi yechim shundan hisoblanadi |
speech_seconds | Unda qancha nutq bor |
channels, stereo_parties | Fayldagi kanallar; tomonlar kanallar bo‘yicha ajratilgan bo‘lsa true |
speakers | So‘zlovchilar bo‘yicha ajratish nechta ovoz topdi |
text | Butun matn ketma-ket |
segments | Tartib bo‘yicha replikalar |
speaker_info | Yozuvning har bir so‘zlovchisi bo‘yicha xulosa |
voices | «Ovozdan tanish» da loyiha ovozlarining doimiy raqamlari |
options | Yozuv aslida qaysi sozlamalar bilan hisoblangani: loyiha ustiga so‘rovning settings i. Bu yerda Opsiyalar sahifasidagi barcha kalitlar bor — stereo_channels_as_speakers, max_speakers, call_direction va fuzzy_itn (raqamlarni erkin normallashtirish; sukut bo‘yicha o‘chiq) ham |
vocabulary_terms, vocabulary_dropped | Vazifa lug‘atdan nechta atama olgani; tozalashdan keyin bittasi ham qolmasa, ikkinchisi true |
diarization_error | So‘zlovchilar bo‘yicha ajratish ishlamagan bo‘lsa true: yozuvda so‘zlovchi raqamlari bo‘lmaydi. Ajratish o‘tgan bo‘lsa, maydon bor va null ga teng |
options_report | Qaysi opsiyalar so‘ralgan, qaysilari hisoblanmagan va nima uchun |
segment_voiceprints | Qaysi replikalarda ovoz izi bor: {"dims", "format", "min_seconds", "segments": [indekslar]}. Izlarning o‘zi tashqariga chiqmaydi — bu POST /v1/speakers/{id}/enroll ga segment_indexes bilan berib, ovoz yaratsa bo‘ladigan replikalar ro‘yxati |
timing | Qayta ishlash necha soniya olgan: decode_seconds, vad_seconds, stt_seconds, format_seconds, diarization_seconds, total_seconds. Bular bilan o‘zimizni o‘lchaymiz, sizni emas |
options_report nimalar so‘ralganini (requested), nimalar hisoblanmaganini va nega (errors), hamda opsiyalarga qancha soniya ketganini (seconds) ko‘rsatadi. Rollar so‘ralgan bo‘lsa, o‘sha yerda roles ham bo‘ladi — rollar modelining javobi qanday kelgan bo‘lsa shundayligicha, score, first_speaker, status va direction bilan. Bu diagnostika: undagi sonlar satr bo‘lib keladi, tarkibi o‘zgarishi mumkin. Har bir so‘zlovchining rolini speaker_info[].role dan oling.
Yonida xizmat maydonlari turadi — word_timing, formatting, partial. Ular bizning murojaatlarni tahlil qilish uchun: tarkibi o‘zgarishi mumkin, ustiga mantiq qurmang.
Replika
| Maydon | Bu nima |
|---|---|
index | Tartib raqami, 0 dan |
start, end | Yozuv boshidan soniyalar |
speaker | Yozuv so‘zlovchisining raqami yoki null |
text | Yoqilgan opsiyalar bilan yakuniy matn |
raw_asr_text | Model qanday eshitgan: kichik harflar, belgilarsiz |
formatted_text | Tinish belgilari va bosh harflar bilan |
words | word_timestamps da vaqt bilan so‘zlar; qarang: quyida |
speaker_share | Replika nutqining qancha ulushini ajratishning o‘zi shu so‘zlovchiga bergani, 0 dan 1 gacha; qolgani qo‘shni so‘zlardan o‘tgan. Faqat so‘zlovchilar hisoblangan joyda bo‘ladi |
contextual_text | Lug‘atdan keyingi, tinish belgilari va raqamlardan oldingi matn: raw_asr_text bilan formatted_text orasida |
duration_bucket_seconds | Bizning telemetriyamiz uchun uzunlik savati |
emotion | «Hissiyotlar» da {"mood", "label", "confidence", "probabilities", "valence", "arousal", "dominance", "windows"}; bir soniyadan qisqa replikada {"label": null, "reason": "too_short"}; qarang: Hissiyot shkalalari |
pii | «Shaxsiy ma’lumotlar» da {"entities", "redacted_text"} |
mood qiymatlari: neutral, negative, distressed, positive, surprised. pii belgilari: NAME, PHONE, ADDRESS, DATE, DOCUMENT_ID, CARD_NUMBER.
So‘z
{"text": "Uzum", "raw": "uzim", "formatted": "Uzum", "start": 4.12, "end": 4.51, "speaker": 1, "aligned": "term"}| Maydon | Bu nima |
|---|---|
text | Lug‘atdan keyingi, tinish belgilaridan oldingi so‘z |
raw | Model shu o‘rinda nima eshitgani; qo‘shib qo‘yilgan so‘zda bu maydon yo‘q |
formatted | Replika formatlangach o‘sha so‘z bosh harf va belgilar bilan |
start, end | Yozuv boshidan soniyalar |
speaker | So‘zlovchi raqami, so‘zlovchilar hisoblangan bo‘lsa |
aligned | So‘zning vaqti qayerdan olingani |
aligned ni o‘qish arziydi: exact — modelning aynan shu so‘zdagi kadrlari; term — so‘z lug‘atdan kelgan va atama qidiruvchisining kadrlari bo‘yicha belgilangan, ya’ni bu atama qo‘llangani haqidagi to‘g‘ridan-to‘g‘ri dalil; span — qayta yozilgan bo‘lakdan tegishli ulush; chunk — bu bo‘lakka model yaroqli so‘z bermagan, vaqt butun bo‘lakka umumiy; none — akustik dalilsiz qo‘shilgan, uzunligi nol.
Yozuv so‘zlovchisi
| Maydon | Bu nima |
|---|---|
index | So‘zlovchi raqami, replikalardagi bilan bir xil |
speech_seconds | U qancha gapirgan |
gender | {"label": "female" | "male" | "unknown", "confidence", "reason", "windows", "speech_seconds", "probabilities"}. unknown da confidence null bo‘ladi, reason esa nega ekanini aytadi |
role | "client", "manager" yoki "unknown" |
identity | {"status", "voice_id", "speaker_id", "name", "score", "threshold", "runner_up", "kind"} |
has_voiceprint | So‘zlovchining nutqi ovoz izi uchun yetarli bo‘lgan: uni Ovozlar va so‘zlovchilar orqali nomlash mumkin. Izning o‘zi tashqariga chiqmaydi |
emotion | {"dominant_mood", "mood_share", "valence", "arousal", "dominance"} |
identity.status bitta savolga javob beradi: bu odam tanildimi, tanilmasa nega.
| Status | Nima bo‘ldi | voice_id bormi |
|---|---|---|
matched | Iz loyiha ovozi bilan mos keldi | ha, tanish ovoz raqami |
new | Mos kelmadi, lekin nutq yetdi: ovoz shu yozuv bilan qayd etildi va bundan keyin tanaladi | ha, yangi raqam |
unknown | Mos kelmadi va nutq 10 soniyadan kam — bunday iz bo‘yicha ovoz ochish ishonchsiz | yo‘q |
insufficient_speech | Izni umuman hisoblab bo‘lmadi: nutq deyarli yo‘q | yo‘q |
no_enrolled_voices | Loyihada hali birorta ovoz yo‘q, solishtiradigan narsa yo‘q | yo‘q |
unknown bilan insufficient_speech farqi shundaki, birinchisida iz bor va solishtirish bo‘ldi, odam shunchaki notanish va ro‘yxatga olishga nutq kam; ikkinchisida hisoblaydigan narsaning o‘zi yo‘q edi.
matched va unknown yonida score — eng yaqin ovozga yaqinlik, 0 dan 1 gacha, va threshold — moslik hisoblanadigan chegara turadi. Agar score muntazam chegaradan sal past bo‘lsa, ovozga izlar yetishmayapti: yaxshi yozuvdan yana bittasini qo‘shing.
O‘sha yerda runner_up ham bor — o‘xshashlik bo‘yicha ikkinchi ovozga yaqinlik (solishtiradigan narsa bo‘lmasa -1). Moslik faqat birinchi ikkinchisini zapas bilan ortda qoldirsa hisoblanadi: ikkita o‘xshash ovoz bir-biridan tasodifan yutmasligi kerak. matched va new da yana kind bor — bu loyihada qanday ovoz ekani: candidate, recurring yoki named, qarang: Ovozlar va so‘zlovchilar.
Hissiyot shkalalari
Hissiyot modeli replikani tinglaydi va bir vaqtning o‘zida ikki usulda javob beradi.
Sinf. label bu modelning yetti sinfidan biri: neutral, happy, sad, angry, fearful, disgusted, surprised. probabilities har birining ehtimolini beradi, confidence tanlanganining ehtimoli. Yetti sinfda 0.5 ishonch allaqachon ishonchli javob; 0.35 dan past bo‘lsa sinfni operatorga ko‘rsatmagan ma’qul. mood bu beshta tushunarli holatga yig‘ilgan sinf: angry va disgusted negative ga, sad va fearful distressed ga, happy positive ga.
0 dan 1 gacha uchta shkala. Ular sinfga bog‘liq emas va holatni uzluksiz tasvirlaydi:
| Shkala | 0 | 1 | Qanday o‘qish |
|---|---|---|---|
valence | yoqimsiz | yoqimli | 0.4 dan past bo‘lsa mijoz norozi, 0.6 dan yuqori bo‘lsa mamnun. Suhbatni baholash uchun eng foydali shkala |
arousal | xotirjam | taranglashgan | Past valence bilan yuqori arousal bu asabiylashish yoki bahs, yuqori valence bilan ruhlanish |
dominance | ishonchsiz | dadil | Suhbatni kim boshqaryapti. Yuqori arousal bilan mijozdagi past qiymat ko‘pincha sarosimani bildiradi |
0.5 atrofidagi qiymatlar neytral. Bitta raqamga emas, replikalar bo‘yicha dinamikaga qarang: suhbat davomida mijoz valence ining tushishi uning mutlaq qiymatidan ko‘proq narsani aytadi. windows replika nechta 15 soniyalik oynadan o‘rtachalanganini ko‘rsatadi; qisqa replikalarda u 1 ga teng va baho shovqinliroq.
Bir soniyadan qisqa replika umuman baho olmaydi: raqamlar o‘rniga {"label": null, "reason": "too_short"} keladi — model parchadan taxmin qilmaydi. Bitta so‘zlovchining ketma-ket qisqa replikalari avval bitta oynaga joylashtiriladi, shuning uchun «juda qisqa» ko‘pincha birovning nutqi orasidagi «Ha» kabi yolg‘iz replikaga tushadi.
speaker_info[].emotion da o‘sha uchta shkala so‘zlovchining barcha replikalari bo‘yicha o‘rtachalangan, yonida dominant_mood va mood_share, har bir holatning ulushi. Kabinetda shkalalar chiziqcha ko‘rinishida: replika qatorida qisqa, pleer ostida esa har bir so‘zlovchi uchun karta. Chiziqchaga ko‘rsatkichni olib boring va u qaysi ko‘rsatkich ekanini, uchlari nimani anglatishini va sonning o‘zini aytadi; replika yonida modelning shu emotsiyaga ishonchi ham shu qatorda turadi.
Vazifa tayyor bo‘lmaguncha
GET /v1/jobs/{id}/result faqat tayyor vazifa uchun natija beradi; ketayotganda 409 result_not_ready keladi. Tayyor bo‘lgan replikalar GET /v1/jobs/{id}/events dan olinadi: API ga qarang.