डिक्टेशन ऐप्स आपका पहला शब्द क्यों खा जाते हैं

आप hotkey दबाते हैं, बोलते हैं और पहला शब्द कट जाता है। ठंडे स्टार्ट पर clipping क्यों होती है, और गरम mic तथा 500 ms pre-roll कैसे मदद करते हैं।

Teodor Deleanu10 जुलाई 20268 मिनट में पढ़ें

Hotkey दबाइए। बोलना शुरू कीजिए। और देखिए कि transcript आपके दूसरे शब्द से शुरू होता है — कभी-कभी तीसरे से। “retry logic को refactor करो” निकलता है “logic को refactor करो”। “मत merge करो अभी” निकलता है “merge करो अभी”, जो आपकी ओर से टाइप हो जाने के लिए सचमुच एक ख़तरनाक वाक्य है। यह नाकामी ठंडे स्टार्ट वाली माइक्रोफ़ोन pipelines में आसानी से दोहराई जा सकती है, OS में बने टूल्स से लेकर समर्पित डिक्टेशन ऐप्स तक।

लोग इसे अलग-अलग ढंग से बयान करते हैं — “यह शुरुआत काट देता है”, “मुझे बोलने से पहले ठहरना पड़ता है”, “पहला शब्द हमेशा ग़ायब रहता है” — पर यह एक ही परिघटना है, और एक बार जल जाने के बाद आप वही तोड़ निकाल लेते हैं जो सब निकालते हैं: key दबाओ, एक पल ठहरो, फिर बोलो। यानी अब आप दिन में दर्जनों बार एक छोटा-सा अंधविश्वासी अनुष्ठान कर रहे हैं ताकि अपने टूल की भरपाई कर सकें, और टूल ने आपको सिखा दिया है, न कि आपने उसे।

मैंने महीनों तक दूसरे टूल्स में यही अनुष्ठान किया। Keebye बनाते वक़्त इसे मारना सूची की पहली चीज़ों में था, क्योंकि इसका इलाज एक ऐसा असहज सौदा माँगता निकला जो ज़्यादातर ऐप्स नहीं करेंगे — और मैं उस सौदे के बारे में उतनी ही साफ़-साफ़ बात करना चाहता हूँ जितनी इलाज के बारे में।

पहला शब्द कट क्यों जाता है?

यह category-स्तर की समस्या है, किसी एक vendor की लापरवाही नहीं, और इसका भौतिकी सीधा है: माइक्रोफ़ोन तात्कालिक नहीं होते।

जब कोई डिक्टेशन ऐप रिकॉर्डिंग भोले तरीक़े से शुरू करता है — hotkey दबाओ, फिर माइक्रोफ़ोन खोलो — तो आपकी speech का पहला नमूना पकड़े जाने से पहले एक पूरी ज़ंजीर चलनी पड़ती है। OS का ऑडियो session शुरू होना चाहिए। input डिवाइस को जागना चाहिए, जिसका कुछ hardware के लिए मतलब सचमुच गरम होने का समय है। Stream का format तय होता है, buffers आवंटित होते हैं, और जो पहले buffers आते हैं वे अक्सर कचरा होते हैं जिन्हें फेंक दिया जाता है। मशीन और डिवाइस के हिसाब से वह ज़ंजीर “एक पल” और कुछ सेकंडों के बीच कहीं समय लेती है।

इस बीच आप — एक इंसान, जिसके दिमाग़ में सोच पहले से बनी हुई है — ठीक उसी क्षण बोलना शुरू करते हैं जब आपकी उँगली key पर पड़ती है। दरअसल आम तौर पर उस क्षण से बाल भर पहले: दबाने का इरादा और बोलने का इरादा आपके दिमाग़ से साथ-साथ निकलते हैं, और speech की शुरुआत ऐप की तैयारी को नियमित रूप से पीछे छोड़ देती है। Stream चालू होने से पहले आपने जो कुछ कहा, ऐप के लिए उसका कभी अस्तित्व ही नहीं था। मॉडल उस ऑडियो को transcribe नहीं कर सकता जो कभी पकड़ा ही नहीं गया। इसलिए: “logic को refactor करो”।

ऐप्स mic को माँगने पर चालू करने के बजाय तैयार क्यों नहीं रखते? ज़्यादातर तो अच्छी नागरिकता के नाते। माइक्रोफ़ोन खुला रखने में थोड़ी बिजली लगती है, और — इससे कहीं ज़्यादा अहम — इससे OS का माइक्रोफ़ोन संकेतक जल उठता है, जिसे users समझदारी से “यह ऐप मेरी सुन रहा है” की तरह पढ़ते हैं। mic सिर्फ़ माँगने पर खोलने से संकेतक ईमानदार रहता है और ऐप शिष्ट दिखता है। इसकी क़ीमत रिकॉर्डिंग की शुरुआत में ठंडे स्टार्ट का जोखिम है।

इलाज: ऐसा mic जो key दबाने से पहले ही सुन रहा हो

Keebye इस पर दोनों सिरों से हमला करता है, और दोनों तरीक़ों को अलग-अलग देखना ठीक है क्योंकि वे समस्या के दो अलग हिस्से हल करते हैं।

गरम mic। किसी session की आपकी पहली रिकॉर्डिंग के बाद Keebye ऑडियो input stream खुली रखता है। यानी ठंडे स्टार्ट की ज़ंजीर — session शुरू होना, डिवाइस का जागना, stream की बातचीत — बाद के किसी डिक्टेशन से पहले ही हो चुकी होती है, जब तक वह stream ठीक हालत में रहती है। आपकी उँगली हिलने से पहले stream ज़िंदा है।

Pre-roll। गरम stream ऐप की देरी ठीक करती है, आपकी नहीं — याद रहे, आपकी speech की शुरुआत आपके keypress से आगे निकल सकती है। इसलिए Keebye सबसे हालिया ऑडियो का 500-मिलीसेकंड वाला एक चलता हुआ buffer रखता है (16 kHz पर 8,000 samples, एक ring में)। जब आप hotkey दबाते हैं, तो ठीक-पहले वाले ऑडियो का वह आधा सेकंड उच्चारण के आगे लगा दिया जाता है। जो ऑडियो उस buffer के भीतर शुरू हुआ था वह keypress से पहले फेंके जाने के बजाय transcriber को उपलब्ध रहता है।

मिला-जुला नतीजा: दोहराए गए डिक्टेशनों पर गरम stream और 500 ms pre-roll उस आम मामले को ढक लेते हैं जहाँ speech keypress से ठीक पहले या उसके साथ शुरू होती है। उस सरहद के भीतर रस्मी ठहराव की ज़रूरत नहीं रहती। यह उस शब्द को वापस नहीं ला सकता जो रिकॉर्डिंग शुरू होने से आधे सेकंड से भी पहले बोला गया था, और किसी session का पहला डिक्टेशन अब भी stream शुरू होने की सामान्य देरी चुकाता है।

सौदा, साफ़-साफ़

यह वह हिस्सा है जिसे मैं दबाने से इनकार करता हूँ, क्योंकि यह design की ईमानदार क़ीमत है: चूँकि ऑडियो stream डिक्टेशनों के बीच खुली रहती है, इसलिए macOS माइक्रोफ़ोन को तब भी चालू दिखाता है जब आप डिक्टेट नहीं कर रहे। नारंगी बिंदु जल रहा होता है। अगर आप Control Center देखें, तो Keebye वहीं, उसी वक़्त, mic इस्तेमाल करने वालों में गिना हुआ मिलेगा, जबकि आप कुछ नहीं कर रहे।

उस दौरान असल में हो क्या रहा होता है: ऑडियो 500 ms वाले ring buffer में बहता है और लगातार फेंका जाता रहता है। कुछ transcribe नहीं होता। कुछ सहेजा नहीं जाता। जब तक आप key न दबाएँ तब तक buffer से कुछ बाहर नहीं जाता — और आधे सेकंड से पुराना सब कुछ हमेशा के लिए ख़त्म है, ring ने उस पर लिख दिया। पर मैं यह दिखावा नहीं करूँगा कि संकेतक झूठ बोल रहा है, क्योंकि वह झूठ नहीं बोल रहा: stream खुली है, और “हमेशा सुन सकने लायक़” इस architecture का वाजिब ब्योरा है, भले आपके पूछने तक किसी सार्थक अर्थ में कुछ भी न सुन रहा हो।

यह सौदा मैंने जान-बूझकर, आँखें खोलकर किया, और इसकी वजह यह है। mic को माँगने पर खोलना हर बार ठंडे स्टार्ट का जोखिम लाता है: कटे शब्द, ग़लत वाक्य, सिखाया हुआ ठहराव। गरम-stream वाले design की क़ीमत एक नारंगी बिंदु के साथ आपकी सहजता पर पड़ती है, और उसके पीछे ऐसी architecture है जिसके बारे में आप सोच-समझ सकते हैं: सिर्फ़-text वाली लोकल हिस्ट्री (जिस पर हमने आपका डिक्टेशन यूँ ही ग़ायब नहीं होना चाहिए में लिखा है), on-device ट्रांसक्रिप्शन, कभी न सहेजा जाने वाला ऑडियो, और आधे सेकंड की ring memory। मैं वह बिंदु मंज़ूर करता हूँ। अगर आप नहीं करेंगे — तो वह भी जायज़ रुख़ है, और उससे सचमुच कोई दूसरा टूल आपके लिए सही चुनाव बन सकता है; हमारे Keebye vs Superwhisper और Keebye vs Wispr Flow पेज ठीक उसी फ़ैसले में मदद के लिए लिखे गए हैं।

दो सरहदें, ताकि किसी को हैरानी न हो

किसी session का बिलकुल पहला डिक्टेशन अब भी stream शुरू होने की सामान्य देरी झेलता है। गरम mic इसलिए गरम है कि एक रिकॉर्डिंग पहले हो चुकी है; पहली वाली अब भी setup का ख़र्च चुकाती है। बाद वाले डिक्टेशनों को तब तक फ़ायदा मिलता है जब तक stream खुली रहती है।

Pre-roll 500 मिलीसेकंड का है, और 500 मिलीसेकंड एक पल है, कोई वाक्य नहीं। Buffer स्वाभाविक मामला ढकता है — कोई शब्द जो keypress से ज़रा पहले शुरू हुआ हो। अगर आप पूरा वाक्य बोल देते हैं और फिर key दबाना याद आता है, तो पहले के शब्द जा चुके, और यह design से है: ring हमेशा सिर्फ़ आधा सेकंड रखती है, ठीक इसीलिए कि ऐप बेकार बैठे-बैठे कोई अर्थपूर्ण ऑडियो जमा न करता रहे। लंबा pre-roll आपकी और भी बेध्यानी वाली शुरुआतें पकड़ता और आपके इर्द-गिर्द का और ज़्यादा ऑडियो memory में रखता। आधा सेकंड वह लकीर है जो मैंने खींची।

आधा सेकंड सुनने से ज़्यादा क्यों मायने रखता है

कटा हुआ पहला शब्द एक छोटा-सा बग लगता है। जिस पैरलल-lane वाले workflow के लिए Keebye बना था — आवाज़ एक साथ कई AI agents और कई इंसानी बातचीतों का control channel, वही कार्यदिवस जिसका ब्योरा दो बच्चे, तीन startups, एक आवाज़ में है — उसमें डिक्टेशन दिन में दर्जनों बार होता है, झोंकों में, context बदलते हुए। रस्मी ठहराव माँगने वाला टूल हर झोंके पर कर लगाता है और, इससे भी बुरा, कभी-कभी आपका अर्थ उलटकर उसे भेज देता है। “merge करो अभी” ठीक एक बार मज़ेदार था।

इस category में भरोसेमंदी कोई एक बड़ा फ़ीचर नहीं है। वह छोटे-छोटे बचावों का जमाव है: शुरुआती ऑडियो के लिए pre-roll, transcript के पीछे हिस्ट्री, और वापस पाने लायक़ insertion का रास्ता। यह पोस्ट इनमें से पहले के बारे में है; हिस्ट्री वाली पोस्ट दूसरे को समेटती है।

Keebye macOS के लिए अर्ली ऐक्सेस में है। नीचे अपना फ़्री ट्रायल शुरू करें, किसी दोहराए हुए डिक्टेशन पर “मत merge करो अभी” कहें, और जाँचें कि पहला शब्द बचता है या नहीं। पूरा टेस्ट यही है।

बिना रस्मी ठहराव के बोलना शुरू करें

अपना फ़्री ट्रायल शुरू करें और एक दोहराया हुआ डिक्टेशन टेस्ट करें जो ऐसे शब्द से शुरू होता है जिसे आप खो नहीं सकते।

Start free trial

Early access: we'll email you the moment the macOS build is ready — your 14 days start when you first sign in from the app.

आगे पढ़ें

Teodor Deleanu9 मिनट में पढ़ें

आपका डिक्टेशन यूँ ही ग़ायब नहीं होना चाहिए

आप लंबा ख़याल डिक्टेट करते हैं, insert नाकाम होता है और text ग़ायब है। ऐप्स शब्द क्यों खोते हैं, और Keebye की लोकल, सिर्फ़-text हिस्ट्री।

reliability
workflow
10x-devs
Teodor Deleanu8 मिनट में पढ़ें

वह डिक्टेशन ऐप जो internet न होने पर भी चलता है

Cloud डिक्टेशन network के साथ बंद होता है। Keebye speech-to-text पूरी तरह on-device चलाता है: न internet, न Mac से बाहर ऑडियो, न network outage का असर।

offline
privacy
10x-devs
code reviews अपनी भाषा में डिक्टेट कीजिए
Teodor Deleanu8 मिनट में पढ़ें

code reviews अपनी भाषा में डिक्टेट कीजिए

Code अंग्रेज़ी है। आपके review कमेंट्स का अंग्रेज़ी होना ज़रूरी नहीं। 25 भाषाओं में से किसी एक में on-device डिक्टेशन, और भाषा pin करने की अहमियत।

language-specific
code-review
multilingual