Unity SDK
ElevenAgents SDK: अपने Unity गेम्स में कस्टमाइज़ किए गए, इंटरैक्टिव वॉइस एजेंट डिप्लॉय करें।
ElevenAgents कैसे काम करता है, इसकी जानकारी के लिए ElevenAgents ओवरव्यू देखें।
ElevenAgents Unity SDK एक Unity सीन को ElevenLabs एजेंट से कनेक्ट करता है। यह खिलाड़ी का माइक्रोफ़ोन कैप्चर करता है, एजेंट की वॉइस को AudioSource से वापस स्ट्रीम करता है और सेशन को एक ही Conversation API के ज़रिए उपलब्ध कराता है, जो Editor, डेस्कटॉप स्टैंडअलोन प्लेयर्स और WebGL बिल्ड्स में एक जैसा व्यवहार करता है।
ज़रूरी शर्तें
- Unity 6.3 LTS (
6000.3.0f1) या उसके बाद का वर्शन। SDK Unity 6.3 में पेश किए गए scriptable-audio APIs का इस्तेमाल करता है। - Api Compatibility Level को .NET Standard 2.1 पर सेट करें, जो Unity 2023.1 और उसके बाद के वर्शन के लिए डिफ़ॉल्ट है।
- एक ElevenLabs अकाउंट और एजेंट। डैशबोर्ड में बनाएं या क्विकस्टार्ट अपनाएं।
प्लेटफ़ॉर्म सपोर्ट
SDK सक्रिय बिल्ड टारगेट के लिए ट्रांसपोर्ट अपने-आप चुनता है। WebRTC सिर्फ़ WebGL पर उपलब्ध है; हर दूसरे टारगेट पर ConnectionType.WebRTC, NotSupportedException थ्रो करता है।
SDK माइक्रोफ़ोन अनुमति नहीं मांगता। iOS और Android पर सेशन शुरू करने से पहले इसे खुद मांगें।
इंस्टॉलेशन
Unity में Window > Package Manager खोलें, + > Install package from git URL चुनें और रिपॉज़िटरी URL पेस्ट करें:
Package Manager, अपनी डिपेंडेंसी Input System और Newtonsoft Json के साथ पैकेज को ElevenAgents (io.elevenlabs.agents) के रूप में इंस्टॉल करता है।
पैकेज में दो सैंपल आते हैं। उन्हें Package Manager > ElevenAgents > Samples से इंपोर्ट करें। QuickStart एक MonoBehaviour है जो लाइव ट्रांसक्रिप्ट दिखाता है। GettingStarted स्पेशल ऑडियो और डायनामिक वेरिएबल्स वाला walk-up-and-talk सीन है। चरण-दर-चरण गाइड के लिए Getting started walkthrough देखें।
क्विकस्टार्ट
यह सेक्शन एक खाली सीन में वॉइस एजेंट जोड़ता है। Play Mode में जाने पर एजेंट बात करना शुरू करता है और बाहर आने पर सेशन समाप्त हो जाता है।
एक पब्लिक एजेंट बनाएं
ElevenLabs डैशबोर्ड में एजेंट बनाएं। एजेंट की Security सेटिंग्स में Authentication बंद करें, ताकि गेम सिर्फ़ एजेंट ID से कनेक्ट हो सके। एजेंट ID कॉपी करें।
जिन एजेंट के लिए ऑथेंटिकेशन ज़रूरी है, उनके लिए पब्लिक और प्राइवेट एजेंट देखें।
पब्लिक और प्राइवेट एजेंट
पब्लिक एजेंट
प्राइवेट एजेंट
एजेंट ID सीधे पास करें। ID वाला कोई भी व्यक्ति एजेंट के साथ बातचीत शुरू कर सकता है।
AgentId, SignedUrl या ConversationToken में से ठीक एक सेट करें। अपनी खुद की सिस्टम में बातचीत को खिलाड़ी से जोड़ने के लिए UserId सेट करें।
स्पेशल ऑडियो
डिफ़ॉल्ट रूप से SDK, अपने बनाए हुए छिपे AudioSource से एजेंट की वॉइस चलाता है। वॉइस को सीन में रखने के लिए अपना AudioSource, OutputAudioSource के रूप में पास करें:
SDK सोर्स का spatial blend, rolloff, mixer routing और पोज़िशन बनाए रखता है। सेशन समाप्त होने पर यह सोर्स की clip, loop और volume सेटिंग्स को वापस बहाल करता है।
एजेंट की वॉइस से माउथ ऐनिमेशन जैसे विज़ुअल इफ़ेक्ट को चलाने के लिए, हर फ़्रेम conversation.GetOutputVolume() पढ़ें। यह हर प्लेटफ़ॉर्म पर 0 और 1 के बीच वैल्यू रिटर्न करता है।
पर्सनलाइज़ेशन
एजेंट के प्रॉम्प्ट और पहले संदेश में प्लेसहोल्डर भरने के लिए डायनामिक वेरिएबल्स और एक सेशन के लिए एजेंट कॉन्फ़िगरेशन के हिस्से बदलने के लिए ओवरराइड्स इस्तेमाल करें:
डायनामिक वेरिएबल वैल्यू स्ट्रिंग, नंबर या बूलियन होनी चाहिए। सर्वर के स्वीकार करने से पहले हर ओवरराइड को एजेंट की Security सेटिंग्स में सक्षम करना होगा।
क्लाइंट टूल्स
क्लाइंट टूल्स, एजेंट को आपके गेम में ऐक्शन ट्रिगर करने देते हैं। एजेंट की सेटिंग्स में टूल परिभाषित करें, फिर उसी नाम से हैंडलर रजिस्टर करें:
SDK, Newtonsoft Json के साथ टूल पैरामीटर को TParams में deserialize करता है, इसलिए पैरामीटर का नाम प्रॉपर्टी नाम से अलग होने पर [JsonProperty] इस्तेमाल करें। रिटर्न वैल्यू टूल रिज़ल्ट के रूप में serialize होती है। असिंक्रोनस हैंडलर के लिए Awaitable<TResult> रिटर्न करें। एजेंट को खास विफलता बताने के लिए errorType के साथ ClientToolException थ्रो करें; किसी भी अन्य exception को सामान्य error के रूप में रिपोर्ट किया जाता है।
रजिस्टर किए गए हैंडलर के बिना टूल कॉल करने पर ErrorOccurred ट्रिगर होता है, या अगर आपने इसे subscribe किया है तो UnhandledClientToolCall।
इवेंट्स
StartSessionAsync से रिटर्न हुए Conversation के इवेंट्स को subscribe करें। SDK इन्हें Unity के main thread पर ट्रिगर करता है।
Connected इवेंट, StartSessionAsync के रिटर्न होने से पहले ट्रिगर होता है, इसलिए कॉल पूरा होने पर सीधे ConversationId और Status पढ़ें। पैकेज चेंजलॉग में इवेंट्स की पूरी सूची है।
मेथड्स
उदाहरण के लिए, जब खिलाड़ी किसी नए क्षेत्र में प्रवेश करे तो उसकी मौजूदा लोकेशन एजेंट को भेजें:
WebGL बिल्ड्स
WebGL बिल्ड्स को एक अतिरिक्त Player Setting चाहिए। Player Settings > WebGL > Publishing Settings में Use WebAssembly.Table चालू करें। यह सेटिंग बंद होने पर SDK निर्देशों के साथ बिल्ड को विफल कर देता है।
WebGL पर Unity में कोई scriptable audio pipeline नहीं है, इसलिए SDK ब्राउज़र के Web Audio API से एजेंट की वॉइस चलाता है और आपके OutputAudioSource की वॉल्यूम, पोज़िशन और स्पेशल सेटिंग्स को मिरर करता है। इसलिए AudioSource.GetOutputData और OnAudioFilterRead, WebGL पर साइलेंस रिटर्न करते हैं। इसके बजाय GetOutputVolume() और GetOutputByteFrequencyData() इस्तेमाल करें।
सक्रिय बिल्ड टारगेट WebGL होने पर Editor में Play Mode अभी समर्थित नहीं है। Editor में टेस्ट करने के लिए डेस्कटॉप बिल्ड टारगेट पर स्विच करें।
पूरी WebGL कंपैटिबिलिटी मैट्रिक्स के लिए COMPATIBILITY.md देखें।
समस्या निवारण
StartSessionAsync,ArgumentExceptionथ्रो करता है।AgentId,SignedUrlयाConversationTokenमें से ठीक एक सेट करें।- मान्य एजेंट ID के लिए सेशन कनेक्ट नहीं हो पाता। एजेंट को ऑथेंटिकेशन चाहिए। ऑथेंटिकेशन बंद करें या signed URL से कनेक्ट करें।
- ओवरराइड का कोई असर नहीं होता। एजेंट की Security सेटिंग्स में उससे मेल खाता ओवरराइड सक्षम करें।
- खिलाड़ी को WebGL पर कुछ सुनाई नहीं देता। ब्राउज़र तब तक ऑडियो सस्पेंड रखते हैं, जब तक खिलाड़ी पेज के साथ इंटरैक्ट नहीं करता। क्लिक या की प्रेस के बाद सेशन शुरू करें।
- WebGL पर माइक्रोफ़ोन उपलब्ध नहीं है। ब्राउज़र सिर्फ़ HTTPS पर या
localhostसे सर्व किए गए पेजों को माइक्रोफ़ोन एक्सेस देते हैं।
GitHub पर बग रिपोर्ट करें और फ़ीचर का अनुरोध करें।