स्पीच इंजन क्विकस्टार्ट
ElevenLabs SDK का इस्तेमाल करके अपने चैट एजेंट में वॉइस जोड़ें।
यह गाइड आपको स्पीच इंजन के साथ वॉइस-सक्षम एजेंट बनाना सिखाती है। आप एक सर्वर सेट अप करेंगे जो आपके LLM को ElevenLabs से जोड़ता है, फिर एक ब्राउज़र क्लाइंट जोड़ेंगे ताकि यूज़र आपके एजेंट से वॉइस बातचीत कर सकें।
अपने चैट एजेंट में वॉइस जोड़ने के लिए ElevenLabs स्पीच इंजन स्किल का इस्तेमाल करें:
स्पीच इंजन कैसे काम करता है
स्पीच इंजन आपके LLM को ElevenLabs से जोड़ता है, ताकि यूज़र आपके एजेंट से बोल सकें और उसका जवाब सुन सकें। ElevenLabs स्पीच-टू-टेक्स्ट और टेक्स्ट-टू-स्पीच संभालता है; आपका सर्वर LLM लॉजिक प्रदान करता है।
हर WebSocket कनेक्शन एक बातचीत को दर्शाता है। जब यूज़र बोलता है, ElevenLabs ऑडियो ट्रांसक्राइब करके ट्रांसक्रिप्ट आपके सर्वर पर भेजता है। आपका सर्वर इसे आपके LLM को भेजता है, फिर रिस्पॉन्स वापस स्ट्रीम करता है। ElevenLabs टेक्स्ट को स्पीच में बदलता है और उसे ब्राउज़र में चलाता है। SDK कनेक्शन मैनेजमेंट, टर्न-टेकिंग और इंटरप्शन डिटेक्शन संभालता है।
ज़रूरी शर्तें
यह ट्यूटोरियल LLM के लिए OpenAI की API इस्तेमाल करता है। आपको OPENAI_API_KEY एनवायरनमेंट वेरिएबल में एक OpenAI API की सेट करनी होगी।
सर्वर सेटअप
API की बनाएं
डैशबोर्ड में यहां API कुंजी बनाएं, जिसका इस्तेमाल आप सुरक्षित रूप से API एक्सेस करने के लिए करेंगे।
अपनी पसंद के अनुसार, कुंजी को मैनेज्ड सीक्रेट के रूप में स्टोर करें और इसे SDKs को .env फ़ाइल के ज़रिए एनवायरनमेंट वेरिएबल के रूप में या सीधे अपने ऐप के कॉन्फ़िगरेशन में भेजें।
सर्वर एक्सपोज़ करें
स्पीच इंजन को सार्वजनिक रूप से उपलब्ध URL चाहिए। अपना लोकल सर्वर एक्सपोज़ करने के लिए ngrok इस्तेमाल करें। सर्वर अभी बना नहीं है, लेकिन ngrok को पहले चलना होगा, ताकि अगले चरण के लिए आपके पास URL हो।
फ़ॉरवर्डिंग URL कॉपी करें (जैसे, https://abc123.ngrok.io)।
स्पीच इंजन इंस्टेंस बनाएं
SDK का इस्तेमाल करके स्पीच इंजन इंस्टेंस बनाएं और WebSocket URL के रूप में /ws पाथ जोड़कर अपना ngrok URL पास करें।
यह स्क्रिप्ट चलाएं और अगले चरण के लिए स्पीच इंजन 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 का इस्तेमाल होता है।
आजमाएं
पक्का करें कि ये तीन प्रोसेस चल रहे हैं:
- ngrok - पोर्ट 3001 पर फ़ॉरवर्डिंग
- आपका स्पीच इंजन सर्वर -
python server.pyयाnpx tsx server.mts - टोकन सर्वर -
npx tsx token-server.mtsयाpython token_server.py
ब्राउज़र में अपना क्लाइंट एप्लिकेशन खोलें और Start conversation पर क्लिक करें। प्रॉम्प्ट आने पर माइक्रोफ़ोन ऐक्सेस दें, फिर बोलें। आपको स्पीकर से एजेंट का रिस्पॉन्स सुनाई देना चाहिए।
अगर आपने सर्वर पर debug: true चालू किया है, तो आपको कंसोल में आने वाले ट्रांसक्रिप्ट और बाहर जाने वाले रिस्पॉन्स लॉग होते दिखेंगे।
सेशन इवेंट्स
एजेंट का पहला मैसेज कॉन्फ़िगर करना
डिफ़ॉल्ट रूप से, एजेंट पहले यूज़र के बोलने का इंतज़ार करता है। बातचीत शुरू होने पर एजेंट से यूज़र का अभिवादन करवाने के लिए, सेशन शुरू करते समय क्लाइंट में overrides विकल्प में पहला मैसेज सेट करें।
कनेक्शन स्थापित होते ही एजेंट पहला मैसेज बोलता है। इससे आपके सर्वर पर onTranscript कॉलबैक ट्रिगर नहीं होता - इसे पूरी तरह ElevenLabs की तरफ़ संभाला जाता है।
बातचीत की अधिकतम अवधि कॉन्फ़िगर करना
डिफ़ॉल्ट रूप से, एक बातचीत 600 सेकंड (10 मिनट) बाद खत्म हो जाती है। स्पीच इंजन 7,200 सेकंड (2 घंटे) तक की बातचीत सपोर्ट करता है। लंबी बातचीत की अनुमति देने के लिए, स्पीच इंजन रिसोर्स को ज़्यादा max_duration_seconds के साथ अपडेट करें:
आप इसे डैशबोर्ड में भी सेट कर सकते हैं: अपना स्पीच इंजन खोलें, Advanced टैब पर जाएं और Conversational behavior में Max conversation duration सेट करें।