मल्टी-कॉन्टेक्स्ट WebSocket
मल्टी-कॉन्टेक्स्ट WebSocket
यह गाइड आपको मल्टी-कॉन्टेक्स्ट WebSocket API का इस्तेमाल करके रीयल-टाइम वॉइस एजेंट बनाने का तरीका बताती है।
इस मल्टी-कॉन्टेक्स्ट WebSocket API का उपयोग करके वॉइस एजेंट ऑर्केस्ट्रेट करना एक जटिल काम है, जिसकी सलाह उन्नत डेवलपर्स के लिए दी जाती है। ज़्यादा प्रबंधित समाधान के लिए, हमारे Agents Platform प्रोडक्ट को देखें, जो इनमें से कई चुनौतियों को आसान बनाता है।
परिचय
रिस्पॉन्सिव वॉइस एजेंट बनाने के लिए ऑडियो स्ट्रीम को डायनामिक रूप से मैनेज करने, इंटरप्शन को सहजता से संभालने और बातचीत के हर चरण में प्राकृतिक लगने वाली स्पीच बनाए रखने की क्षमता चाहिए। टेक्स्ट टू स्पीच (TTS) के लिए हमारा मल्टी-कॉन्टेक्स्ट WebSocket API खास तौर पर इन्हीं स्थितियों के लिए बनाया गया है।
यह API “कॉन्टेक्स्ट” की अवधारणा जोड़कर हमारी स्टैंडर्ड TTS WebSocket फ़ंक्शनैलिटी को बढ़ाता है। हर कॉन्टेक्स्ट एक ही WebSocket कनेक्शन के भीतर एक स्वतंत्र ऑडियो जनरेशन स्ट्रीम की तरह काम करता है। इससे आप ये काम कर सकते हैं:
- एक साथ स्पीच की कई लाइनों को मैनेज करना (जैसे, एजेंट बोलते हुए यूज़र के इंटरप्शन का जवाब तैयार कर रहा हो)।
- मौजूदा स्पीच कॉन्टेक्स्ट बंद करके और नया शुरू करके यूज़र के बीच में बोलने को आसानी से संभालना।
- एक ही लॉजिकल कॉन्टेक्स्ट में कथनों के लिए प्रोसोडिक एकरूपता बनाए रखना।
- अब ज़रूरत न रहने वाले कॉन्टेक्स्ट को चुनिंदा रूप से बंद करके रिसोर्स का बेहतर उपयोग करना।
मल्टी-कॉन्टेक्स्ट WebSocket API वॉइस एप्लिकेशन के लिए ऑप्टिमाइज़ किया गया है और इसका उद्देश्य एक साथ कई असंबंधित ऑडियो स्ट्रीम जनरेट करना नहीं है। इसी को ध्यान में रखते हुए, हर कनेक्शन में अधिकतम 5 कॉनकरेंट कॉन्टेक्स्ट हो सकते हैं।
यह गाइड आपको मल्टी-कॉन्टेक्स्ट WebSocket से कनेक्ट करने, कॉन्टेक्स्ट मैनेज करने और आकर्षक वॉइस एजेंट बनाने के लिए सर्वोत्तम तरीके अपनाने के बारे में बताएगी।
सर्वोत्तम तरीके
हमारे मल्टी-कॉन्टेक्स्ट WebSocket API के साथ रिस्पॉन्सिव और असरदार वॉइस एजेंट बनाने के लिए ये सर्वोत्तम तरीके ज़रूरी हैं।
एक ही WebSocket कनेक्शन इस्तेमाल करें
हर एंड-यूज़र सेशन के लिए एक WebSocket कनेक्शन बनाएं। कई कनेक्शन बनाने की तुलना में इससे ओवरहेड और लेटेंसी कम होती है। इस एक कनेक्शन में, आप बातचीत के अलग-अलग हिस्सों के लिए कई कॉन्टेक्स्ट मैनेज कर सकते हैं।
रिस्पॉन्स को चंक्स में स्ट्रीम करें, वाक्य जनरेट करें
लंबे रिस्पॉन्स जनरेट करते समय, टेक्स्ट को छोटे चंक्स में स्ट्रीम करें और पूरे वाक्यों के अंत में flush: true फ़्लैग
का इस्तेमाल करें। इससे जनरेट किए गए ऑडियो की क्वालिटी और रिस्पॉन्सिवनेस बेहतर होती है।
इंटरप्शन को सहजता से संभालें
इंटरप्शन होने तक एक कॉन्टेक्स्ट में टेक्स्ट स्ट्रीम करें, फिर नया कॉन्टेक्स्ट बनाएं और मौजूदा कॉन्टेक्स्ट बंद कर दें। बातचीत का प्रवाह बदलने पर यह तरीका सहज ट्रांज़िशन सुनिश्चित करता है।
कॉन्टेक्स्ट लाइफ़साइकल मैनेज करें
इस्तेमाल न होने वाले कॉन्टेक्स्ट तुरंत बंद करें। सर्वर हर कनेक्शन पर अधिकतम 5 कॉनकरेंट कॉन्टेक्स्ट बनाए रख सकता है, लेकिन ज़रूरत न रहने पर आपको कॉन्टेक्स्ट बंद कर देने चाहिए।
कॉन्टेक्स्ट टाइमआउट रोकें
कॉन्टेक्स्ट डिफ़ॉल्ट रूप से 20 सेकंड बाद टाइमआउट हो जाते हैं और अपने-आप बंद हो जाते हैं। इनऐक्टिविटी टाइमआउट एक WebSocket-लेवल पैरामीटर है, जो सभी कॉन्टेक्स्ट पर लागू होता है और ज़रूरत पड़ने पर 180 सेकंड तक हो सकता है। टाइमआउट घड़ी रीसेट करने के लिए कॉन्टेक्स्ट पर खाली टेक्स्ट मैसेज भेजें।
इंटरप्शन संभालना
जब कोई यूज़र आपके एजेंट को बीच में रोकता है, तो आपको मौजूदा कॉन्टेक्स्ट बंद करना चाहिए और नया कॉन्टेक्स्ट बनाना चाहिए:
कॉन्टेक्स्ट को सक्रिय रखना
कॉन्टेक्स्ट डिफ़ॉल्ट रूप से 20 सेकंड की निष्क्रियता के बाद अपने-आप टाइमआउट हो जाते हैं। अगर आपको टेक्स्ट जनरेट किए बिना कॉन्टेक्स्ट सक्रिय रखना है (उदाहरण के लिए, प्रोसेसिंग में देरी के दौरान), तो टाइमआउट घड़ी रीसेट करने के लिए आप खाली टेक्स्ट मैसेज भेज सकते हैं।
WebSocket कनेक्शन बंद करना
जब आपकी बातचीत खत्म हो जाए, तो आप सॉकेट बंद करके सभी कॉन्टेक्स्ट साफ़ कर सकते हैं:
पूरा कन्वर्सेशनल एजेंट उदाहरण
ज़रूरी चीज़ें
- API की वाला ElevenLabs अकाउंट (जानें कि अपनी API की कैसे ढूँढें)।
- आपकी मशीन पर Python या Node.js (या कोई अन्य JavaScript रनटाइम) इंस्टॉल होना चाहिए।
- WebSocket कम्यूनिकेशन की जानकारी। बुनियादी कॉन्सेप्ट समझने के लिए हम स्टैंडर्ड WebSocket स्ट्रीमिंग पर हमारी गाइड पढ़ने की सलाह देते हैं।
सेटअप
अपनी चुनी हुई भाषा के लिए ज़रूरी डिपेंडेंसी इंस्टॉल करें:
अपनी API की स्टोर करने के लिए प्रोजेक्ट डायरेक्टरी में .env फ़ाइल बनाएं: