भाषा पहचानने वाला डिटेक्टर हमेशा कोई न कोई जवाब देता है, खांसी पर भी। साफ़ या मिली-जुली भाषा वाली ऑडियो में पहचान चालू रखें, और जब शोर या भारी लहजे के बीच एक ही भाषा बोली जा रही हो, तब भाषा का नाम खुद दें।
हर ट्रांसक्रिप्शन एक ऐसे सवाल से शुरू होता है जो पढ़ने वाले को कभी दिखता नहीं: यह कौन-सी भाषा है? इसे गलत समझ लिया जाए तो बाकी पाइपलाइन पूरी मेहनत से ऐसा टेक्स्ट बनाती है जो धाराप्रवाह तो लगता है, पर बेमतलब होता है। यह लेख बताता है कि भाषा पहचानने वाला डिटेक्टर किन चीज़ों को सुनता है, लाइव ऑडियो और फ़ाइलों में पहचान कैसे व्यवहार करती है, और कब आपके लिए खुद भाषा बताना बेहतर है।
भाषा पहचानने वाला डिटेक्टर यह नहीं समझता कि क्या कहा जा रहा है। वह आवाज़ को खुद देखता है: व्यंजनों और स्वरों का समूह, शब्दों पर ज़ोर देने का तरीका, वाक्यों की लय, और वे छोटे, बार-बार आने वाले शब्द जिन पर हर भाषा टिकी होती है। स्पैनिश का अपना स्वर-समूह और लय है; डच और जर्मन में बहुत कुछ एक-सा है, पर कुछ ध्वनियों पर वे अलग हो जाते हैं। साफ़ बोली गई कुछ सेकंड की आवाज़ आमतौर पर इन्हें अलग पहचानने के लिए काफ़ी होती है।
कई रिकग्नाइज़र यह काम शब्द पहचानने के साथ-साथ, एक उप-उत्पाद की तरह करते हैं। वे ऑडियो की शुरुआत से ही तय करते हैं कि भाषा क्या है, और हर उस भाषा के लिए एक संभावना देते हैं जिसे वे जानते हैं। इस डिज़ाइन से दो बातें निकलती हैं। संभावनाओं का जोड़ हमेशा एक होता है, इसलिए "कोई भाषा नहीं" जैसा जवाब नहीं होता: खामोशी, खांसी या संगीत की टोन को भी एक भाषा मिल जाती है, अक्सर एक भरोसेमंद स्कोर के साथ। और फ़ैसला शुरुआत से लिया जाता है, जो सैंपल चुनने की सबसे खराब जगह है। कई रिकॉर्डिंग अभिवादन, नामों और जगहों के नामों से शुरू होती हैं, जिनमें भाषा का संकेत बहुत कम होता है: "Good morning, Maria, welcome to Berlin" लगभग उतना ही जर्मन है जितना अंग्रेज़ी। कुछ रिकॉर्डिंग खामोशी या खांसी से शुरू होती हैं, और ऐसे ऑडियो पर फ़ैसला माँगा जाए तो डिटेक्टर फिर भी फ़ैसला कर देगा, पूरे भरोसे के साथ, और बिना किसी ठोस आधार के। असली ऑडियो में भी यही होता है: कमरे की आवाज़ और "Bună dimineața" से शुरू होने वाला एक रोमानियाई प्रवचन पूरे यकीन के साथ इतालवी "Buona domenica" सुना जा सकता है।
गलत जवाब की कीमत भी उतनी साधारण नहीं जितनी लगती है। गलत भाषा में डिकोड करने वाला रिकग्नाइज़र स्पेलिंग नहीं बिगाड़ता; वह फिर से लिख देता है। "For God so loved the world" को रोमानियाई में डिकोड किया गया तो नतीजा "Forgot to love the world" निकला। रोमानियाई वाक्य "mândria slujește" को अंग्रेज़ी में डिकोड किया गया तो नतीजा "Pride serves" आया, जो उस वाक्य का सटीक अनुवाद है जिसे किसी ने अनुवाद करवाने को कहा ही नहीं था। शब्द धाराप्रवाह होते हैं और ट्रांसक्रिप्ट में कुछ गड़बड़ होने का कोई संकेत नहीं होता, और यही इस गलती को महँगा बनाता है।
डिटेक्टर को सबसे ज़्यादा ये पाँच चीज़ें बहकाती हैं:
इनमें से कौन-सी चीज़ आपको परेशान करेगी, यह इस पर निर्भर है कि ऑडियो लाइव आ रहा है या पहले से किसी फ़ाइल में रखा है।
लाइव ट्रांसक्रिप्शन में पूरी रिकॉर्डिंग देखने को नहीं होती। ऑडियो बोलते ही आता है, और ट्रांसक्रिप्ट को उसके साथ ही आना होता है। इसलिए भाषा वक्ता के बोलने के साथ-साथ पहचानी जाती है, और अगर वे भाषा बदलें तो उसके पीछे चली जाती है। डैशबोर्ड में लाइव ट्रांसक्रिप्शन शुरू करते समय Spoken language स्विच के नीचे का नोट यही कहता है: वक्ता की भाषा अपने-आप पहचानी जाती है, और वे कभी भी भाषा बदल सकते हैं।
बदलाव लागू होने से पहले उसकी पुष्टि होती है, इसलिए एक शोर वाला टुकड़ा ट्रांसक्रिप्ट को किसी दूसरी भाषा में नहीं ले जाता। कमज़ोरी शुरुआत में है: अगर पहले शब्द शोर वाला अभिवादन हों, तो पहली पंक्ति गलत भाषा में आ सकती है। भाषा खुद बताने से यह बच जाता है।
फ़ाइलें अलग तरह से काम करती हैं।
फ़ाइल एक बेहतर समस्या है: पहले कुछ सेकंड पर भरोसा करने की ज़रूरत नहीं। फ़ाइल के लिए भाषा पूरी रिकॉर्डिंग से तय होती है, इसलिए शुरुआत का शोर वाला अभिवादन उसे तय नहीं कर सकता।
फ़ाइल की भाषा अब भी एक कामचलाऊ मान्यता है, अंतिम फ़ैसला नहीं। जो रिकॉर्डिंग बीच में सचमुच भाषा बदलती है, जैसे कोई इंटरव्यू जो दूसरे हिस्से में अंग्रेज़ी से रोमानियाई में चला जाए, उसे ज़बरदस्ती एक भाषा में नहीं खींचा जाता, बल्कि उसके पीछे चला जाता है। और जो रिकॉर्डिंग पूरे समय भाषाओं के बीच बदलती रहे, उसे भी सँभाला जाता है।
एक डिटेक्टर जो एक बार फ़ैसला करे और फिर कभी पीछे मुड़कर न देखे, गलत जगह पर भरोसा कर रहा होता है।
जब पूरी रिकॉर्डिंग शोर वाली हो, तो कोई डिटेक्टर ज़्यादा मदद नहीं कर सकता। पहचान डिफ़ॉल्ट है, क्योंकि यह ज़्यादातर सही होती है और इसकी कोई कीमत नहीं। पर कुछ रिकॉर्डिंग के लिए आपको भाषा खुद बतानी चाहिए, और डैशबोर्ड बताता है कि कौन-सी। बोली जाने वाली भाषा का नाम देने से शोर वाली रिकॉर्डिंग और भारी लहजे पर सटीकता सुधरती है।
ये वे मामले हैं जहाँ डिटेक्टर के पास सबसे कम आधार होता है। शोर उन संकेतों को हटा देता है जिन पर डिटेक्टर निर्भर है; भारी लहजा उन्हें किसी दूसरी भाषा की ओर खिसका देता है; और मिलती-जुलती जोड़ी में शुरू से ही कम संकेत होते हैं। गूँजने वाले हॉल में कमज़ोर पुर्तगाली लहजे वाला अंग्रेज़ी बोलने वाला वक्ता केवल आवाज़ से पहचानना मुश्किल है, और अगर डिटेक्टर उसे गलत पहचानता है, तो जब तक गलती रहती है, ट्रांसक्रिप्ट अंग्रेज़ी बोली को पुर्तगाली में बदलता रहता है। भाषा का नाम देने से सवाल ही खत्म हो जाता है, इसलिए सारी मेहनत शब्दों पर लगती है।
एक छोटी सूची:
भाषा का नाम देना ट्रांसक्रिप्शन की सेटिंग है, आपके अकाउंट की नहीं, इसलिए आप हर रिकॉर्डिंग के लिए अलग से तय कर सकते हैं। ऊपर की सारी बातें एक API विकल्प पर आ जाती हैं।
spokenLanguage न हो तो पहचान होती है, और स्ट्रीम के बीच session.updateAPI में spokenLanguage एक भाषा कोड होता है, जैसे en; इसे छोड़ दें तो भाषा पहचानी जाती है। यह फ़ाइल या लिंक ट्रांसक्रिप्शन की settings में और रियलटाइम सेशन के विकल्पों में आता है। पहचान और नाम देना एक ही 100 भाषाओं पर लागू होते हैं। 10 तक भाषाओं में अनुवाद एक अलग चुनाव है, और यह इस पर निर्भर नहीं करता कि कौन-सी भाषा पहचानी गई या दी गई। अनुवाद बोलने की रफ़्तार से कैसे कदम मिलाता है, इसका विषय लाइव अनुवाद की देरी, समझाई गई में है।
{ "name": "Board meeting", "settings": { "spokenLanguage": "en", "speakerLabels": "auto" } }
रियलटाइम सेशन यह विकल्प सेशन बनाते समय लेता है, और ऑडियो चलते रहने के दौरान इसे बदल भी सकता है। session.update टेक्स्ट फ़्रेम में नया spokenLanguage आने पर वह उसी क्षण से बोले गए हिस्से पर लागू होता है; इसे "" या "auto" पर सेट करने से सेशन फिर पहचान पर लौट आता है, और कोई असमर्थित कोड अनदेखा रहता है। एक कैप्शन व्यू जिसमें भाषा का बटन हो, ऑपरेटर को गलत पहली पंक्ति दिखते ही भाषा का नाम देने देता है, बिना दोबारा कनेक्ट किए।
{ "type": "session.update", "spokenLanguage": "ro" }
भाषा कोड और उनके नामों की सूची GET /v1/languages पर है, जिसके लिए कोई कुंजी नहीं चाहिए। अपने सर्वर पर सेशन बनाने से लेकर ड्राफ़्ट और कमिट पढ़ने तक का पूरा रियलटाइम फ़्लो WebSocket पर रियलटाइम ट्रांसक्रिप्शन में है, और इंटरैक्टिव रेफ़रेंस {{api}}/docs पर है। ड्रैशबोर्ड में यही चुनाव नया ट्रांसक्रिप्शन शुरू करते समय Spoken language स्विच है, और API की कुंजियाँ Developers के अंतर्गत हैं।