17 पॉइंट द्वारा GN⁺ 2025-05-06 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • ब्राउज़र माइक्रोफ़ोन का उपयोग करके 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 संभव हैं

मुख्य कार्य प्रवाह

  1. वॉइस इनपुट: ब्राउज़र में उपयोगकर्ता की आवाज़ capture की जाती है
  2. स्ट्रीमिंग ट्रांसमिशन: audio chunk को WebSocket के माध्यम से Python backend में भेजा जाता है
  3. वॉइस पहचान: RealtimeSTT आवाज़ को टेक्स्ट में बदलता है
  4. LLM प्रोसेसिंग: टेक्स्ट को LLM को भेजकर जवाब तैयार किया जाता है
  5. वॉइस रूपांतरण: RealtimeTTS जवाब के टेक्स्ट को आवाज़ में बदलता है
  6. जवाब प्लेबैक: तैयार की गई आवाज़ को फिर से ब्राउज़र तक stream किया जाता है
  7. 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 इंस्टॉलेशन (सिफ़ारिशित)

  1. repository clone करने के बाद docker compose build
  2. docker compose up -d से app और Ollama शुरू करें
  3. अलग से Ollama model डाउनलोड करें (उदाहरण: docker compose exec ollama ollama pull ...)
  4. service बंद करें: docker compose down
  5. दोबारा शुरू करें: docker compose up -d

विकल्प B: मैनुअल इंस्टॉलेशन

  1. Python venv सेट करने के बाद dependencies install करें
  2. CUDA version के अनुसार PyTorch को मैनुअली install करें
  3. 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 टिप्पणियां

 
nicewook 2025-05-10

मूल डेमो वीडियो काफ़ी प्रभावशाली है।

  1. मेरी इच्छा थी कि बातचीत स्वाभाविक हो, और इस स्तर पर वह काफ़ी हद तक पूरी होती दिखती है।
  2. बातचीत करते समय उसे real-time में टेक्स्ट के रूप में भी देखना चाहता था, और यह हिस्सा भी अच्छा है।
  3. अच्छा होगा अगर AI मेरी बात बीच में न काटे, पहले पूरी तरह सुने और फिर बोले। उदाहरण के लिए, जब उसे पक्का न हो तो "क्या तुमने बात पूरी कर ली?", "क्या अब मैं बोलूँ?" जैसे सवाल पूछकर अपनी बात शुरू करे।
  4. अच्छा होगा अगर कुछ ऐसा हो जो AI और इंसान, दोनों को एक-दूसरे की बात बीच में काटने से रोके।
 
GN⁺ 2025-05-06
Hacker News राय
  • RealtimeVoiceChat बनाने की वजह यह थी कि ज़्यादातर voice AI interactions में latency संतोषजनक नहीं थी। यह system real-time, local voice conversations के लिए डिज़ाइन किया गया open source system है

    • लक्ष्य बातचीत की स्वाभाविक गति के क़रीब पहुँचना है
    • WebSockets के ज़रिए audio chunks streaming, Whisper-आधारित RealtimeSTT, और Coqui XTTSv2/Kokoro जैसे engines को support करने वाले RealtimeTTS का उपयोग करके लगभग 500ms की response latency हासिल की गई है
    • Ollama के माध्यम से 24B Mistral जैसे बड़े local models चलाते समय भी यह संभव है
    • मुख्य विशेषताएँ: local LLMs के लिए डिज़ाइन किया गया (मुख्य रूप से Ollama, OpenAI connector शामिल), बातचीत को बीच में रोकने की क्षमता, उपयोगकर्ता की सोच में बाधा न डालने के लिए smart turn detection, dependency management को आसान बनाने के लिए Dockerized setup
    • STT/TTS models के कारण performance के लिए CUDA-enabled GPU की ज़रूरत होती है
    • approach, performance, संभावित optimizations, या अच्छे local voice AI experience के लिए ज़रूरी features पर feedback सुनना चाहूँगा
    • कोड: https://github.com/KoljaB/RealtimeVoiceChat
  • इन tools के एक user के रूप में, यह तेज़ तो है लेकिन स्वाभाविक बोलचाल के दौरान आने वाले pauses की अनुमति नहीं देता

    • बातचीत में हम सोचने या किसी और वजह से लंबे और छोटे pauses लेते हैं
    • इन tools में जैसे ही हम रुकते हैं, AI तुरंत बोलना शुरू कर देता है
    • कुछ हफ़्ते पहले Twitter पर एक demo देखा था जिसमें AI तब तक इंतज़ार करता है जब तक इंसान सच में बोलना ख़त्म न कर दे। pause की लंबाई मायने नहीं रखती
    • यह समस्या कितनी जटिल है, पता नहीं। शायद input का analysis करने के लिए एक और AI चाहिए होगा जो तय करे कि यह pause है या नहीं
  • बहुत शानदार! interruption feature "wow" moment था (यह नया नहीं है, लेकिन open source में इसे इतना अच्छे से लागू होते देखना हैरान करने वाला है)

    • interruption handling पर सवाल: "Mmk", "Yes", "Of course", "khansi" आदि को यह कैसे handle करता है, जानना चाहता हूँ
    • OpenAI voice chat में होने वाली flatterly के अलावा, मुझे यह नापसंद है कि noise AI के जवाब को रोक देती है और फिर उसे दोबारा शुरू करने का कोई अच्छा तरीका नहीं होता
    • जल्दी response रोकना और सही वजह से रोकना एक कठिन समस्या है
  • लगभग एक साल पहले मैंने इस विषय पर research की थी। कुछ दिलचस्प बातें सीखी थीं

    • इंसानों के बीच बातचीत में speakers के बीच median delay 0 milliseconds होता है। यानी लगभग आधे समय में एक speaker दूसरे को interrupt कर देता है, इसलिए delay negative हो जाता है
    • जब इंसान किसी ज्ञात AI से बात करते हैं, तो वे delay की उतनी परवाह नहीं करते। वे मान लेते हैं कि AI को सोचने के लिए समय चाहिए। ज़्यादातर users 1000ms delay को acceptable मानते हैं और 500ms delay को असाधारण समझते हैं
    • सभी voice assistants में लगभग 300ms की minimum delay होती है। इसका कारण यह है कि वे response शुरू करने का समय तय करने के लिए silence detection का उपयोग करते हैं, और लगभग 300ms की चुप्पी speaker के सामान्य pause से स्पष्ट रूप से अलग पहचानने के लिए चाहिए होती है
    • Alexa में धीमे बोलने वालों के लिए इस waiting time को बढ़ाने की setting है
    • इस demo video में आप देख सकते हैं कि AI उसे interrupt नहीं करता। इससे यह इंसानों जैसी interaction नहीं लगती (आवाज़ के अटपटे intonation सहित)
    • इंसान वाक्यों को real time में process करते हैं और when उन्हें भरोसा हो जाता है कि वे अर्थ समझने लायक पर्याप्त सुन चुके हैं, तभी जवाब देते हैं
  • शानदार। source देखने पर यह दिलचस्प लगा कि लेखक ने Silero VAD के बजाय custom turn detection strategy लागू की है। यह ऐसा क्यों किया गया और इससे क्या फ़ायदे देखे गए, यह जानना चाहूँगा

    • voice agents क्षेत्र की स्थिति के बारे में जिज्ञासु लोगों के लिए, Daily (एक WebRTC company) एक शानदार guide और कई utilities वाला open source framework प्रदान करती है
    • संदर्भ के लिए: मैं Cartesia में काम करता हूँ, और हम voice agent के कई use cases को service करते हैं। Daily हमारी दोस्त कंपनी है
  • मुझे लगने लगा है कि LLMs को छोटे responses के लिए tune किया जाना चाहिए। आप छोटा sentence input करते हैं और यह लंबे paragraphs का text output कर देता है

    • कभी-कभी text अच्छा होता है, लेकिन हर input sentence को mini-essay जैसा response नहीं चाहिए होता
    • बहुत शानदार project है। AI की conversational tendency बदलने के लिए prompt को fine-tune किया जा सकता है
  • हैरानी है कि किसी ने इसका ज़िक्र नहीं किया। यह इंसान की तरह interact करता है, और जब पर्याप्त context होता है तो कई स्थितियों में मुझे interrupt भी करता है। इसकी latency बहुत कम है

    • जब मैंने इसे पहली बार इस्तेमाल किया, तो यह काफ़ी चौंकाने वाला अनुभव था
  • काफ़ी अच्छा है। अगर यह SOTA voice जैसा सुनाई दे तो और भी बेहतर होगा

  • प्रभावशाली! मुझे लगता है कि अभी उपलब्ध open source विकल्पों में इसकी speech synthesis quality सबसे बेहतर है

    • अंतिम लक्ष्य शायद ऐसा लगातार चलने वाला waveform-to-waveform model होगा जिसमें text tokens बिल्कुल न हों
  • मैं भी कुछ ऐसा ही बना रहा था, तभी यह मिला। बहुत बढ़िया काम। demo पसंद आया