LiveKit और FastAPI के साथ रियल-टाइम वॉइस AI बनाना

वॉइस AI का डेमो देना आसान है। प्रोडक्शन-ग्रेड वॉइस AI को लॉन्च करना कठिन है।

एक डेमो में केवल एक 'हैप्पी पाथ' (happy path) होता है और कोई लोड नहीं होता। प्रोडक्शन में जिटर (jitter), यूजर इंटरप्शन, रीकनेक्ट्स और प्रोवाइडर फेलियर जैसी चुनौतियां होती हैं। यदि आप इनके लिए डिज़ाइन नहीं करते हैं, तो आपका AI रोबोटिक लगेगा।

इन सिस्टम्स को बनाने के लिए केवल फ्रेमवर्क ट्रिक्स ही नहीं, बल्कि एक स्मार्ट आर्किटेक्चर की आवश्यकता होती है। आपको यह तय करना होगा कि 'स्टेट' (state) कहाँ रहेगी और लेटेंसी (latency) कैसे बढ़ती है।

एक मजबूत वॉइस AI स्टैक के लिए इन लेयर्स की आवश्यकता होती है:

• Client: माइक इनपुट कैप्चर करता है और ऑडियो प्ले करता है। • Voice session layer: ऑथेंटिकेशन और कनेक्शन लाइफसाइकिल को मैनेज करता है। • LiveKit room: लो-लेटेंसी मीडिया ट्रांसपोर्ट को हैंडल करता है। • STT pipeline: स्पीच को टेक्स्ट में बदलता है। • LLM orchestration: प्रॉम्प्ट्स और टूल कॉल्स को मैनेज करता है। • TTS pipeline: टेक्स्ट को ऑडियो के रूप में स्ट्रीम करता है। • Backend APIs: स्टेट और बिजनेस लॉजिक के लिए FastAPI सर्विसेज। • Observability: लेटेंसी ट्रैक करने के लिए मेट्रिक्स और लॉग्स।

लेयर्स को स्वतंत्र रखें। क्लाइंट में लॉजिक बहुत कम होना चाहिए। इसे केवल ऑडियो कैप्चर करना चाहिए और UI को संभालना चाहिए।

LiveKit के लिए शॉर्ट-लिव्ड टोकन जेनरेट करने के लिए FastAPI का उपयोग करें। इससे रूम एक्सेस सुरक्षित रहता है। सर्वर पर एक स्टेबल ID के साथ सेशन रिकॉर्ड स्टोर करें। यूजर ID, रूम ID और वर्तमान स्टेट को ट्रैक करें। जब कोई यूजर रीकनेक्ट होता है, तो बैकएंड तुरंत कॉन्टेक्स्ट को रिकवर कर लेता है।

वॉइस AI लेटेंसी का खेल है। यदि रिस्पॉन्स में देरी होती है, तो यूजर्स बीच में टोक देते हैं।

हर स्टेज के लिए एक लेटेंसी बजट सेट करें:

  • STT लेटेंसी
  • Orchestration लेटेंसी
  • टूल कॉल लेटेंसी
  • TTS स्टार्टअप टाइम
  • पहले ऑडियो बाइट तक का समय

इंटरप्शन (interruptions) को एक प्राइमरी फीचर के रूप में सपोर्ट करें। जब यूजर बोलता है, तो क्लाइंट को एक 'इंटरप्ट इवेंट' भेजना चाहिए। सिस्टम को वर्तमान TTS स्ट्रीम को कैंसिल कर देना चाहिए और रिस्पॉन्स को 'इंटरप्टेड' मार्क कर देना चाहिए। यह AI को अगले टर्न में पुराना (stale) कॉन्टेक्स्ट लीक करने से रोकता है।

रिट्राइज़ (retries) को सुरक्षित बनाएं। टूल कॉल्स के लिए 'इडम्पोटेंसी कीज़' (idempotency keys) का उपयोग करें। यह सुनिश्चित करता है कि यदि कोई रिक्वेस्ट फेल हो जाती है और उसे दोबारा किया जाता है, तो आप एक ही काम दो बार न करें, जैसे किसी ग्राहक से दो बार पैसे चार्ज करना।

उन मेट्रिक्स को ट्रैक करें जो यूजर एक्सपीरियंस के लिए महत्वपूर्ण हैं:

  • एंड-टू-एंड टर्न लेटेंसी
  • पहले ऑडियो बाइट तक का समय
  • प्रति सेशन इंटरप्ट रेट
  • रीकनेक्ट फ्रीक्वेंसी

वॉइस AI केवल एक LLM समस्या नहीं है। यह एक सिस्टम्स समस्या है। इसमें नेटवर्किंग, स्टेट, सिक्योरिटी और डिज़ाइन शामिल हैं।

एक मजबूत आधार बनाने के लिए LiveKit और FastAPI का उपयोग करें। प्रेडिक्टेबल कॉन्ट्रैक्ट्स, स्पष्ट स्टेट और टाइट लेटेंसी लूप्स पर ध्यान दें। इसी तरह आप ऐसा सॉफ्टवेयर बनाते हैं जो इंसानी महसूस होता है।

Source: https://dev.to/joshua_fields_0ecc952c450/building-real-time-voice-ai-applications-with-livekit-and-fastapi-pae

Optional learning community: https://t.me/GyaanSetuAi