Qwen LiveTranslate API چلائیں، پہلے Urdu کی output سطح درست چنیں

|مصنف: QUASA ادارتی ٹیم|5 منٹ مطالعہ| 4
Qwen LiveTranslate API چلائیں، پہلے Urdu کی output سطح درست چنیں

Qwen LiveTranslate API کی کم سے کم قابلِ نقل ترتیب یہ ہے: Bearer API key کے ساتھ WebSocket کھولیں، session.created کے بعد session.update بھیجیں، اس میں ہدفی زبان اور output_modalities مقرر کریں، پھر Base64 audio کو input_audio_buffer.append events میں روانہ کریں۔ اختتام پر session.finish بھیجیں اور session.finished ملنے سے پہلے connection بند نہ کریں۔

پاکستانی Urdu-English meeting میں پہلے یہ چنیں کہ نتیجہ صرف متن ہوگا یا متن کے ساتھ آواز بھی۔ Captions، searchable notes، subtitles اور support logs کے لیے ["text"] کافی ہے؛ live interpretation کے لیے ["text","audio"] درکار ہے، جس میں متنی translation کے ساتھ Base64 audio chunks کی decoding، queue اور playback بھی سنبھالنا پڑتا ہے۔

Output modality پہلے کیوں طے کرنی ہے

Text-only راستہ ابتدائی integration کے لیے نسبتاً محدود اور قابلِ مشاہدہ ہے: translated text محفوظ کیا جا سکتا ہے اور source transcript سے language detection الگ جانچی جا سکتی ہے۔ Audio تب شامل کریں جب استعمال کا اصل تقاضا سنائی دینے والا ترجمہ ہو، کیونکہ اسے منتخب کرتے ہی response handler اور failure surface دونوں بڑھ جاتے ہیں۔

QwenCloud کی LiveTranslate رہنمائی میں Urdu کا code ur دیا گیا ہے اور اسے text کے ساتھ audio output ملنے والی زبانوں میں شامل کیا گیا ہے۔ اسی رہنمائی کے مطابق Qwen3.8 کے text-only mode میں response.text.delta، جبکہ text-plus-audio mode میں response.audio_transcript.delta اور response.audio.delta آتے ہیں؛ آخری event کا delta Base64 سے decode کرکے playback queue میں دینا ہوگا۔

WebSocket سے session.updated تک ترتیب قائم رکھیں

Endpoint wss://maas.qwencloudapi.com/api-ws/v1/realtime ہے اور model query parameter کے ذریعے منتخب ہوتا ہے، اس لیے مکمل URL میں ?model=qwen3.8-livetranslate-flash-realtime شامل کریں۔ Authentication header کی صورت Authorization: Bearer $DASHSCOPE_API_KEY ہے اور client-server messages JSON text frames ہوتے ہیں؛ API key کو browser bundle یا source repository میں رکھنے کے بجائے server-side environment سے پڑھیں۔

QwenCloud کی client-event reference Qwen3.8 کے لیے output_modalities میں صرف ["text"] یا ["text","audio"] قبول کرتی ہے؛ Qwen3.5 کے نمونوں میں استعمال ہونے والا modalities الگ field ہے۔ Urdu سے English، text-only session میں session.output_modalities کو ["text"] اور session.translation.language کو "en" رکھیں۔

  1. WebSocket کھولیں اور transport error کو protocol error سے الگ log کریں۔
  2. session.created ملنے کے بعد session.update روانہ کریں۔
  3. session.updated میں واپس آنے والی configuration محفوظ کریں؛ اس سے پہلے microphone audio نہ بھیجیں۔
  4. ہر audio chunk کو Base64 بنا کر input_audio_buffer.append میں بھیجیں۔
  5. Source transcript، translated text اور translated audio کو event type اور response ID کے لحاظ سے الگ جمع کریں۔
  6. آخری audio کے بعد session.finish بھیجیں اور session.finished پر socket بند کریں۔

Urdu detection کو controlled sample سے آزمائیں

Qwen3.8 variant میں ASR فعال رہتا ہے اور source language نہ دی جائے تو model اسے خود پہچان سکتا ہے۔ پہلے test میں session.input_audio_transcription.language چھوڑ دیں، مگر target language کو en پر صریح رکھیں؛ پھر صاف Urdu اور قدرتی Urdu-English code-switching کو الگ turns میں بھیجیں۔ شرطیہ inputs مثلاً “اگلی meeting پیر کو تین بجے ہے” اور “client نے invoice approve کر دی ہے” دونوں حالات کو الگ دکھا سکتے ہیں۔

صرف English translation دیکھ کر detection کو کامیاب نہ مانیں۔ conversation.item.input_audio_transcription.delta سے عبوری source transcript جمع کریں اور conversation.item.input_audio_transcription.completed میں ملنے والے مکمل transcript کو test input سے ملائیں۔ اگر خودکار detection Urdu الفاظ مسلسل غلط پہچانے تو اگلا controlled run source language کو ur دے کر کریں؛ اس تقابل سے network، source recognition اور translation کی خرابیاں ایک ہی مبہم error میں نہیں ملتیں۔

Text، audio اور failure events الگ رکھیں

Text-only mode میں response.text.delta کا ہر delta متعلقہ response ID کے buffer میں شامل کریں اور response.done پر response مکمل مانیں۔ Audio mode میں readable translation کے لیے response.audio_transcript.delta جمع کریں، جبکہ response.audio.delta کے bytes decode کرکے arrival order میں playback queue کو دیں۔

ہر log entry میں event type، event ID، item یا response ID، وصولی کا وقت اور دستیاب error code رکھنا debugging کے لیے کافی بنیاد دیتا ہے۔ خام customer audio اور مکمل transcripts کو عمومی application logs میں محفوظ نہ کریں؛ conversation.item.input_audio_transcription.failed کو transcription failure، عمومی error کو configuration یا protocol failure، اور غیر متوقع socket closure کو transport failure کے طور پر الگ شمار کریں۔

response.done اور session.finished ایک چیز نہیں ہیں۔ پہلا ایک translation response کے اختتام کو ظاہر کرتا ہے، جبکہ دوسرا پوری session کے server-side اختتام کی تصدیق ہے؛ اس فرق کو state machine میں واضح رکھنے سے client کسی ایک مکمل response کے بعد پوری connection قبل از وقت بند نہیں کرے گا۔

session.finish کے بغیر آخری حصہ ضائع ہو سکتا ہے

آخری audio chunk کے فوراً بعد socket بند کرنا protocol کی اہم خرابی ہے۔ Client کو session.finish بھیج کر باقی recognition مکمل ہونے دینا چاہیے اور session.finished کے بعد disconnect کرنا چاہیے؛ سرکاری رہنمائی خبردار کرتی ہے کہ اس ترتیب کے بغیر آخری speech segment کا نتیجہ ضائع اور connection معلق ہو سکتا ہے۔

کامیاب integration کی شرط صرف translated text نہیں بلکہ مکمل event sequence ہونی چاہیے: session.created → session.updated → transcript اور response events → response.done → session.finished۔ Timeout ضرور رکھیں، مگر timeout آنے پر اسے کامیاب cleanup نہ لکھیں؛ آخری دیکھی گئی event type اور pending response IDs محفوظ کریں۔

Qwen3.8-LiveTranslate کے سرکاری تحقیقی اعلان میں vendor نے average lagging یا LAAL کو 2.3 سیکنڈ بتایا اور multi-speaker interpretation کو model کی نمایاں صلاحیتوں میں رکھا ہے۔ یہ Qwen کی measurement ہے، پاکستانی mobile network، audio capture، playback buffering یا آپ کی application SLA کی ضمانت نہیں؛ production telemetry میں connect، پہلے transcript، پہلی translation، پہلے audio chunk اور response completion کے اوقات الگ ناپیں۔

یہ بھی پڑھیں:

شیئر کریں:

ہمارا نیوز لیٹر سبسکرائب کریں

ویب 3، AI اور کرپٹو کی تازہ خبریں براہ راست اپنے اِن باکس میں پائیں۔

0