LiveKit आणि FastAPI वापरून रिअल-टाइम Voice AI तयार करणे
Voice AI चे डेमो देणे सोपे आहे. पण प्रोडक्शन-ग्रेड Voice AI लाँच करणे कठीण आहे.
डेमोमध्ये एकच 'हॅपी पाथ' असतो आणि कोणताही लोड नसतो. प्रोडक्शनमध्ये जिटर (jitter), युजर इंटरप्शन (user interruptions), रिकनेक्ट्स आणि प्रोव्हायडर फेल्युअर यांसारख्या समस्या येतात. जर तुम्ही या गोष्टींसाठी डिझाइन केले नाही, तर तुमचे AI रोबोटिक वाटेल.
ही सिस्टम्स तयार करण्यासाठी केवळ फ्रेमवर्कच्या युक्त्या असून चालणार नाही, तर त्यासाठी स्मार्ट आर्किटेक्चरची आवश्यकता असते. 'स्टेट' (state) कुठे साठवायची आणि लॅटन्सी (latency) कशी वाढते, हे तुम्हाला ठरवावे लागेल.
एका भक्कम Voice AI स्टॅकसाठी खालील लेयर्सची आवश्यकता असते:
• Client: माईक इनपुट कॅप्चर करतो आणि ऑडिओ प्ले करतो. • Voice session layer: ऑथेंटिकेशन आणि कनेक्शन लाइफसायकल मॅनेज करते. • LiveKit room: लो-लॅटन्सी मीडिया ट्रान्सपोर्ट हाताळते. • STT pipeline: स्पीचचे टेक्स्टमध्ये रूपांतर करते. • LLM orchestration: प्रॉम्प्ट्स आणि टूल कॉल्स मॅनेज करते. • TTS pipeline: टेक्स्टला ऑडिओ स्वरूपात स्ट्रीम करते. • Backend APIs: स्टेट आणि बिझनेस लॉजिकसाठी FastAPI सर्व्हिसेस. • Observability: लॅटन्सी ट्रॅक करण्यासाठी मेट्रिक्स आणि लॉग्स.
लेयर्स स्वतंत्र ठेवा. क्लायंटमध्ये लॉजिक खूप कमी असावे. त्याने फक्त ऑडिओ कॅप्चर करणे आणि UI हाताळणे एवढेच करावे.
LiveKit साठी शॉर्ट-लिव्हड टोकन्स तयार करण्यासाठी FastAPI वापरा. यामुळे रूम ॲक्सेस सुरक्षित राहतो. सेशन रेकॉर्ड्स सर्व्हरवर एका स्टेबल ID सह साठवा. युजर ID, रूम ID आणि सध्याची स्टेट ट्रॅक करा. जेव्हा युजर पुन्हा कनेक्ट होतो, तेव्हा बॅकएंड लगेच कॉन्टेक्स्ट रिकव्हर करते.
Voice AI हा लॅटन्सीचा खेळ आहे. जर प्रतिसाद उशिरा आला, तर युजर मध्येच बोलू लागतात (interrupt करतात).
प्रत्येक टप्प्यासाठी लॅटन्सी बजेट सेट करा:
- STT लॅटन्सी
- Orchestration लॅटन्सी
- Tool call लॅटन्सी
- TTS स्टार्टअप वेळ
- पहिल्या ऑडिओ बाईटसाठी लागणारा वेळ
'इंटरप्शन'ला (interruptions) एक मुख्य फीचर म्हणून सपोर्ट करा. जेव्हा युजर बोलतो, तेव्हा क्लायंटने 'इंटरप्ट इव्हेंट' पाठवला पाहिजे. सिस्टमने सध्याचा TTS स्ट्रीम रद्द केला पाहिजे आणि प्रतिसाद 'इंटरप्टेड' म्हणून मार्क केला पाहिजे. यामुळे AI पुढील संवादात जुना (stale) कॉन्टेक्स्ट वापरणार नाही.
रिट्रायज (retries) सुरक्षित करा. टूल कॉल्ससाठी 'आयडेम्पोटन्सी कीज' (idempotency keys) वापरा. यामुळे जर एखादी रिक्वेस्ट फेल झाली आणि पुन्हा प्रयत्न केला गेला, तर तुम्ही तीच कृती दोनदा करणार नाही याची खात्री मिळते (उदा. ग्राहकाकडून दोनदा पैसे कापले जाणे).
युजर एक्सपिरियन्ससाठी महत्त्वाचे मेट्रिक्स ट्रॅक करा:
- एंड-टू-एंड टर्न लॅटन्सी
- पहिल्या ऑडिओ बाईटसाठी लागणारा वेळ
- प्रति सेशन इंटरप्ट रेट
- रिकनेक्ट फ्रिक्वेन्सी
Voice AI ही केवळ LLM ची समस्या नाही. ती एक सिस्टम्सची समस्या आहे. यामध्ये नेटवर्किंग, स्टेट, सिक्युरिटी आणि डिझाइन यांचा समावेश होतो.
पाया रचण्यासाठी LiveKit आणि FastAPI वापरा. प्रेडिक्टेबल कॉन्ट्रॅक्ट्स, स्पष्ट स्टेट आणि कमीत कमी लॅटन्सी लूप्सवर लक्ष केंद्रित करा. अशा प्रकारे तुम्ही मानवासारखे वाटणारे सॉफ्टवेअर तयार करू शकता.
Optional learning community: https://t.me/GyaanSetuAi
