- ब्राउज़र माइक्रोफ़ोन का उपयोग करके AI के साथ प्राकृतिक वॉइस बातचीत रियल-टाइम में की जा सकती है
- STT → LLM → TTS फ़्लो के ज़रिए उपयोगकर्ता की आवाज़ को टेक्स्ट में बदला जाता है, और AI के जवाब को फिर से आवाज़ में बदलकर चलाया जाता है
- मुख्य घटक हैं FastAPI server, WebSocket streaming, Pod-आधारित voice processing module, और विभिन्न LLM backend
- Docker-आधारित deployment environment दिया गया है, और GPU उपयोग करने पर और कम latency तथा बेहतर performance की उम्मीद की जा सकती है
- user interrupt detection, model switching, voice selection जैसे advanced settings में बदलाव की उच्च customization क्षमता वाला environment प्रदान करता है
रियल-टाइम AI वॉइस चैट
- यह प्रोजेक्ट रियल-टाइम द्विदिश वॉइस बातचीत के लिए डिज़ाइन किया गया client-server architecture है
- उपयोगकर्ता ब्राउज़र में बोलता है, और AI जवाब आवाज़ के रूप में लौटाता है
- interrupt handling, partial text response display, और विभिन्न TTS selection संभव हैं
मुख्य कार्य प्रवाह
- वॉइस इनपुट: ब्राउज़र में उपयोगकर्ता की आवाज़ capture की जाती है
- स्ट्रीमिंग ट्रांसमिशन: audio chunk को WebSocket के माध्यम से Python backend में भेजा जाता है
- वॉइस पहचान:
RealtimeSTT आवाज़ को टेक्स्ट में बदलता है
- LLM प्रोसेसिंग: टेक्स्ट को LLM को भेजकर जवाब तैयार किया जाता है
- वॉइस रूपांतरण:
RealtimeTTS जवाब के टेक्स्ट को आवाज़ में बदलता है
- जवाब प्लेबैक: तैयार की गई आवाज़ को फिर से ब्राउज़र तक stream किया जाता है
- interrupt detection: उपयोगकर्ता के बीच में बोलने को अपने-आप detect और process किया जाता है
मुख्य फीचर
- रियल-टाइम वॉइस बातचीत और partial transcription/response preview
- कम latency के लिए audio chunk-आधारित streaming
- static/dynamic silence detection (turn detection) समर्थन
- विभिन्न LLM backend: डिफ़ॉल्ट रूप से Ollama, वैकल्पिक रूप से OpenAI
- कई TTS engine का समर्थन: Kokoro, Coqui, Orpheus
- वेब इंटरफ़ेस उपलब्ध: Web Audio API-आधारित Vanilla JS UI
- Docker Compose-आधारित deployment उपलब्ध
टेक स्टैक
- backend: Python 3.x, FastAPI
- frontend: HTML, CSS, JavaScript (Web Audio API)
- संचार: WebSockets
- containerization: Docker, Docker Compose
- AI/ML लाइब्रेरी:
RealtimeSTT, RealtimeTTS, transformers, torch, torchaudio
ollama, openai
- audio processing:
numpy, scipy
सिस्टम आवश्यकताएँ और सिफ़ारिशें
- ऑपरेटिंग सिस्टम: Linux पर Docker उपयोग की सिफ़ारिश (GPU integration के लिए बेहतर)
- Python 3.9+, CUDA 12.1 या उससे ऊपर वाला NVIDIA GPU सिफ़ारिशित
- Docker उपयोग करते समय NVIDIA Container Toolkit आवश्यक
- ज़रूरत पड़ने पर Ollama या OpenAI API Key सेट करनी होगी
इंस्टॉलेशन तरीका
विकल्प A: Docker इंस्टॉलेशन (सिफ़ारिशित)
- repository clone करने के बाद
docker compose build
docker compose up -d से app और Ollama शुरू करें
- अलग से Ollama model डाउनलोड करें (उदाहरण:
docker compose exec ollama ollama pull ...)
- service बंद करें:
docker compose down
- दोबारा शुरू करें:
docker compose up -d
विकल्प B: मैनुअल इंस्टॉलेशन
- Python venv सेट करने के बाद dependencies install करें
- CUDA version के अनुसार PyTorch को मैनुअली install करें
server.py चलाकर FastAPI server शुरू करें
चलाने का तरीका
- ब्राउज़र में
http://localhost:8000 खोलें
- माइक्रोफ़ोन अनुमति देने के बाद "Start" पर क्लिक करें
- "Stop" से बंद करें, "Reset" से बातचीत reset करें
सेटिंग बदलने की जानकारी
- TTS engine/voice बदलना:
server.py, audio_module.py में संशोधन करें
- LLM model/backend बदलना:
server.py, llm_module.py में सेट करें
- STT model/silence threshold बदलना:
transcribe.py, turndetect.py
- SSL configuration संभव:
server.py में HTTPS उपयोग और certificate सेटिंग
लाइसेंस
- MIT लाइसेंस के तहत जारी किया गया है
- Coqui आदि बाहरी engine पर अलग लाइसेंस लागू होते हैं
2 टिप्पणियां
मूल डेमो वीडियो काफ़ी प्रभावशाली है।
Hacker News राय
RealtimeVoiceChat बनाने की वजह यह थी कि ज़्यादातर voice AI interactions में latency संतोषजनक नहीं थी। यह system real-time, local voice conversations के लिए डिज़ाइन किया गया open source system है
इन tools के एक user के रूप में, यह तेज़ तो है लेकिन स्वाभाविक बोलचाल के दौरान आने वाले pauses की अनुमति नहीं देता
बहुत शानदार! interruption feature "wow" moment था (यह नया नहीं है, लेकिन open source में इसे इतना अच्छे से लागू होते देखना हैरान करने वाला है)
लगभग एक साल पहले मैंने इस विषय पर research की थी। कुछ दिलचस्प बातें सीखी थीं
शानदार। source देखने पर यह दिलचस्प लगा कि लेखक ने Silero VAD के बजाय custom turn detection strategy लागू की है। यह ऐसा क्यों किया गया और इससे क्या फ़ायदे देखे गए, यह जानना चाहूँगा
मुझे लगने लगा है कि LLMs को छोटे responses के लिए tune किया जाना चाहिए। आप छोटा sentence input करते हैं और यह लंबे paragraphs का text output कर देता है
हैरानी है कि किसी ने इसका ज़िक्र नहीं किया। यह इंसान की तरह interact करता है, और जब पर्याप्त context होता है तो कई स्थितियों में मुझे interrupt भी करता है। इसकी latency बहुत कम है
काफ़ी अच्छा है। अगर यह SOTA voice जैसा सुनाई दे तो और भी बेहतर होगा
प्रभावशाली! मुझे लगता है कि अभी उपलब्ध open source विकल्पों में इसकी speech synthesis quality सबसे बेहतर है
मैं भी कुछ ऐसा ही बना रहा था, तभी यह मिला। बहुत बढ़िया काम। demo पसंद आया