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