Log in to leave a comment
No posts yet
हर महीने आने वाले ElevenLabs या OpenAI के TTS बिलों को देखकर आह निकल जाती है। एक इंडी गेम डेवलपर के लिए, API कॉल की लागत प्रोजेक्ट के अस्तित्व को खतरे में डालने वाला एक स्थिर खर्च है। Kokoro 82M एक Apache 2.0 लाइसेंस वाला ओपन-सोर्स मॉडल है, जो स्थानीय (local) वातावरण में व्यावसायिक स्तर की आवाज़ उत्पन्न करता है। 82 मिलियन मापदंडों से बने इस हल्के मॉडल को अपने पीसी पर चलाकर, आपको अब बाहरी सर्वर की नीति परिवर्तनों पर निर्भर रहने की आवश्यकता नहीं है।
स्थानीय मॉडल चलाते समय सबसे बड़ी चिंता गेम के फ्रेम रेट में गिरावट है। स्पीच सिंथेसिस के दौरान होने वाले CPU लोड को रोकने के लिए, आपको कंप्यूटिंग थ्रेड्स को मैन्युअल रूप से नियंत्रित करना होगा। Kokoro 82M StyleTTS 2 संरचना का अनुसरण करता है, इसलिए ONNX रनटाइम के साथ चलने पर यह सबसे कुशल होता है।
SessionOptions में intra_op_num_threads को कुल कोर के आधे से कम तक सीमित करें। यदि आपके पास 8-कोर CPU है, तो केवल 2-4 आवंटित करना ही पर्याप्त है।enable_cpu_mem_arena को सक्षम करें। यह बैकग्राउंड में ऑडियो जनरेट करते समय होने वाले सूक्ष्म अंतराल (lag) को ठीक करता है।asyncio कतार का उपयोग करें और जैसे ही डेटा का पहला चंक तैयार हो, उसे तुरंत ऑडियो डिवाइस पर भेजें।इस सेटिंग के साथ, आप पहली आवाज़ आने तक लगने वाले समय (TTFA) को 0.5 सेकंड से कम कर सकते हैं।
चाहे Kokoro 82M कितना भी शानदार क्यों न हो, अगर यह 'API' को 'आपी' पढ़ता है या '10%' को ठीक से हैंडल नहीं कर पाता, तो उपयोगकर्ता का अनुभव खराब हो जाता है। चूँकि यह मॉडल अंतर्राष्ट्रीय ध्वन्यात्मक वर्णमाला (IPA) पर आधारित है, इसलिए इनपुट टेक्स्ट को सामान्य (normalize) करने की प्रक्रिया अनिवार्य है।
केवल टेक्स्ट न डालें, बल्कि एक रेगुलर एक्सप्रेशन मैपिंग डिक्शनरी बनाएँ। r'\bAPI\b' को 'एआई-पीआई-आई' के रूप में, और संख्याओं को 'एक', 'एक प्रतिशत' की तरह संदर्भ के अनुसार कोरियाई में बदलकर भेजा जाना चाहिए। विशेष रूप से कोरियाई भाषा के अद्वितीय उच्चारण नियमों के लिए korean-text-normalizer जैसी लाइब्रेरी का उपयोग सहायक होता है। इससे आप ऑडियो फाइलों को मैन्युअल रूप से संपादित करने में लगने वाले प्रति सप्ताह 5 घंटे बचा सकते हैं।
मौजूदा OpenAI SDK कोड को पूरी तरह से बदलने की आवश्यकता नहीं है। लोकल होस्ट पर FastAPI के साथ एक हल्का सर्वर चलाकर, आप केवल एक एंडपॉइंट एड्रेस बदलकर सशुल्क API को प्रतिस्थापित कर सकते हैं।
/v1/audio/speech पाथ बनाएँ और इसे OpenAI मानक के JSON डेटा को स्वीकार करने के लिए डिज़ाइन करें।INT8 क्वांटाइज्ड मॉडल लोड करें। इसकी अनुमान गति सामान्य मॉडल की तुलना में 3 गुना तेज़ है, जबकि ध्वनि की गुणवत्ता में अंतर न के बराबर है।pydub के साथ प्रोसेस करें और तुरंत .mp3 या .wav के रूप में वापस करें।इस तरह, आप सशुल्क सेवाओं पर निर्भर कोड बेस को बनाए रखते हुए हर महीने जाने वाले सदस्यता शुल्क को पूरी तरह समाप्त कर सकते हैं।
हल्के मॉडल की एक सीमा यह है कि 500 से अधिक वर्णों वाले लंबे वाक्यों को एक बार में संसाधित करते समय, अंत में उच्चारण खराब हो सकता है या मैकेनिकल शोर मिल सकता है। इसे हल करने के लिए, वाक्यों को बुद्धिमानी से विभाजित करना होगा।
पूर्ण विराम और अल्पविराम के आधार पर वाक्यों को विभाजित करें, फिर AudioSegment.silent का उपयोग करके वाक्यों के बीच 200-500ms का मौन (silence) मैन्युअल रूप से डालें। केवल मानवीय श्वसन चक्र का अनुकरण करने से ही मॉडल का अटपटापन गायब हो जाता है। यह केवल टेक्स्ट को विभाजित करने के बारे में नहीं है, बल्कि ऑडियो टुकड़ों को स्वाभाविक रूप से जोड़ने वाला 'सीमलेस प्लेबैक लॉजिक' मुख्य है। इस प्रक्रिया को स्वचालित करके, लंबे संवादों को भी बिना किसी रुकावट के स्वाभाविक अभिनय की तरह सुनाया जा सकता है।