لیبل والے ٹرانسکرپٹ کے لیے دونوں جواب درست ہونے چاہئیں، اور چونکہ لیبل الفاظ کے اوپر ہوتے ہیں، اس لیے غلط لیبل کو متن چھیڑے بغیر درست کیا جا سکتا ہے۔
میٹنگ کے ٹرانسکرپٹ میں دو سوالوں کا جواب ایک ساتھ ہوتا ہے: کیا کہا گیا، اور کس نے کہا۔ قاری کو ایک ہی کام دکھائی دیتا ہے، یعنی ہر لائن کے ساتھ ایک نام۔ اس کے نیچے دو الگ مسئلے ہیں، جن کے اپنے ان پٹ ہیں اور ناکامی کے اپنے طریقے۔
اسپیچ ریکگنیشن الفاظ کو سنتی ہے۔ یہ آڈیو کو متن میں بدلتی ہے اور، اچھی طرح کام کرنے پر، ہر لفظ کا آغاز اور اختتام کا وقت بھی دیتی ہے۔ اسے اس سے سروکار نہیں کہ آواز جملے کے درمیان بدل گئی یا نہیں؛ اس کا کام جملے کو درست لکھنا ہے۔
اسپیکر ڈائرائزیشن آوازوں کو سنتی ہے۔ اسے الفاظ کی سمجھ نہیں ہوتی۔ اس کا کام ٹائم لائن کو موڑوں میں تقسیم کرنا اور یہ بتانا ہے کہ کون سے موڑ ایک ہی شخص کے ہیں: Speaker 1، Speaker 2۔ یہ لفظ “diary” سے مستعار ہے، اور آؤٹ پٹ کی یہ تصویر درست ہے: یہ ایک لاگ ہے کہ بات کرنے کی باری کس کے پاس تھی، اور کب۔
اس کے ساتھ تین ملتی جلتی اصطلاحات اکثر خلط ملط ہو جاتی ہیں۔ ڈائرائزیشن بتاتی ہے کہ کون کب بولا، بغیر یہ جانے کہ وہ کون ہے۔ اسپیکر آئیڈینٹیفیکیشن محفوظ شدہ آوازوں کے سیٹ میں سے چن کر بتاتی ہے کہ آواز کا کوئی حصہ کس معلوم شخص کا ہے۔ اسپیکر ویری فکیشن ایک ہاں یا نہ کا سوال حل کرتی ہے: کیا یہ آواز واقعی شخص X کی ہے؟ وینڈرز کے دعوے ان تینوں کو الگ رکھ کر آسانی سے سمجھ آتے ہیں، کیونکہ “اسپیکر لیبلز” کا مطلب موڑ کی حدوں کا موٹا اندازہ بھی ہو سکتا ہے، اور ایسے نام بھی جو ایک ریکارڈنگ سے دوسری تک ایک شخص کے ساتھ چلیں۔ یہ دیکھنے کے لیے کہ یہ لیبل کیا وعدہ کر سکتے ہیں اور کیا نہیں، ڈائرائزر کے اندر جھانکنا ہوگا۔
زیادہ تر ڈائرائزیشن سسٹم تین مراحل میں کام کرتے ہیں، اور ان میں سے کوئی زبان پر مبنی نہیں۔
ہر مرحلہ اپنے طور پر غلط ہو سکتا ہے۔ کوئی دھیمی آواز چھوٹ جاتی ہے۔ دو ملتی جلتی آوازیں ایک بن جاتی ہیں۔ ایک شخص جو پرسکون سے جذباتی ہو جائے، دو حصوں میں بٹ جاتا ہے۔
فیلڈ یہ سب ڈائرائزیشن ایرر ریٹ (DER) سے ناپتی ہے: بولنے کے کُل وقت میں سے وہ حصہ جو چھوٹ گیا، یا جسے غلطی سے تقریر سمجھ لیا گیا، یا جو غلط اسپیکر کو دیا گیا۔ عموماً ہر حد کے گرد تقریباً ایک چوتھائی سیکنڈ کا forgiveness collar شامل ہوتا ہے۔ یہ collar اس لیے ہے کہ کوئی بھی، انسان ہو یا مشین، اسپیکر کی تبدیلی کو ملی سیکنڈ تک درست جگہ پر نہیں رکھ سکتا۔ یہ رواداری ڈائرائزر کو الگ سے جانچنے کے لیے ٹھیک ہے۔ مگر ٹرانسکرپٹ کے لیے نہیں، جہاں ایک چوتھائی سیکنڈ کی غلط حد کسی لفظ پر جا پڑتی ہے۔
یہی وہ جگہ ہے جہاں دونوں مسائل ملتے ہیں، اور یہیں لیبل والے ٹرانسکرپٹ کا معیار طے ہوتا ہے۔ ڈائرائزر اپنی حدیں کچھ غیر یقینی کے ساتھ رکھتا ہے، اکثر ایک سیکنڈ کے کسر کے برابر ادھر یا ادھر۔ ریکگنائزر الفاظ کو اسی ٹائم لائن پر رکھتا ہے۔ اگر دونوں کو بغیر سوچے ایک دوسرے پر رکھ دیا جائے تو کوئی حد کسی لفظ کے بیچ میں پڑ جاتی ہے، اور “tomorrow” کا آدھا حصہ Speaker 1 کا ہو جاتا ہے اور باقی آدھا Speaker 2 کا۔
لیبل درست ہونے سے پہلے کچھ دیر غلط بھی ہو سکتے ہیں۔ ڈائرائزر کو جتنا زیادہ آڈیو سننے کو ملتا ہے، وہ اپنے گروہوں کے بارے میں اتنا ہی یقین حاصل کرتا ہے، اس لیے ابتدائی لیبل بعد میں آنے والی معلومات کے لحاظ سے غلط دکھائی دے سکتا ہے۔ لائیو ٹرانسکرپٹ میں لیبل کو لائن دکھائے جانے کے بعد بھی بدلا جا سکتا ہے: VocalStack کا realtime API ایک transcript.amended فریم بھیجتا ہے جو کسی طے شدہ لائن کا متن یا اسپیکر جگہ پر درست کر دیتا ہے، تاکہ قاری تضاد نہیں بلکہ ترمیم دیکھے۔
حتیٰ کہ کامل جگہ پر رکھا گیا، کامل طور پر مستحکم لیبل بھی محض ایک نمبر ہے۔ ایک نمبر گفتگو کو فالو کرنے کے لیے کافی ہے؛ مگر لوگ نام پڑھنا چاہتے ہیں۔
لیبل نام میں دو طریقوں سے بدلتا ہے، اور دونوں ایک دوسرے پر کھڑے ہیں۔
پہلا طریقہ ایک ریکارڈنگ کے اندر نام دینا ہے۔ ٹرانسکرپشن جو بھی اسپیکر ڈھونڈتی ہے اسے ایک انڈیکس ملتا ہے، جو 0 سے گنا جاتا ہے۔ رسائی رکھنے والا کوئی بھی شخص ریکارڈنگ کے دوران یا بعد میں ہر اسپیکر کو نام دے سکتا ہے۔ یہ نام الفاظ پر ایک تہہ ہے، اس لیے متن کو چھیڑے بغیر اسے مقرر، تبدیل یا صاف کیا جا سکتا ہے۔ API پر یہ PUT /v1/recordings/{id}/speakers/{idx} کے ساتھ name سے ہوتا ہے؛ خالی نام اسے صاف کر دیتا ہے۔ جس لائن کا speaker -1 ہو اس کا کوئی لیبل نہیں ہوتا، یا تو لیبلز بند تھے یا، لائیو ڈرافٹ میں، لائن ابھی کسی اسپیکر سے منسوب نہیں ہوئی۔
دوسرا طریقہ ریکارڈنگز کے پار شناخت ہے، یعنی پہلے سیکشن کا شناخت کا مسئلہ۔ ڈائرائزر صرف یہ بتا سکتا ہے کہ دو آوازیں مختلف ہیں، یہ کبھی نہیں بتا سکتا کہ وہ کون ہیں۔ “مختلف” سے “یہ Ana ہے” تک جانے کے لیے سسٹم کو ایک حوالہ چاہیے: ایک محفوظ شدہ آواز، جو اسی ایک شخص کی ریکارڈنگ سے لی گئی ہو۔ کم از کم تیس سیکنڈ کی صاف تقریر درکار ہے، اور چند منٹ بہتر ہیں۔ نمونہ اس طرح کا ہونا چاہیے جیسی ریکارڈنگز سے اس کا موازنہ ہونا ہے: وہی شخص لیپ ٹاپ کے مائیکروفون اور اسٹیج کے مائیکروفون پر مشین کو ایک دوسرے سے کم ملتا جلتا لگ سکتا ہے، بہ نسبت دو اجنبیوں کے جو ایک ہی طرح ریکارڈ ہوئے ہوں۔ ایک بار آواز محفوظ ہو جائے تو ہر اسپیکر جو ٹرانسکرپشن سنتی ہے اس سے موازنہ کیا جاتا ہے، اور میچ ہونے پر نام ٹرانسکرپٹ میں آ جاتا ہے۔ VocalStack میں یہ Voices کے تحت رہتا ہے؛ فائل ٹرانسکرپشنز اور ڈیش بورڈ کے لائیو سیشنز آپ کی محفوظ آوازوں کو خودکار طور پر پہچانتے ہیں، جبکہ realtime API سیشن صرف انہی آوازوں کو پہچانتا ہے جو آپ identifyVoices میں درج کریں۔
محفوظ شدہ آواز بائیومیٹرک ڈیٹا ہے: یہ کسی بھی ریکارڈنگ میں ایک شخص کو پہچان سکتی ہے، اور VocalStack میں یہ ایک کلون کا کام بھی دیتی ہے جو ان کے بولے ہوئے جملے بلند آواز میں پڑھ سکتی ہے۔ آواز محفوظ کرنے سے پہلے ڈیش بورڈ آپ سے تصدیق مانگتا ہے کہ آپ کے پاس اس شخص کی اجازت ہے، اور کوئی بھی آواز کسی بھی وقت حذف کی جا سکتی ہے۔
یہ سب اس فرض پر ہے کہ آپ کو لیبلز چاہئیں بھی۔ اکثر آپ کو نہیں چاہئیں ہوتے۔
ایک شخص جو لیکچر پڑھ رہا ہو، اسے ہر لائن کے سامنے “Speaker 1” کی ضرورت نہیں۔ سامعین پہلے ہی جانتے ہیں کہ مائیکروفون کس کے پاس ہے۔ اس لیے speaker-labels کی ترتیب کی تین پوزیشنیں ہیں، اور یہ realtime سیشن، براڈکاسٹ، ٹرانسکرپشن اور ریکارڈنگ پر ایک جیسی ہیں:
auto)۔ لائنوں پر ان کے اسپیکر کا لیبل تب لگتا ہے جب ایک سے زیادہ آوازیں سنائی دیں؛ ایک اسپیکر والی ریکارڈنگ سادہ متن رہتی ہے، اور دیر سے شامل ہونے والی دوسری آواز پھر بھی پکڑی جاتی ہے۔ ڈیش بورڈ کا نیا لائیو ٹرانسکرپشن فارم اسی پوزیشن سے شروع ہوتا ہے۔فائل اپ لوڈ وہی speakerLabels آپشن لیتا ہے، اور realtime API آپ کو سٹریم کے دوران اسے تبدیل کرنے دیتا ہے؛ تفصیلات API ریفرنس میں ہیں۔ اسپیکر کی علیحدگی اور نام دینے سے بل کبھی نہیں بڑھتا (قیمتوں کا صفحہ میں ریٹ کارڈ ہے)، اس لیے انتخاب اس کا ہے کہ قاری کیا دیکھے، نہ کہ اس کی لاگت کیا ہے۔
آن ہونے پر بھی ڈائرائزیشن اچھی ہے مگر جادو نہیں۔ دو صورتیں اب بھی اس پر بھاری پڑتی ہیں۔
پہلی صورت اوورلیپ ہے۔ جب دو لوگ ایک ساتھ بولیں، تو آڈیو کے ایک حصے میں دو آوازیں ہوتی ہیں۔ تحقیق اور اب پروڈکٹس میں بھی ایسے ڈائرائزرز موجود ہیں جو اوورلیپ سمجھتے ہیں: مثال کے طور پر end-to-end neural diarization (EEND) “کون بول رہا ہے” کو ایک ہی جواب کے بجائے بیک وقت ہاں یا نہ کے سوالوں کا مجموعہ سمجھتا ہے۔ تاہم زیادہ تر پروڈکشن سسٹم اب بھی ہر حصے کو ایک اسپیکر دیتے ہیں، اور ان کے اوپر کا ریکگنائزر ایک وقت میں ایک آواز کو ٹرانسکرائب کرتا ہے۔ گرما گرم پینل میں کراس ٹاک فیلڈ کا سب سے مشکل آڈیو ہے، اور وہاں ہر وینڈر کے لیبل بدتر ہو جاتے ہیں۔ یہ وہی حصہ بھی ہے جسے بعد میں سب سے زیادہ حوالہ دیا جاتا ہے۔
دوسری صورت بہت ملتی جلتی آوازیں ہیں۔ بہن بھائیوں کی آوازوں کے embeddings اتنے قریب ہو سکتے ہیں کہ انہیں قابلِ اعتماد طور پر الگ نہ کیا جا سکے، خاص کر جب وہ ایک گھنٹے تک چھوٹے چھوٹے موڑ بدلتے رہیں۔ ٹیلی فون کی آڈیو سب کے لیے اسے مزید مشکل بناتی ہے: نیرو بینڈ لائن 8 kHz پر سیمپل ہوتی ہے اور تقریباً 3.4 kHz سے اوپر کچھ نہیں لے جاتی، حالانکہ ایک آواز کو دوسری سے ممتاز کرنے والی بہت سی چیزیں اس حد سے اوپر ہوتی ہیں۔ ایک ہی فون لائن پر دو لوگ ڈائرائزر کو آپ کے مقابلے میں زیادہ ایک جیسے لگتے ہیں۔
دونوں کا سب سے عملی حل کسی بھی ماڈل سے پہلے کے مرحلے میں ہے: ہر شخص کو اپنا مائیکروفون دیں۔ ہر اسپیکر کے لیے ایک چینل ہو تو ڈائرائزیشن محض یہ پوچھنا رہ جاتی ہے کہ کون سا چینل بلند ہے، اوورلیپ ایک گدلے ٹریک کے بجائے دو صاف ٹریک بن جاتا ہے، اور embeddings سے کبھی مشکل کام کرنے کو نہیں کہا جاتا۔ ایک ہی میز کا مائیکروفون سستا ہے اور تقریباً ہمیشہ وہی ہوتا ہے جو آپ کے پاس ہے، اسی لیے باقی مضمون موجود ہے۔
ان میں سے کوئی حد قاری تک بغیر تبدیلی کے نہیں پہنچنی چاہیے۔ چونکہ لیبلز الفاظ پر ایک تہہ ہیں، غلط لیبل کبھی متن کا نقصان نہیں کرتا: کسی بھی وقت ریکارڈنگ پر اسپیکر کے نام مقرر یا صاف کیے جا سکتے ہیں، اور لائیو ٹرانسکرپشن میں میزبان چلتے ہوئے کسی بھی لفظ یا لائن کو دوبارہ لکھ سکتا ہے، ہر تصحیح نشان زد اور واپس لینے کے قابل ہوتی ہے۔
الفاظ کی طرف کے لیے، ورڈ ایرر ریٹ کیا ناپتا ہے اور کیا چھوڑ دیتا ہے میں تصحیح کی تہوں کی تفصیل ہے؛ WER ریکگنائزر کے لیے وہی ہے جو DER ڈائرائزر کے لیے ہے، اور ایک ٹرانسکرپٹ کو دونوں کا کم ہونا درکار ہے۔