Skip to content

PC पर हिंदी वॉयस टाइपिंग, पूरी तरह ऑफलाइन

यह पृष्ठ अंग्रेज़ी संस्करण का हिंदी अनुवाद है। किसी भी अंतर की स्थिति में अंग्रेज़ी संस्करण को सही माना जाएगा।

संक्षेप में: YazSes एक मुफ़्त, ओपन-सोर्स dictation सॉफ्टवेयर है जो आपके PC पर किसी भी application में हिंदी टाइप करता है — और यह इंटरनेट से पूरी तरह कटे रहने पर भी काम करता है। आप एक key दबाकर रखते हैं, बोलते हैं, key छोड़ते हैं, और देवनागरी टेक्स्ट वहीं आ जाता है जहाँ आपका cursor है। डिफ़ॉल्ट रूप से कुछ भी upload नहीं होता, कोई account नहीं चाहिए, और कोई per-minute शुल्क नहीं है।

हिंदी वॉयस टाइपिंग के अधिकतर उपलब्ध विकल्प या तो websites हैं या Android keyboards: आप उनके text box में बोलते हैं और फिर नतीजा copy करके बाहर ले जाते हैं, और इंटरनेट जाते ही वे रुक जाते हैं। YazSes आपके अपने कंप्यूटर पर चलने वाला एक background program है, इसलिए यह सीधे Word, browser, code editor, WhatsApp Web या terminal में टाइप करता है — ट्रेन में, कमज़ोर नेटवर्क वाले इलाके में, या ऐसी मशीन पर भी जो कभी इंटरनेट से जुड़ती ही नहीं।

कौन-कौन सी भारतीय भाषाएँ समर्थित हैं

YazSes के साथ आने वाला speech model बहुभाषी है। नीचे दी गई हर भाषा installed model द्वारा समर्थित है और इसे dictation भाषा के रूप में सेट किया जा सकता है:

भाषा कोड भाषा कोड
हिन्दी hi कन्नड़ kn
बांग्ला bn मलयालम ml
तमिल ta पंजाबी pa
तेलुगु te उर्दू ur
मराठी mr असमिया as
गुजराती gu नेपाली ne
संस्कृत sa सिंधी sd

सभी भाषाओं में accuracy एक जैसी नहीं है — नीचे ईमानदार सीमाएँ देखें। हिन्दी, बांग्ला, तमिल और उर्दू के पीछे असमिया या संस्कृत की तुलना में कहीं अधिक training data है।

हिंदी के लिए सेटअप

सिर्फ़ दो settings मायने रखती हैं। डिफ़ॉल्ट model केवल अंग्रेज़ी के लिए है, इसलिए बहुभाषी model पर जाना ज़रूरी है:

[stt]
model = "small"        # "small.en" नहीं — .en models हिंदी कर ही नहीं सकते
language = "hi"

फिर restart करें:

yazses restart

बस इतनी ही configuration है। पहली बार dictation करने पर model अपने आप download हो जाता है — अलग से कोई download step नहीं है, और उसके बाद इसे कभी network की ज़रूरत नहीं पड़ती।

किसी अन्य भारतीय भाषा के लिए ऊपर दी गई तालिका से language कोड बदल दें:

# तमिल
[stt]
model = "small"
language = "ta"

कौन-सा model size चुनें

भारतीय भाषाओं को बड़े model से अंग्रेज़ी की तुलना में कहीं ज़्यादा फ़ायदा होता है। अगर हिंदी आउटपुट मोटे तौर पर सही दिखता है पर शब्दों के अंत बार-बार बिगड़ते हैं, तो आम तौर पर कारण model का आकार होता है, आपका microphone नहीं।

Model भारतीय भाषाओं के लिए उपयुक्तता
small.en, base.en काम नहीं करेंगे। केवल अंग्रेज़ी, कोई language token नहीं।
small हिंदी के लिए शुरुआत करने लायक। छोटी भाषाओं में कमज़ोर।
medium भारतीय भाषाओं में स्पष्ट रूप से बेहतर। CPU साथ दे तो यही चुनें।
large-v3 सर्वोत्तम गुणवत्ता; CPU पर सबसे धीमा।

देखें: performance tuning।

Hinglish — हिंदी और अंग्रेज़ी मिली-जुली बातचीत

हिंदी वाक्य में अंग्रेज़ी शब्द मिलाना सामान्य भारतीय बोलचाल है, और यही वह स्थिति है जहाँ अधिकतर dictation tools गड़बड़ करते हैं। आज Hinglish के लिए auto-detection वाला एक बहुभाषी model इस्तेमाल करें:

[stt]
model = "small"
language = ""          # auto-detect

Whisper तब हर burst के लिए एक ही भाषा पहचानता है, बीच वाक्य में भाषा नहीं बदलता; इसलिए मिले-जुले वाक्य तब सबसे अच्छे आते हैं जब model इतना बड़ा हो कि हिंदी संदर्भ में अंग्रेज़ी शब्दों को भी ठीक लिख सके।

[polyglot] अभी इसका जवाब नहीं है: यह planned है, wired नहीं। इसका design एक घोषित भाषा-जोड़ी ([polyglot] pair = "hi-en") वाले मिले-जुले burst को अलग से train किए गए code-switch adapter ([polyglot] adapter_path) पर भेजता है, पर अभी कोई हिस्सा यह पहचानता ही नहीं कि burst में भाषा कहाँ बदलती है। हर burst [stt] model से ही decode होता है, adapter हो या न हो, इसलिए इसे चालू करने से कोई transcript नहीं बदलता।

क्या देवनागरी सचमुच मेरे applications में टाइप होगी?

यह जायज़ सवाल है, क्योंकि हिंदी को पहचानना और हिंदी को टाइप करना दो अलग समस्याएँ हैं। YazSes को उस window में keystrokes भेजने होते हैं जो उस समय focus में है, और हर तरीक़ा ऐसे अक्षर नहीं बना सकता जो आपके भौतिक keyboard layout पर मौजूद ही नहीं हैं।

  • Linux X11 पर — परखा हुआ, काम करता है। xdotool backend से देवनागरी सही टाइप होती है, क्योंकि यह हर अक्षर को भौतिक key के बजाय X keysym से जोड़ता है। इसे पूरी तरह जाँचा गया है: नमस्ते हिंदी भेजा गया और target application को ठीक वही, byte-दर-byte, मिला।
  • किसी भी platform पर — clipboard backend बनावट से ही काम करता है। यह UTF-8 टेक्स्ट सीधे भेजता है, इसलिए script मायने ही नहीं रखती:
[injection]
backend = "clipboard"
  • Linux Wayland पर — भरोसा करने से पहले ख़ुद जाँच लें। डिफ़ॉल्ट Wayland backend ydotool keyboard layout के नीचे kernel input layer पर काम करता है, और यही वह जगह है जहाँ ग़ैर-लातीनी अक्षर सबसे आसानी से छूट जाते हैं। हम इसके ज़रिए देवनागरी आउटपुट की पुष्टि नहीं कर पाए हैं। अगर आप GNOME या KDE पर Wayland इस्तेमाल कर रहे हैं, तो पहले किसी text editor में एक हिंदी वाक्य बोलकर देखें; अगर कुछ न आए तो ऊपर बताए अनुसार [injection] backend को clipboard कर दें।

अगर टेक्स्ट पहचान तो लिया जाता है पर application में पहुँचता नहीं, तो यह injection की समस्या है, भाषा की नहीं — troubleshooting देखें।

ईमानदार सीमाएँ

  • भरोसा करने से पहले अपनी ही आवाज़ पर परखें। Whisper की accuracy भाषा और उच्चारण के अनुसार बदलती है, और भारतीय भाषाओं में इसका प्रदर्शन अंग्रेज़ी से काफ़ी पीछे है। यह पृष्ठ बराबरी का दावा नहीं कर रहा।
  • छोटी भारतीय भाषाएँ वाक़ई कमज़ोर हैं। असमिया, सिंधी, संस्कृत और नेपाली के पास हिंदी से बहुत कम training data है। बड़ा model मदद करता है, पर यह अंतर मिटाता नहीं।
  • बहुभाषी models धीमे हैं अंग्रेज़ी-only models की तुलना में। साधारण CPU पर हिंदी में medium, अंग्रेज़ी में base.en से काफ़ी धीमा रहेगा।
  • Wayland + देवनागरी अपुष्ट है, जैसा ऊपर बताया गया। X11 और clipboard — यही दो रास्ते हमने वास्तव में जाँचे हैं।

संबंधित पृष्ठ