स्पीच इंजन क्विकस्टार्ट
ElevenLabs SDK का इस्तेमाल करके अपने चैट एजेंट में वॉइस जोड़ें।
इस गाइड में बताया गया है कि स्पीच इंजन के साथ वॉइस-सक्षम एजेंट कैसे बनाएं। आप एक सर्वर सेट अप करेंगे जो आपके LLM को ElevenLabs से कनेक्ट करता है, फिर एक ब्राउज़र क्लाइंट जोड़ेंगे ताकि यूज़र आपके एजेंट के साथ वॉइस बातचीत कर सकें।
अपने चैट एजेंट में वॉइस जोड़ने के लिए ElevenLabs स्पीच इंजन स्किल का इस्तेमाल करें:
स्पीच इंजन कैसे काम करता है
स्पीच इंजन आपके LLM को ElevenLabs से कनेक्ट करता है, ताकि यूज़र आपके एजेंट से बात कर सकें और उसका जवाब सुन सकें। ElevenLabs स्पीच-टू-टेक्स्ट और टेक्स्ट-टू-स्पीच संभालता है; आपका सर्वर LLM लॉजिक देता है।
हर WebSocket कनेक्शन एक बातचीत को दर्शाता है। जब यूज़र बोलता है, ElevenLabs ऑडियो को ट्रांसक्राइब करके ट्रांसक्रिप्ट आपके सर्वर को भेजता है। आपका सर्वर इसे आपके LLM को भेजता है, फिर जवाब को वापस स्ट्रीम करता है। ElevenLabs टेक्स्ट को स्पीच में बदलता है और उसे ब्राउज़र में चलाता है। SDK कनेक्शन मैनेजमेंट, बारी-बारी से बोलना और इंटरप्शन डिटेक्शन संभालता है।
ज़रूरी शर्तें
इस ट्यूटोरियल में LLM के लिए OpenAI का API इस्तेमाल होता है। आपके पास OPENAI_API_KEY एनवायरनमेंट वेरिएबल में सेट की हुई OpenAI API कुंजी होनी चाहिए।
सर्वर सेटअप
API कुंजी बनाएं
डैशबोर्ड में यहां API key बनाएं, जिसका इस्तेमाल आप API एक्सेस करने के लिए सुरक्षित रूप से करेंगे।
key को मैनेज्ड सीक्रेट के रूप में स्टोर करें और अपनी पसंद के अनुसार इसे SDKs को .env फ़ाइल के ज़रिए एनवायरनमेंट वेरिएबल के रूप में या सीधे अपने ऐप के कॉन्फ़िगरेशन में पास करें।
सर्वर एक्सपोज़ करें
स्पीच इंजन को सार्वजनिक रूप से उपलब्ध URL चाहिए। अपने लोकल सर्वर को एक्सपोज़ करने के लिए ngrok का इस्तेमाल करें। सर्वर अभी बना नहीं है, लेकिन ngrok को पहले चलाना ज़रूरी है ताकि अगले चरण के लिए आपके पास URL हो।
फॉरवर्डिंग URL कॉपी करें (जैसे https://abc123.ngrok.io)।
स्पीच इंजन इंस्टेंस बनाएं
SDK का इस्तेमाल करके स्पीच इंजन इंस्टेंस बनाएं। WebSocket URL के रूप में अपने ngrok URL में /ws पाथ जोड़कर दें।
इस स्क्रिप्ट को चलाएं और अगले चरण के लिए स्पीच इंजन ID कॉपी करें (जैसे seng_8k3m9xr4hjnfg983brhmhkd98n6)।
सर्वर बनाएं
server.py या server.mts नाम की फ़ाइल बनाएं और उसमें नीचे दिया गया कंटेंट डालें। यह एक सर्वर सेट अप करता है, /ws पाथ पर स्पीच इंजन अटैच करता है और जवाब बनाने के लिए OpenAI का इस्तेमाल करता है।
onTranscript / on_transcript कॉलबैक को बातचीत का पूरा इतिहास और मौजूदा सेशन मिलता है। TypeScript SDK एक AbortSignal भी देता है, जो यूज़र के जवाब के बीच में इंटरप्ट करने पर ट्रिगर होता है। OpenAI कॉल में signal पास करने से इंटरप्शन होने पर LLM रिक्वेस्ट अपने-आप रद्द हो जाती है।
sendResponse() / send_response() एक स्ट्रिंग, async iterable या OpenAI, Anthropic या Google Gemini की स्ट्रीम स्वीकार करता है। SDK टेक्स्ट कंटेंट को अपने-आप एक्सट्रैक्ट कर लेता है।
ऊपर दिए गए उदाहरण में, यूज़र का पूरा ट्रांसक्रिप्ट LLM को भेजा जाता है। प्रोडक्शन एनवायरनमेंट में आपको किसी भी प्रॉम्प्ट इंजेक्शन या मैनिपुलेशन की कोशिश को रोकने के लिए गार्डरेल्स जोड़ने चाहिए।
क्लाइंट सेटअप
टोकन एंडपॉइंट बनाएं
ऐसा सर्वर-साइड एंडपॉइंट जोड़ें जो बातचीत का टोकन जनरेट करता हो। इससे आपकी API कुंजी ब्राउज़र से बाहर रहती है और बेहतरीन ऑडियो क्वालिटी के लिए WebRTC इस्तेमाल होता है।
बातचीत का UI बनाएं
अपने सर्वर से बातचीत का टोकन फ़ेच करें और उससे सेशन शुरू करें।
React
JavaScript
इसे आज़माएं
पक्का करें कि ये तीन प्रोसेस चल रहे हों:
- ngrok - पोर्ट 3001 पर फॉरवर्ड कर रहा हो
- आपका स्पीच इंजन सर्वर -
python server.pyयाnpx tsx server.mts - टोकन सर्वर -
npx tsx token-server.mtsयाpython token_server.py
अपनी क्लाइंट एप्लिकेशन को ब्राउज़र में खोलें और बातचीत शुरू करें पर क्लिक करें। प्रॉम्प्ट आने पर माइक्रोफ़ोन एक्सेस दें, फिर बोलें। आपको एजेंट का जवाब अपने स्पीकर्स से सुनाई देना चाहिए।
अगर सर्वर पर debug: true सक्षम है, तो आपको कंसोल में आने वाले ट्रांसक्रिप्ट और भेजे जाने वाले जवाब लॉग होते दिखेंगे।
सेशन इवेंट्स
एजेंट के पहले संदेश को कॉन्फ़िगर करना
डिफ़ॉल्ट रूप से एजेंट यूज़र के पहले बोलने का इंतज़ार करता है। बातचीत शुरू होने पर एजेंट से यूज़र का अभिवादन करवाने के लिए, सेशन शुरू करते समय क्लाइंट के overrides विकल्प में पहला संदेश सेट करें।
कनेक्शन बनते ही एजेंट पहला संदेश बोलता है। इससे आपके सर्वर पर onTranscript कॉलबैक ट्रिगर नहीं होता—इसे पूरी तरह ElevenLabs की ओर से संभाला जाता है।
बातचीत की अधिकतम अवधि कॉन्फ़िगर करना
डिफ़ॉल्ट रूप से, बातचीत 600 सेकंड (10 मिनट) बाद खत्म हो जाती है। स्पीच इंजन 2,400 सेकंड (40 मिनट) तक की बातचीत सपोर्ट करता है। लंबी बातचीत की अनुमति देने के लिए, स्पीच इंजन रिसोर्स में ज़्यादा max_duration_seconds सेट करें:
आप इसे डैशबोर्ड में भी सेट कर सकते हैं: अपना स्पीच इंजन खोलें, Advanced टैब पर जाएं और Conversational behavior में Max conversation duration सेट करें।
40 मिनट से लंबी बातचीत सपोर्ट नहीं की जाती और डिस्कनेक्ट हो सकती है, भले ही
max_duration_seconds को इससे ज़्यादा वैल्यू पर सेट किया गया हो। अगर आपको लंबी बातचीत चाहिए, तो हमारी
टीम से संपर्क करें।