सभी लेख

· Casimiro Ferreira· 8 मिनट पढ़ें

ओपन स्पीच मॉडलों का निर्यात और क्वांटाइज़ेशन ताकि वे वास्तव में चलें

  • ONNX
  • CoreML
  • GGUF
  • ASR
  • OVOS
  • OpenVoiceOS
  • Quantization
  • Open Source

एक रिसर्च चेकपॉइंट के रूप में प्रकाशित स्पीच रिकग्निशन मॉडल आमतौर पर PyTorch वेट्स का एक फ़ोल्डर होता है, एक प्रशिक्षण स्क्रिप्ट, और एक टिप्पणी कि उसे किस GPU पर प्रशिक्षित किया गया था। यह किसी बेंचमार्क स्कोर को पुनरुत्पादित करने के लिए काफ़ी है। यह किसी Raspberry Pi, किसी फ़ोन, या बिना इंटरनेट कनेक्शन वाले किसी लैपटॉप पर डालने के लिए काफ़ी नहीं है। एक से दूसरे तक पहुँचना रूपांतरण का काम है, और यही अधिकांशतः तय करता है कि कोई ओपन स्पीच मॉडल कभी किसी असली डिवाइस तक पहुँचता है या नहीं।

हम यह रूपांतरण काम अपनी आजीविका के लिए करते हैं: ओपन ASR (automatic speech recognition, यानी स्पीच-टू-टेक्स्ट) और TTS (टेक्स्ट-टू-स्पीच) मॉडल लेकर उन्हें ऐसी फ़ाइलों में बदलना जो ऑफ़लाइन, साधारण CPU पर या ऑन-डिवाइस एक्सेलेरेटर्स पर चलती हैं, रनटाइम पर किसी Python प्रशिक्षण स्टैक की आवश्यकता के बिना। अधिकांश परिणाम हमारे अपने के बजाय Hugging Face पर OpenVoiceOS संगठन के अंतर्गत प्रकाशित होते हैं, और यह चुनाव जानबूझकर है — क्यों, यह नीचे बताया गया है।

एक चेकपॉइंट परिनियोजन क्यों नहीं है

एक PyTorch या NeMo चेकपॉइंट एक विशिष्ट Python वातावरण अपेक्षित करता है: सही लाइब्रेरी संस्करण, आमतौर पर एक GPU, और केवल इन्फ़रेंस चलाने के लिए ख़ुद प्रशिक्षण फ़्रेमवर्क। वह स्टैक बड़ा है, लगातार बदलता है, और वह चीज़ नहीं है जिसे आप किसी वॉयस असिस्टेंट के अंदर भेजना चाहेंगे जिसे एक छोटे बोर्ड पर बूट होना है।

मॉडल निर्यात प्रशिक्षित नेटवर्क को शुद्ध रूप से इन्फ़रेंस के लिए बने एक फ़ॉर्मैट में बदलकर इसे हल करता है — कोई प्रशिक्षण कोड नहीं, कोई autograd नहीं, कोई फ़्रेमवर्क लॉक-इन नहीं। हम तीन ऐसे फ़ॉर्मैट्स को लक्षित करते हैं, हर एक अलग परिनियोजन आकार के लिए:

  • ONNX (Open Neural Network Exchange) एक पोर्टेबल ग्राफ़ फ़ॉर्मैट है जिसे रनटाइम्स की एक विस्तृत श्रृंखला निष्पादित कर सकती है, CPU या GPU पर, Linux, Windows, macOS, या एम्बेडेड बोर्डों पर। यह हमारा डिफ़ॉल्ट लक्ष्य है क्योंकि यह वहाँ हर जगह चलता है जहाँ onnxruntime चलता है, जो लगभग हर जगह है।
  • CoreML Apple का ऑन-डिवाइस इन्फ़रेंस फ़ॉर्मैट है। एक CoreML पैकेज CPU के बजाय Mac या iPhone के Neural Engine या GPU पर चलता है, जो Apple हार्डवेयर पर रीयल-टाइम स्पीच रिकग्निशन के लिए मायने रखता है।
  • GGUF वह फ़ॉर्मैट है जिसका उपयोग llama.cpp और उसका पारिस्थितिकी तंत्र करता है, क्वांटाइज़्ड, LLM-शैली के मॉडलों के लिए बनाया गया जिन्हें छोटे मेमोरी फ़ुटप्रिंट के साथ चलना होता है। हम इसे उन नए, ट्रांसफ़ॉर्मर-आधारित स्पीच मॉडलों के लिए इस्तेमाल करते हैं जो आर्किटेक्चर की दृष्टि से किसी क्लासिक ध्वनिक मॉडल के बजाय भाषा मॉडलों के अधिक करीब हैं।

सही लक्ष्य चुनना कोई सतही बात नहीं है। एक conformer-आधारित ASR मॉडल (अधिकांश आधुनिक स्पीच रिकग्नाइज़र के पीछे का आर्किटेक्चर, जो कन्वोल्यूशन और सेल्फ़-अटेंशन को जोड़ता है) साफ़-सुथरे ढंग से ONNX या CoreML में बदल जाता है। एक Qwen3-आधारित स्पीच मॉडल, अंदर से, एक भाषा मॉडल है, इसलिए वह इसके बजाय स्वाभाविक रूप से GGUF/llama.cpp पाइपलाइन में फ़िट बैठता है।

क्वांटाइज़ेशन की क़ीमत क्या है, और यह क्या देता है

क्वांटाइज़ेशन का मतलब है किसी मॉडल के वेट्स को प्रति संख्या कम बिट्स के साथ संग्रहीत करना — 16-बिट या 8-बिट या 4-बिट, उन 32-बिट फ़्लोट्स के बजाय जिनसे इसे प्रशिक्षित किया गया था। छोटी संख्याएँ एक छोटी फ़ाइल बनाती हैं और, उपयुक्त हार्डवेयर पर, तेज़ इन्फ़रेंस, क्योंकि हिलाने के लिए कम डेटा है और करने के लिए सस्ता अंकगणित है।

हम एक असली मॉडल के लिए इस समझौते पर एक सटीक आँकड़ा रख सकते हैं। nvidia/parakeet-tdt-0.6b-v3 एक 0.6-अरब-पैरामीटर वाला ASR मॉडल है। इसका CoreML mel-encoder घटक पूर्ण परिशुद्धता पर 1132.5 MB है; 4 बिट तक palettized करने पर यह 284.2 MB हो जाता है — एक 3.99x कमी, जो इसके तीनों उप-घटकों (encoder, decoder, joint-decision network) में लगभग बिल्कुल मेल खाती है। पूरे पैकेज में, अक्वांटाइज़्ड CoreML निर्यात लगभग 1.14 GB है; 4-बिट संस्करण लगभग 293 MB है। यही अंतर है एक ऐसे मॉडल के बीच जो एक फ़ोन पर आराम से फ़िट होता है और एक ऐसे मॉडल के बीच जो मुश्किल से फ़िट होता है।

क़ीमत सटीकता है: प्रति वेट कम बिट्स का मतलब है कम परिशुद्धता, और एक निश्चित बिंदु के बाद यह अधिक पहचान त्रुटियों के रूप में सामने आता है। ASR के लिए इसे मापने का मानक तरीक़ा WER (word error rate — सही ट्रांसक्रिप्ट की तुलना में मॉडल कितने प्रतिशत शब्द ग़लत करता है) है। इसीलिए हम एक ही मॉडल के कई क्वांटाइज़ेशन स्तरों को साथ-साथ प्रकाशित करते हैं — 4-बिट, 6-बिट, 8-बिट (int8), और fp16 — एक चुनकर यह उम्मीद करने के बजाय कि वह हर डिवाइस के लिए काफ़ी अच्छा होगा। एक फ़ोन और एक डेस्कटॉप उस वक्र पर अलग-अलग बिंदु वहन कर सकते हैं।

सत्यापन की समस्या

एक ऐसा रूपांतरण जो चुपचाप ख़राब आउटपुट देता है, बिना किसी रूपांतरण से भी अधिक ख़तरनाक है, क्योंकि उसके बारे में कुछ भी टूटा हुआ नहीं दिखता — यह लोड होता है, चलता है, बस यह वाणी को थोड़ा-सा ख़राब पहचानता है, या किसी ऐसी भाषा में बहुत ख़राब जिसे आप ख़ुद नहीं बोलते और कान से जाँच नहीं सकते। इसे पकड़ने का एकमात्र तरीक़ा है निर्यातित मॉडल के आउटपुट की तुलना असली संदर्भ कार्यान्वयन से करना, वास्तविक ऑडियो पर, हर भाषा और हर क्वांटाइज़ेशन स्तर के लिए, इसे प्रकाशित करने से पहले।

यह हमारे भेजे जाने वाले किसी भी रूपांतरण के लिए न्यूनतम अपेक्षा है: वही ऑडियो स्रोत मॉडल और रूपांतरित मॉडल दोनों से चलाएँ, और पुष्टि करें कि वे सहमत हैं। यह कोई चमकदार क़दम नहीं है, पर इसे छोड़ देना ही वह तरीक़ा है जिससे कोई “समर्थित भाषा” चुपचाप काम करना बंद कर देती है।

मॉडल हमारे बजाय OpenVoiceOS के अंतर्गत क्यों रहते हैं

मॉडल निर्यात एक कंपनी क्षमता है: हमें एक चेकपॉइंट और एक लक्ष्य डिवाइस दें, और हम इसे ऑफ़लाइन, सत्यापित, आपके हार्डवेयर के अनुरूप क्वांटाइज़ेशन स्तर पर चलाकर देंगे। पर ओपन, ग़ैर-नियुक्त चेकपॉइंट्स से हम जो रूपांतरित मॉडल तैयार करते हैं वे OpenVoiceOS के पास जाते हैं, वह ओपन वॉयस-असिस्टेंट प्लेटफ़ॉर्म जिस पर ये मॉडल चलने के लिए बनाए गए हैं — हमारे अपने नेमस्पेस के पास नहीं।

कारण सीधा-सादा है: OpenVoiceOS वह जगह है जहाँ मॉडलों का उपयोग होता है। एक कंपनी अकाउंट में बैठा रूपांतरित मॉडल एक अच्छी कलाकृति है। वही मॉडल वहाँ प्रकाशित होकर जहाँ ovos-stt-plugin-onnx-asr, ovos-stt-plugin-coreml, या ovos-stt-plugin-rover इसे नाम से खोज सकते हैं, वह एक ऐसी भाषा बन जाती है जिसे एक असली असिस्टेंट अब बोल या समझ सकता है। प्लेटफ़ॉर्म के अपने संगठन के अंतर्गत प्रकाशित करना ही वह चीज़ है जो एक रूपांतरण को केवल एक रिसर्च जिज्ञासा के बजाय समर्थित कार्यक्षमता में बदल देती है, और यही वह तरीक़ा है जिससे हम सुनिश्चित करते हैं कि यह काम एक बार करने से हर OpenVoiceOS इंस्टॉलेशन को फ़ायदा हो, न कि केवल उस ग्राहक को जिसने इसकी माँग की।

श्रेय के बारे में स्पष्ट रहने के लिए: हम इन ध्वनिक मॉडलों को शुरू से प्रशिक्षित नहीं करते, और हम ऐसा दावा भी नहीं करते। अंतर्निहित शोध — NVIDIA के Parakeet और Conformer मॉडल, भारतीय भाषाओं के लिए AI4Bharat के IndicConformer मॉडल, विश्वविद्यालय और सार्वजनिक-संस्थान मॉडल जैसे गैलिशिया का Proxecto Nós या बास्क HiTZ केंद्र के Conformer मॉडल, और अफ़्रीकी व अल्पसंख्यक भाषाओं के लिए मॉडल रूपांतरित करने के स्वतंत्र प्रयास — उन टीमों का है जिन्होंने उन्हें प्रशिक्षित किया। हम जो जोड़ते हैं वह है रूपांतरण, क्वांटाइज़ेशन, मूल के विरुद्ध शुद्धता जाँच, और वह प्लगइन वायरिंग जो किसी असिस्टेंट को परिणाम नाम से लोड करने देती है।

उस रूपांतरण काम का पैमाना, जो प्रकाशित हुआ है उससे सीधे गिना गया: नब्बे से अधिक Parakeet ASR वेरिएंट (आकारों, भाषाओं और क्वांटाइज़ेशन स्तरों में) ONNX और CoreML में निर्यातित; तीस से अधिक NVIDIA Conformer मॉडल; बाईस AI4Bharat IndicConformer मॉडल जो कम-संसाधन वाली भारतीय भाषाओं को कवर करते हैं; स्वीडिश, आइसलैंडिक, फ़ैरोइज़, फ़िनिश और नॉर्वेजियन के दोनों लिखित रूपों सहित भाषाओं के लिए बाईस wav2vec2 मॉडल; बास्क और गैलिशियन के लिए नौ Conformer मॉडल; और स्वतंत्र रूप से रूपांतरित Whisper और wav2vec2 मॉडल जो Shona, Zulu, Xhosa, Malagasy, हाईटियन क्रियोल और Kabyle जैसी अफ़्रीकी और क्रियोल भाषाओं को कवर करते हैं। केवल पुष्ट ASR रूपांतरणों को अलग भाषा कोड से गिनते हुए, यह आज उपलब्ध एक ऑफ़लाइन, क्वांटाइज़्ड स्पीच रिकग्नाइज़र के साथ कम से कम 74 अलग-अलग भाषाएँ हैं — बास्क, अरागोनी, अस्तूरियन, गैलिशियन, ओक्सितान और अरबी जैसी भाषाओं के लिए निर्यातित TTS आवाज़ों की अलग सूची गिनने से पहले।

अगर आपकी भाषा या आपके डिवाइस के पास आज कुछ भी ऑफ़लाइन नहीं है

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

अगर आपके पास कोई स्पीच मॉडल है जो केवल एक प्रशिक्षण GPU पर चलता है, या कोई डिवाइस जिसकी भाषा में अभी कोई ऑफ़लाइन स्पीच समर्थन नहीं है, तो संपर्क करें या देखें कि यह काम शुरू से अंत तक कैसा दिखता है हमारे सेवा पृष्ठ पर।