स्पीकर डायराइज़ेशन क्या है? यह कैसे काम करता है और इसके उपयोग
- लेखक
- Jack Limebear
- प्रकाशित
सुनेंइस आर्टिकल को सुनें
स्पीकर डायराइज़ेशन अज्ञात संख्या में वक्ताओं वाली ऑडियो स्ट्रीम लेता है और लेबल किए गए सेगमेंट की टाइमलाइन बनाता है: 0:00 से 0:42 तक स्पीकर A, 0:42 से 1:15 तक स्पीकर B, और 1:15 के बाद फिर स्पीकर A। सिस्टम यह नहीं जानता कि वक्ता कौन हैं, लेकिन यह जानता है कि वे अलग-अलग लोग हैं और पूरी रिकॉर्डिंग में उनके लेबल एक जैसे रखता है।
यही प्रक्रिया कई वक्ताओं वाले ऑडियो को उपयोगी बनाती है। मीटिंग नोट्स, कॉल सेंटर एनालिटिक्स, इंटरव्यू ट्रांसक्रिप्शन, पॉडकास्ट एडिटिंग और कानूनी रिकॉर्ड—इन सभी में सिर्फ़ क्या कहा गया, यह नहीं बल्कि किसने कहा, यह जानना भी ज़रूरी है।
इस गाइड में बताया गया है कि डायराइज़ेशन कैसे काम करता है, यह सेगमेंटेशन और आइडेंटिफ़िकेशन जैसी संबंधित तकनीकों से कैसे अलग है, कौन से ओपन सोर्स टूल इसे संभालते हैं और किसी डायराइज़ेशन सिस्टम की परफ़ॉर्मेंस कैसे मापें।
संक्षेप में
- स्पीकर डायराइज़ेशन ऑडियो रिकॉर्डिंग को बोलने वाले व्यक्ति के आधार पर सेगमेंट करता है और बिना नाम से किसी की पहचान किए, लेबल किए गए स्पीकर टर्न बनाता है।
- स्पीकर डायराइज़ेशन, स्पीकर सेगमेंटेशन से अलग है, जो वक्ता बदलने का समय पता करता है, और स्पीकर आइडेंटिफ़िकेशन से भी, जो वॉइस को असली नामों से मिलाता है।
- डायराइज़ेशन की परफ़ॉर्मेंस को समग्र सटीकता के लिए diarization error rate (DER) और हर स्पीकर के लिए सटीकता बनी रहती है या नहीं, यह जांचने के लिए Jaccard error rate (JER) से मापा जाता है।
स्पीकर डायराइज़ेशन क्या है और यह कैसे काम करता है?
स्पीकर डायराइज़ेशन, ऑडियो स्ट्रीम को बोलने वाले व्यक्ति के अनुसार सेगमेंट में बांटने की प्रक्रिया है। स्पीकर डायराइज़ेशन वाला ट्रांसक्रिप्ट हर ऑडियो सेगमेंट को एक स्पीकर पहचान के साथ लेबल करता है। आसान शब्दों में, यह सवाल का जवाब देता है: "किसने कब बोला?"
मीटिंग का रॉ ट्रांसक्रिप्ट आपको शब्द देता है, जबकि डायराइज़ किया गया ट्रांसक्रिप्ट बताता है कि स्पीकर 1 ने सवाल पूछा, स्पीकर 2 ने उसका जवाब दिया और स्पीकर 3 ने बीच में टोक दिया।
ज़्यादातर स्पीकर डायराइज़ेशन सिस्टम चार चरणों वाली पाइपलाइन अपनाते हैं:

आइए इन चरणों को विस्तार से समझें।
वॉइस एक्टिविटी डिटेक्शन (VAD)
वॉइस एक्टिविटी डिटेक्शन बोलने को बाकी सभी चीज़ों से अलग करता है: खामोशी, बैकग्राउंड नॉइज़, संगीत, या कीबोर्ड क्लिक। सिर्फ़ असली बोली वाले ऑडियो सेगमेंट ही अगले चरण में जाते हैं।
इस चरण में हुई कोई भी गलती बाद के सभी चरणों में फैल जाती है।
सेगमेंटेशन
फिर इन बोलने वाले सेगमेंट को उन बिंदुओं पर बांटा जाता है जहां स्पीकर बदलने की संभावना होती है, जैसे आवाज़ के लहजे में बदलाव, टर्न के बीच का विराम या पिच पैटर्न में बदलाव। ज़्यादातर सिस्टम संभावित सीमा के दोनों ओर की ध्वनिक विशेषताओं की तुलना करके इन बदलाव बिंदुओं का पता लगाते हैं।
कुछ सेगमेंटेशन टूल ऑडियो को छोटे, एकसमान विंडो में काटते हैं, जैसे दो सेकंड के हिस्से, और फिर एक ही स्पीकर वाली आस-पास की विंडो को मिलाने के लिए क्लस्टरिंग चरण पर निर्भर रहते हैं।
एम्बेडिंग एक्सट्रैक्शन
हर स्पीच सेगमेंट को स्पीकर एम्बेडिंग या संख्यात्मक वेक्टर में बदला जाता है, जो उस सेगमेंट में बोलने वाले व्यक्ति की आवाज़ की विशेषताओं को कैप्चर करता है। एक ही स्पीकर की एम्बेडिंग वेक्टर स्पेस में पास-पास क्लस्टर होती हैं, जबकि अलग-अलग वक्ताओं की एम्बेडिंग दूर होती हैं।
क्लस्टरिंग
फिर एम्बेडिंग को इस तरह ग्रुप किया जाता है कि एक ही स्पीकर के सेगमेंट का एक ही लेबल हो। सिस्टम को आमतौर पर पहले से वक्ताओं की संख्या नहीं पता होती, इसलिए क्लस्टरिंग एल्गोरिदम को इसका अनुमान लगाना होता है कि थोड़ा अलग सुनाई देने वाला सेगमेंट नए स्पीकर का है या अलग लहजे में बोल रहे उसी व्यक्ति का।

आउटपुट में टाइम रेंज के साथ जुड़े स्पीकर लेबल होते हैं, जिन्हें आमतौर पर ट्रांसक्रिप्ट के साथ दिया जाता है। उदाहरण के लिए, दो लोगों की कॉल का डायराइज़ किया गया ट्रांसक्रिप्ट ऐसा दिखता है:
- [speaker_0] कॉल करने के लिए धन्यवाद। मैं आपकी कैसे मदद कर सकता हूं?
- [speaker_1] नमस्ते, मैं पिछले महीने के अपने इनवॉइस के बारे में कॉल कर रहा हूं।
- [speaker_0] ज़रूर, मैं इसे खोलता हूं।
लेबल अनाम होते हैं और अंदरूनी तौर पर एक जैसे रहते हैं। Speaker_0 हर बार दिखने पर वही आवाज़ होता है, लेकिन सिस्टम यह नहीं जानता कि speaker_0 का नाम Fergal है। असली पहचान जोड़ना अलग काम है, जिस पर हम नीचे चर्चा करते हैं।
स्पीकर सेगमेंटेशन और स्पीकर आइडेंटिफ़िकेशन के बीच मुख्य अंतर
स्पीकर सेगमेंटेशन और स्पीकर आइडेंटिफ़िकेशन, दोनों का डायराइज़ेशन से काफ़ी ओवरलैप है, इसलिए इन तीनों को अक्सर एक ही समझ लिया जाता है।
हर एक थोड़ी अलग समस्या हल करता है, इसलिए टूलिंग का आकलन करते समय इनका अंतर समझना ज़रूरी है।
जैसा कि हमने पहले बताया, स्पीकर सेगमेंटेशन डायराइज़ेशन के शुरुआती चरणों में से एक है। यह बिना लेबल दिए उन सीमाओं को ढूंढता है जहां एक आवाज़ से दूसरी आवाज़ में बदलाव होता है। सेगमेंटेशन आपको बताता है कि 0:42 पर बदलाव हुआ। डायराइज़ेशन इससे आगे बढ़कर बने हुए सेगमेंट को ग्रुप करता है और पूरी तरह लेबल किया हुआ आउटपुट देता है, जिससे आप जान पाते हैं कि 1:15 पर सुनाई देने वाली आवाज़ वही है जो रिकॉर्डिंग की शुरुआत में बोल रही थी।
स्पीकर आइडेंटिफ़िकेशन, डायराइज़ेशन से अलग क्षमता है, लेकिन इसे अक्सर डायराइज़ेशन के साथ जोड़ा जाता है। आइडेंटिफ़िकेशन तय करता है कि वे स्पीकर वास्तव में कौन हैं। आइडेंटिफ़िकेशन सिस्टम नामांकित वॉइसप्रिंट के साथ वॉइस की तुलना करता है और ज्ञात वक्ताओं के रेफ़रेंस से उनकी पहचान लौटाता है। आइडेंटिफ़िकेशन के बाद speaker_0 और speaker_1, "Fergal" और "Eric" बन जाते हैं।
ज़्यादा व्यापक अंतिम ट्रांसक्रिप्ट बनाने के लिए कई प्रोडक्ट इन टूल को जोड़ते हैं। कोई मीटिंग टूल यह काम अपने आप कर सकता है (संभवतः Teams या Meet में किसी व्यक्ति के सेट किए गए नाम जैसी स्ट्रिंग्स से जानकारी लेकर), ताकि बिना मैन्युअल रिव्यू के हर प्रतिभागी के योगदान को नाम के साथ जोड़ा जा सके।

लोकप्रिय ओपन सोर्स स्पीकर डायराइज़ेशन टूल और लाइब्रेरी
जब आपको नियंत्रण, लचीलापन या लोकल डिप्लॉयमेंट चाहिए, तो ओपन सोर्स स्पीकर डायराइज़ेशन टूल पर विचार करना अच्छा है। सबसे अच्छा विकल्प आपके ऑडियो के प्रकार (फ़ोन कॉल, मीटिंग, पॉडकास्ट, ब्रॉडकास्ट), लेटेंसी की ज़रूरतों और आपके उपलब्ध इंजीनियरिंग समय पर निर्भर करता है।
यहां कुछ सबसे लोकप्रिय विकल्प दिए गए हैं।
Pyannote.audio
Pyannote.audio एक PyTorch-आधारित टूलकिट है, जो खास तौर पर स्पीकर डायराइज़ेशन के लिए बनाया गया है और सबसे ज़्यादा इस्तेमाल होने वाले ओपन सोर्स विकल्पों में से एक है। यह VAD, सेगमेंटेशन, एम्बेडिंग और क्लस्टरिंग समेत पूरी डायराइज़ेशन स्टैक को कवर करने वाली pretrained पाइपलाइन देता है, साथ ही आपके डेटा पर मॉडल ट्रेन या फाइनट्यून करने के लिए बिल्डिंग ब्लॉक भी देता है।
इसके pretrained मॉडल Hugging Face के ज़रिए उपलब्ध हैं और बड़े ट्रांसक्रिप्शन प्रोजेक्ट में इन्हें आमतौर पर डायराइज़ेशन लेयर के रूप में इस्तेमाल किया जाता है।
WhisperX
WhisperX OpenAI के Whisper ट्रांसक्रिप्शन को डायराइज़ेशन और forced alignment के साथ जोड़ता है। Whisper अपने आप में अच्छे ट्रांसक्रिप्ट बनाता है, लेकिन स्पीकर लेबल नहीं देता और इसके टाइमस्टैंप सिर्फ़ अनुमानित होते हैं। WhisperX शब्द-स्तरीय टाइमस्टैंप अलाइनमेंट जोड़ता है और pyannote-आधारित डायराइज़ेशन इंटीग्रेट करता है, जिससे ऐसे ट्रांसक्रिप्ट बनते हैं जिनमें हर शब्द के पास सटीक टाइमस्टैंप और स्पीकर लेबल दोनों होते हैं।
NVIDIA NeMo
NVIDIA NeMo में डायराइज़ेशन इसके व्यापक कन्वर्सेशनल AI फ्रेमवर्क के हिस्से के रूप में शामिल है। यह ट्रेन किए जा सकने वाले डायराइज़ेशन मॉडल देता है, जिनमें ओवरलैपिंग स्पीच को संभालने वाले end-to-end तरीके भी शामिल हैं। इसे GPU इंफ्रास्ट्रक्चर पर बड़े पैमाने पर कस्टम स्पीच सिस्टम बनाने वाली टीमों के लिए डिज़ाइन किया गया है।
इनमें से हर टूल के लिए आपको मॉडल डिप्लॉयमेंट, स्केलिंग, मॉनिटरिंग और अपडेट समेत डायराइज़ेशन इंफ्रास्ट्रक्चर संभालना पड़ता है। जो टीमें इस ऑपरेशनल काम को नहीं चाहतीं, उनके लिए managed speech diarization APIs आसान विकल्प हैं। ये मौजूदा workflow के साथ इंटीग्रेट हो सकती हैं या पूरी डायराइज़ेशन पाइपलाइन संभाल सकती हैं, इसलिए ये प्रोडक्शन उपयोगों, जैसे कस्टमर सपोर्ट एनालिटिक्स, मीटिंग ट्रांसक्रिप्शन और पॉडकास्ट प्रोसेसिंग के लिए उपयुक्त हैं।
रियल-टाइम डायराइज़ेशन: चुनौतियां और उपयोग
पूरी हो चुकी रिकॉर्डिंग पर डायराइज़ेशन की तुलना में रियल-टाइम डायराइज़ेशन काफ़ी कठिन है, क्योंकि सिस्टम को अधूरे संदर्भ के साथ फैसले लेने होते हैं।
ऑफ़लाइन सिस्टम कोई निर्णय लेने से पहले पूरी रिकॉर्डिंग देखता है। वह दूसरे मिनट की आवाज़ की तुलना 40वें मिनट की आवाज़ से कर सकता है और भरोसे के साथ तय कर सकता है कि दोनों एक ही स्पीकर हैं, क्योंकि दोनों क्षण उसके पास एक साथ होते हैं। रियल-टाइम सिस्टम को यह सुविधा नहीं मिलती, क्योंकि उसे स्पीच आते ही लेबल करना होता है, अगली बात तक उसकी पहुंच नहीं होती और निर्णय हो जाने के बाद उसे बदलने का मौका बहुत कम या बिल्कुल नहीं मिलता।
भविष्य के इस संदर्भ का न होना, इन तीन खास समस्याओं को रियल टाइम में हल करना बहुत मुश्किल बना देता है:
- लेटेंसी बनाम सटीकता: पूरी बातचीत को आगे-पीछे देख पाने की क्षमता के बिना, कम रिस्पॉन्स टाइम हासिल करने की कीमत सीधे सटीकता के रूप में चुकानी पड़ती है।
- ओवरलैपिंग स्पीच: जब लोग एक-दूसरे के ऊपर बोलते हैं, तो ऑडियो को दोबारा प्रोसेस करने वाला सिस्टम इसे सुलझा सकता है। रियल-टाइम सिस्टम को इसे एक ही लेबल में डालना पड़ता है या तुरंत खास overlap-aware मॉडल का सहारा लेना पड़ता है।
- छोटे कथन: छोटा-सा "हां" या "बोलिए" सिस्टम को काम करने के लिए मुश्किल से पर्याप्त आवाज़ देता है और आसपास के संदर्भ के बिना भी उसे तुरंत लेबल तय करना पड़ता है।
मुश्किल होने के बावजूद, कुछ एप्लिकेशन रिकॉर्डिंग पूरी होने का इंतज़ार नहीं कर सकते। लाइव कैप्शनिंग को मीटिंग और ब्रॉडकास्ट में लोगों के बोलते समय स्पीकर लेबल चाहिए। कॉन्टैक्ट सेंटर सॉफ़्टवेयर जो कॉल के दौरान एजेंट्स को सुझाव देता है, उसे रियल टाइम में यह जानना होता है कि ग्राहक कौन से शब्द इस्तेमाल कर रहा है। वॉइस एजेंट्स को कई प्रतिभागियों वाली कॉल संभालते समय बिना देरी के यह ट्रैक करना होता है कि कौन क्या पूछ रहा है। हर मामले में, थोड़ा कम सटीक लेकिन तुरंत काम करने वाला सिस्टम, ज़्यादा सटीक लेकिन देर से काम करने वाले सिस्टम से बेहतर है।
जिन कामों को वास्तव में रियल-टाइम लेबल की ज़रूरत नहीं होती, जैसे एनालिटिक्स, कंप्लायंस रिव्यू और ट्रांसक्रिप्ट बनाना, उनके लिए बैच डायराइज़ेशन बेहतर विकल्प है क्योंकि यह काफ़ी ज़्यादा सटीक होता है।
स्पीकर डायराइज़ेशन की परफ़ॉर्मेंस का मूल्यांकन कैसे करें
डायराइज़ेशन की सटीकता मापते समय दो मेट्रिक सबसे महत्वपूर्ण हैं: diarization error rate (DER), जो समग्र सटीकता मापता है, और Jaccard error rate (JER), जो जांचता है कि यह सटीकता हर स्पीकर के लिए बनी रहती है या नहीं।
DER कुल स्पीच समय के उस हिस्से की गणना करता है जिसका गलत एट्रिब्यूशन हुआ है। इसमें तीन तरह की गलतियां शामिल होती हैं:
- फ़ॉल्स अलार्म स्पीच: सिस्टम ने किसी सेगमेंट को स्पीच लेबल किया, जबकि कोई बोल नहीं रहा था।
- मिस्ड स्पीच: कोई बोल रहा था, लेकिन सिस्टम ने उसे खामोशी लेबल किया।
- स्पीकर कन्फ्यूज़न: स्पीच का पता चला, लेकिन उसे गलत स्पीकर से जोड़ा गया।
DER = (false alarm + missed speech + speaker confusion) / कुल स्पीच अवधि
10% DER का मतलब है कि इन तीनों प्रकार की गलतियां कुल स्पीच समय के दसवें हिस्से के बराबर हैं। कम स्कोर बेहतर है और स्कोर की तुलना तभी की जा सकती है, जब उन्हें एक ही डेटा पर एक जैसी स्थितियों में मापा गया हो। ऑडियो क्वालिटी, स्पीकर की संख्या और रिकॉर्डिंग में ओवरलैप की मात्रा के आधार पर DER बहुत बदलता है।
Jaccard error rate (JER) हर स्पीकर के लिए डायराइज़ेशन की सटीकता को अलग-अलग मापता है, फिर सभी स्पीकर के नतीजों का औसत निकालता है। हर रेफ़रेंस स्पीकर के लिए, मूल्यांकनकर्ता सिस्टम के सबसे करीबी स्पीकर लेबल को मिलाता है और उनके सही ओवरलैप समय की तुलना किसी भी स्पीकर को दिए गए कुल समय से करता है।
उदाहरण के लिए, 60 मिनट की एक मीटिंग लें, जिसमें स्पीकर A 50 मिनट और स्पीकर B 10 मिनट बोलता है। डायराइज़ेशन सिस्टम स्पीकर A के 50 में से 48 मिनट को सही लेबल करता है, लेकिन स्पीकर B के 10 में से सिर्फ़ 4 मिनट को सही लेबल करता है। समग्र DER फिर भी अपेक्षाकृत अच्छा दिख सकता है, क्योंकि मीटिंग का ज़्यादातर हिस्सा स्पीकर A का है। JER में स्पीकर B का खराब नतीजा बराबर गिना जाता है, क्योंकि स्कोर का औसत निकालने से पहले यह स्पीकर A और B का अलग-अलग मूल्यांकन करता है।
JER_speaker = 1 - (correct_overlap / (ref_time + sys_time - correct_overlap))
अंतिम JER, हर स्पीकर की इन error rates का औसत होता है:
JER = (1 / N) * Σ[JER_speaker_i] जहां i = 1..N
DER और JER दोनों को ट्रैक करने से डायराइज़ेशन की सटीकता की पूरी तस्वीर मिलती है: समग्र सटीकता के लिए DER और हर प्रतिभागी, यहां तक कि कम बोलने वाले लोगों के लिए भी सटीकता बनी रहती है या नहीं, इसके लिए JER।
प्रोडक्शन जैसी ऑडियो पर टेस्टिंग
स्पीकर डायराइज़ेशन सिस्टम का मूल्यांकन करते समय, ऐसे ऑडियो पर DER और JER दोनों की गणना करें जो आपकी असली डिप्लॉयमेंट स्थितियों से मेल खाता हो: आपकी सामान्य स्पीकर संख्या, ऑडियो क्वालिटी और क्रॉसटॉक की मात्रा।
पब्लिश किए गए बेंचमार्क स्कोर साफ़, नियंत्रित डेटासेट पर मापे जा सकते हैं, जैसे स्टूडियो रिकॉर्डिंग, जो असली कॉल रिकॉर्डिंग या लाइव मीटिंग की आवाज़ से शायद ही मेल खाती हैं। बेंचमार्क पर अच्छा स्कोर करने वाला सिस्टम भी नॉइज़ वाले, ओवरलैपिंग, असली दुनिया के ऑडियो पर काफ़ी कम परफ़ॉर्म कर सकता है। डायराइज़ेशन प्रोडक्ट चुनने से पहले अपने डेटा पर टेस्ट करें।
स्पीकर डायराइज़ेशन के लिए ElevenAPI के साथ शुरुआत करें
अगर आप मल्टी-स्पीकर सपोर्ट के साथ ट्रांसक्रिप्शन फ़ीचर बनाने के लिए तैयार हैं, तो Scribe v2 से ElevenLabs स्पीकर डायराइज़ेशन को एक ही स्पीच टू टेक्स्ट API के ज़रिए उपलब्ध कराता है। diarize=true के साथ एंडपॉइंट पर ऑडियो भेजें और JSON रिस्पॉन्स 90+ भाषाओं में, 10 घंटे तक लंबी फ़ाइलों के लिए, अधिकतम 32 स्पीकर तक हर शब्द को स्पीकर ID से लेबल करता है।
दो विकल्प स्टैंडर्ड डायराइज़ेशन आउटपुट को बढ़ाते हैं। कॉल रिकॉर्डिंग के लिए, detect_speaker_roles=true अनाम नंबरों के बजाय स्पीकर को एजेंट और कस्टमर के रूप में लेबल करता है। अगर आपके workspace में रजिस्टर्ड स्पीकर प्रोफ़ाइल हैं, तो use_speaker_library=true डिटेक्ट किए गए स्पीकर को नामांकित वॉइस से मैच कर सकता है, जिससे डायराइज़ेशन और आइडेंटिफ़िकेशन एक ही रिक्वेस्ट में हो जाते हैं।
एक डायराइज़ेशन थ्रेशोल्ड पैरामीटर आपको स्पीकर को ज़रूरत से ज़्यादा अलग करने और मर्ज करने के बीच संतुलन को ट्यून करने देता है। और जब स्पीकर पहले से अलग ऑडियो चैनल पर अलग हों, जैसे स्टीरियो कॉल रिकॉर्डिंग में, मल्टीचैनल ट्रांसक्रिप्शन चैनल के आधार पर स्पीकर असाइन करता है और डायराइज़ेशन को पूरी तरह छोड़ देता है।
स्पीच टू टेक्स्ट क्विकस्टार्ट पहले इंटीग्रेशन के हर चरण के बारे में बताता है। रेगुलेटेड डिप्लॉयमेंट के लिए, प्लेटफ़ॉर्म SOC 2, ISO 27001, PCI DSS L1 और HIPAA के अनुरूप है तथा EU डेटा रेजिडेंसी और ज़ीरो रिटेंशन मोड उपलब्ध हैं।
क्या आप अपने सिस्टम में स्पीकर डायराइज़ेशन बनाने के लिए तैयार हैं? शुरुआत करें अपनी API key पाकर या अधिक जानने के लिए ElevenLabs Docs देखें।


