पेश है Eleven v4पेश है Eleven v4, हमारा अब तक का सबसे भावपूर्ण मॉडल।

कंटेंट पर जाएं

ElevenAgents के साथ अपने Unity NPCs को आवाज़ दें

लेखक
Tadas Petra
प्रकाशित
आखिरी बार अपडेट किया गया

सुनेंइस आर्टिकल को सुनें

अब खिलाड़ी आपके Unity गेम में किसी किरदार के पास जाकर उससे ज़ोर से बात कर सकते हैं। नया ElevenAgents Unity SDK किसी सीन को ElevenLabs वॉइस एजेंट से जोड़ता है। यह खिलाड़ी के माइक्रोफ़ोन से सुनता है, एजेंट की आवाज़ AudioSource के ज़रिए चलाता है और सेशन को Conversation API के ज़रिए चलाता है।

वही कोड Editor, डेस्कटॉप बिल्ड और WebGL में चलता है, जबकि iOS, Android और XR बीटा में हैं।

बातचीत शुरू करें

सेशन के लिए ElevenLabs डैशबोर्ड में बनाए गए एजेंट की ID चाहिए, जिसमें प्रॉम्प्ट और आवाज़ होती है। SDK के साथ शामिल हमारे GettingStarted सैंपल में, किरदार के चारों ओर एक ट्रिगर कोलाइडर खिलाड़ी के अंदर आने पर सेशन खोलता है और बाहर जाने पर बंद करता है:

private Conversation activeConversation;

private void OnTriggerEnter(Collider other) => _ = StartTalkingAsync();
private void OnTriggerExit(Collider other) => _ = StopTalkingAsync();

private async Awaitable StartTalkingAsync()
{
    var options = new ConversationOptions { AgentId = agentId };
    activeConversation = await Conversation.StartSessionAsync(options);
}

private async Awaitable StopTalkingAsync()
{
    if (activeConversation == null)
        return;
    await activeConversation.EndSession();
    activeConversation = null;
}

कनेक्शन खुलने और ऑडियो डिवाइस तैयार होने पर StartSessionAsync रिटर्न करता है, और बिल्ड टारगेट के लिए सही ट्रांसपोर्ट चुनता है। सेशन पहले ही खत्म हो चुका हो, तो EndSession कुछ नहीं करता।

SDK में क्या है

किरदार से आती आवाज़ें

डिफ़ॉल्ट रूप से एजेंट की आवाज़ 2D में चलती है। अपना AudioSource OutputAudioSource के रूप में पास करें, तो आवाज़ किरदार से आएगी।

GetOutputVolume() हर प्लेटफ़ॉर्म पर एजेंट का मौजूदा लेवल 0 से 1 के बीच रिटर्न करता है। सैंपल इसका इस्तेमाल बात करते समय क्यूब को ऊपर-नीचे हिलाने के लिए करता है, और इसी तरह यह मुँह के ऐनिमेशन को भी चला सकता है।

एक एजेंट, कई किरदार

डायनामिक वेरिएबल्स एजेंट के प्रॉम्प्ट और पहले मैसेज में {{mood}} जैसे प्लेसहोल्डर्स भरते हैं, इसलिए हर किरदार अपना सेशन शुरू होने पर अपनी वैल्यू भेज सकता है। वैल्यू स्ट्रिंग, नंबर या बूलियन हो सकती हैं। सैंपल में एक पीला खुश क्यूब और एक लाल गुस्सैल क्यूब एक ही एजेंट शेयर करते हैं:

var options = new ConversationOptions
{
    AgentId = agentId,
    OutputAudioSource = audioSource,
    DynamicVariables = new Dictionary<string, object>
    {
        ["color"] = "red",
        ["mood"] = "angry",
    },
};

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

ऐसे किरदार जिन्हें पता हो कि क्या हो रहा है

SendContextualUpdate एजेंट को बातचीत के बीच गेम इवेंट्स के बारे में बताता है, बिना उसे रोके या खिलाड़ी की न कही हुई टर्न जोड़े:

activeConversation.SendContextualUpdate("The player picked up the cellar key.");

गेम में काम करने वाले किरदार

क्लाइंट टूल्स एजेंट को गेम कोड ट्रिगर करने देते हैं। एजेंट की सेटिंग्स में टूल तय करें, फिर उसी नाम से एक हैंडलर रजिस्टर करें:

activeConversation.RegisterTool<OpenDoorParams, string>("open_door", parameters =>
{
    DoorRegistry.Open(parameters.DoorId);
    return $"Door {parameters.DoorId} is open.";
});

SDK, टूल के पैरामीटर्स को Newtonsoft Json से डीसिरियलाइज़ करता है और हैंडलर जो भी रिटर्न करता है, उसे एजेंट को वापस भेजता है। हैंडलर समय लेने वाले काम के लिए Awaitable रिटर्न कर सकते हैं और किसी काम के फेल होने का कारण एजेंट को बताने के लिए ClientToolException थ्रो कर सकते हैं।

इवेंट्स और कंट्रोल्स

UserTranscriptReceived, AgentResponded, ModeChanged और Interrupted जैसे इवेंट्स Unity के मेन थ्रेड पर फायर होते हैं, इसलिए आप सीधे उनसे UI अपडेट कर सकते हैं। मेथड्स SendUserMessage से टेक्स्ट इनपुट, SetMicMuted से म्यूट करना, SetVolume, विज़ुअलाइज़र्स के लिए फ़्रीक्वेंसी डेटा और सेशन के बीच इनपुट या आउटपुट डिवाइस बदलने को कवर करते हैं। Unity SDK डॉक्स में ये सभी दिए गए हैं।

प्लेटफ़ॉर्म सपोर्ट

SDK हर टारगेट के लिए ट्रांसपोर्ट चुनता है।

Platform
Status
Transport
Editor and desktop (macOS, Windows, Linux)
Supported
WebSocket
WebGL
Supported
WebSocket or WebRTC
iOS, Android, XR
Beta
WebSocket
  • iOS और Android: सेशन शुरू करने से पहले माइक्रोफ़ोन की अनुमति माँगें।
  • WebGL: Publishing Settings में Use WebAssembly.Table चालू करें। अगर यह बंद है, तो SDK निर्देशों के साथ बिल्ड को फेल कर देता है। WebGL ऐक्टिव बिल्ड टारगेट होने पर Play Mode काम नहीं करता, इसलिए डेस्कटॉप टारगेट पर टेस्ट करें।
  • WebGL ऑडियो: आवाज़ Web Audio API के ज़रिए चलती है, इसलिए मिक्सर रूटिंग और डॉप्लर जैसी कुछ AudioSource सेटिंग्स लागू नहीं होतीं। WebRTC सेशन OutputAudioSource को अनदेखा करते हैं।

पूरी सूची कंपैटिबिलिटी नोट्स में है।

शुरू करें

  1. ElevenLabs डैशबोर्ड में एक एजेंट बनाएं। पहले टेस्ट के लिए इसकी सुरक्षा सेटिंग्स में ऑथेंटिकेशन बंद कर दें, ताकि गेम केवल एजेंट ID से कनेक्ट कर सके।
  2. Unity में Window > Package Manager > + > Install package from git URL खोलें और रिलीज़ पिन करें: https://github.com/elevenlabs/unity.git#v0.1.0
  3. GettingStarted सैंपल इंपोर्ट करें, अपनी एजेंट ID पेस्ट करें और Play दबाएं।

चेतावनी: शिप करने से पहले ऑथेंटिकेशन फिर से चालू करें। इसके बाद आपका अपना सर्वर एक शॉर्ट-लिव्ड साइन्ड URL रिक्वेस्ट करता है और गेम उसे AgentId की जगह SignedUrl के रूप में पास करता है। अपने ElevenLabs API की को कभी भी गेम बिल्ड में न डालें।

शुरू करने की गाइड में करीब 10 मिनट लगते हैं और अंत में आपके पास एक ऐसा क्यूब होता है जो पास जाने पर आपका अभिवादन करता है। बाकी सभी जानकारी के लिए Unity SDK डॉक्स पढ़ें और बग्स व फ़ीचर रिक्वेस्ट्स GitHub issues पर भेजें।

लेखक

Tadas Petra एक डेवलपर रिलेशंस इंजीनियर हैं, जो डेवलपर्स को ElevenLabs के प्रोडक्ट्स के साथ काम करने में मदद करते हैं। वह Hungrimind के फाउंडर भी हैं, जो एक डेवलपर एजुकेशन प्लेटफॉर्म है। इससे पहले, वह Agora में लीड डेवलपर एडवोकेट और Zero To Mastery में इंस्ट्रक्टर थे।

संबंधित लेख

उच्चतम गुणवत्ता वाले AI ऑडियो के साथ बनाएं