- Pi-C.A.R.D Raspberry Pi पर पूरी तरह लोकली चलने वाला एक AI वॉइस असिस्टेंट है, जो Raspberry Pi हार्डवेयर पर conversational LLM क्षमताएँ लागू करने वाला प्रोजेक्ट है
- इंटरैक्शन के दो तरीके हैं: wake word आधारित
main.py और GPIO बटन आधारित main_button.py; बातचीत के दौरान wake word बार-बार बोलने की ज़रूरत नहीं होती
- बातचीत का इतिहास
config.py में समायोजित किया जा सकता है, और memory size कम करने पर तेज़ response मिल सकता है
- इसे तेज़ और हल्का रखने के लिए whisper.cpp और llama.cpp जैसी C++ implementations का उपयोग किया गया है, और बाहरी जानकारी तक पहुँच का निर्णय लेने के लिए fine-tuned BERT
tool-bert2 इस्तेमाल होता है
- कैमरा आधारित फीचर्स की setup विधि README में कई जगह दी गई है, लेकिन अभी llama.cpp के vision model support में बदलाव की वजह से उन्हें अस्थायी रूप से हटा दिया गया है
Pi-C.A.R.D क्या करता है
- Pi-C.A.R.D Raspberry Pi पर चलने वाला AI-आधारित assistant है, जिसका लक्ष्य ChatGPT जैसे standard LLM द्वारा conversational environment में किए जाने वाले कामों को लोकली संभालना है
- इसका नाम Raspberry Pi - Camera Audio Recognition Device का संक्षिप्त रूप है
- प्रोजेक्ट अभी भी लगातार विकसित हो रहा है, और इसमें issues या pull requests स्वीकार किए जा सकते हैं
- हाल में जोड़े गए Docker support से setup और modification आसान होने की उम्मीद जताई गई है
- वीडियो परिचय अभी उपलब्ध नहीं है और बाद में दिया जाएगा
यह कैसे काम करता है
-
wake word तरीका
main.py चलाने पर सिस्टम wake word सुनकर बातचीत शुरू करता है
- डिफॉल्ट wake word हैं
"raspberry", "barry", "razbear"
- बातचीत शुरू होने के बाद हर बार wake word दोहराने की ज़रूरत नहीं होती
"stop", "exit", "goodbye" जैसे शब्द कहने पर बातचीत समाप्त हो जाती है
- wake word और उससे जुड़े व्यवहार
config.py में बदले जा सकते हैं
-
बटन तरीका
- ब्रेडबोर्ड, तार और बटन का उपयोग करके GPIO बटन से बातचीत शुरू की जा सकती है
- इसमें बटन दबाने के बाद कमांड बोली जाती है, और README के अनुसार यह ज़्यादा स्मूद इंटरैक्शन तरीका है
- बटन सेटअप के लिए
main_button.py के निर्देशों का पालन करें
- बटन वर्ज़न में बटन से बातचीत शुरू की जा सकती है या assistant को किसी भी समय रोका जा सकता है
-
बातचीत की मेमोरी
- चैटबॉट में configurable conversation memory होती है
- इससे पिछली बातों को दोहराने या पहले के विषय को अधिक विस्तार से जारी रखने में मदद मिलती है
- अगर तेज़ response चाहिए, तो
config.py में memory value को छोटा सेट किया जा सकता है
लोकल रनिंग का लक्ष्य और सीमाएँ
- प्रोजेक्ट का लक्ष्य यह देखना है कि Raspberry Pi जैसे अपेक्षाकृत सस्ते हार्डवेयर पर पूरी तरह offline वॉइस असिस्टेंट को कितनी दक्षता से बनाया जा सकता है
- सारी processing लोकली होने के कारण यह cloud-based systems जितना शक्तिशाली या तेज़ नहीं है
- README के अनुसार पिछले 1 साल में छोटे LLM models में बड़ा सुधार हुआ है, और यह प्रोजेक्ट भी उसके साथ बेहतर हो सकता है
- इसे app के रूप में न बनाने की वजह यह बताई गई है कि Raspberry Pi पर पूरी तरह offline वॉइस असिस्टेंट को तेज़ चलाना ही सबसे कठिन हिस्सा था
- इसमें कहा गया है कि अगर यह तरीका काम करता है, तो अधिक शक्तिशाली हार्डवेयर पर ऐसा ही सिस्टम और तेज़ चल सकता है
रन और सेटअप
- repository डाउनलोड करने और requirements व setup पूरा करने के बाद इसे इस कमांड से चलाया जाता है
python main.py
- बटन वर्ज़न को इस कमांड से चलाया जाता है
python main_button.py
- Docker रनिंग को recommended तरीका बताया गया है, और इसके लिए ये कमांड्स उपयोग होती हैं
sudo docker-compose build
sudo docker-compose up
- Docker support हाल में जोड़ा गया फीचर है, इसलिए यह पूरी तरह सही काम न भी करे
- Docker तरीका केवल wake-word वर्ज़न के साथ काम करता है, और GPIO access को container तक पहुँचाने का तरीका अभी स्पष्ट नहीं है
उपयोग किया गया software और tools
- सिस्टम को तेज़ और हल्का बनाने के लिए जहाँ संभव हो वहाँ C++ implementations का उपयोग किया गया है
- ऑडियो transcription के लिए whisper.cpp का उपयोग होता है, और इसे quick-start guide के अनुसार सेट करना होता है
- README बताता है कि vision फीचर के लिए llama.cpp उपयोग होता है, लेकिन ऊपर दिए गए नोट में कहा गया है कि llama.cpp अब vision model को सक्रिय रूप से support नहीं करता, इसलिए कैमरा फीचर अस्थायी रूप से हटाया गया है
- assistant को वास्तविक सहायक के अधिक करीब काम कराने के लिए कुछ tool access फीचर्स दिए गए हैं
- tool access का निर्णय tool-bert के जरिए किया जाता है
tool-bert2 एक fine-tuned BERT है जो तय करता है कि बाहरी जानकारी तक कब पहुँचना चाहिए
- इस मॉडल को बनाने का तरीका tool-bert repository में बताया गया है
- tool access चालू करने के लिए
.env.example में आवश्यक keys और secrets देखनी होंगी
कैमरा और vision फीचर की स्थिति
- README के मुख्य भाग में बताया गया है कि Raspberry Pi से कैमरा जोड़ने पर फोटो ली जा सकती है, दिख रही चीज़ों का वर्णन किया जा सकता है, और उस इमेज के बारे में सवाल पूछे जा सकते हैं
- vision फीचर की सेटिंग
config.py में vision_model को vlm में बदलकर की जाती है
- उपयोग किए जाने वाले मॉडल के रूप में Qwen2-VL-2B-Instruct का उल्लेख है
- यह समझाया गया है कि input image token size dynamic होती है, इसलिए ली गई फोटो का आकार कम करने पर inference time घट सकता है
- लेकिन प्रोजेक्ट के शीर्ष नोट के अनुसार अभी कैमरा फीचर अस्थायी रूप से हटाया गया है
आवश्यक हार्डवेयर
- बेसिक हार्डवेयर सेटअप में Raspberry Pi 5 Model B, USB माइक्रोफोन और स्पीकर शामिल हैं
- USB माइक्रोफोन और स्पीकर Raspberry Pi के USB ports में जोड़े जाते हैं
- कैमरा Raspberry Pi के camera port से जोड़ा जाता है
- README में उपयोग किए गए parts इस प्रकार हैं
- Raspberry Pi 5 नया camera port उपयोग करता है, इसलिए नया camera connector चाहिए
- camera connector वैकल्पिक है, लेकिन कैमरा फीचर इस्तेमाल करना हो तो इसे खरीदना होगा
- GPIO बटन सेटअप के लिए tutorial का शुरुआती हिस्सा मददगार बताया गया है
- प्रोजेक्ट का फोकस इसे Raspberry Pi 5 पर चलाने पर है, लेकिन यह दूसरे devices पर भी चल सकता है
रोडमैप और प्रगति की स्थिति
- पूरा हो चुके items में बेसिक बातचीत फीचर, कैमरा फीचर, response time benchmarking, overclocking tests, और whisper समय कम करने के तरीकों की खोज शामिल है
- assistant को रोककर नया सवाल पूछने की सुविधा, custom tuned model का उपयोग, और external service function model
tool-bert में सुधार भी पूरा दिखाया गया है
- portable power connection testing और अधिक devices पर परीक्षण के लिए Dockerization भी पूरा हो चुका है
- बचे हुए items में बेहतर tutorial और video, entropix का उपयोग करके optional model generation, दूसरी भाषाओं का परीक्षण, और अधिक external services जोड़ना शामिल है
- प्रगति ट्रैक करने के लिए Notion board अभी पूरा नहीं है, और link दिया गया है
1 टिप्पणियां
Hacker News टिप्पणियाँ
यूज़र की privacy बचाने और डेटा को third-party servers तक जाने से रोकने के लिए, मैं एक पूरी तरह offline voice assistant बनाना चाहता था जिसे internet connection की बिल्कुल ज़रूरत न हो
अच्छा प्रयास है, और इसके लिए धन्यवाद
जानना चाहूँगा कि यह सिर्फ Pi5 पर चलता है या Raspberry Pi के अलावा दूसरे boards पर भी चलता है
सच कहूँ तो नाम की वजह से नज़र गई, और परिचय पढ़कर लगा, “अगर यह ऐसी Alexa है जो मेरी हर बात Amazon पर upload नहीं करती, तो यह मेरे काम की हो सकती है”
अगर default wake word “hey assistant” है, तो मैं “Computer” सुझाऊँगा :) और हाँ, इसकी आवाज़ https://en.wikipedia.org/wiki/Majel_Barrett जैसी होनी चाहिए
मुझे जो चाहिए वह है ऐसा voice assistant जो RPi 4 पर चल सके, HomeAssistant के साथ integrate हो, और सिर्फ offline हो ताकि मेरा डेटा कहीं न भेजे
अब तक जो देखा है, उसके मुकाबले यह project लगभग मेरी सारी शर्तें पूरी करता दिखता है, इसलिए काफ़ी अच्छा बना हुआ लगता है
साथ ही, अगर किसी के पास Alexa जैसे उपयोग के लिए ठीक RPi-compatible microphone की recommendation हो तो जानना चाहूँगा
4B पर बड़े language models को practically चलाना मुश्किल है, लेकिन ज़रूरी नहीं कि सब कुछ बड़े language model पर ही आधारित हो
Rhasspy community में एक आम pattern यह है कि microphone वाले satellite devices पर local में सस्ता और lightweight wake-word detection चलाया जाए—इसके लिए 4B भी काफ़ी होगा—और असली recording को बेहतर result के लिए local network के ज़रिए central hub तक stream किया जाए
eBay पर यह लगभग 15–20 डॉलर में मिल जाता है
NabuCasa ने Rhasspy के मुख्य developer को इस feature पर काम करने के लिए hire किया था, और हर update के साथ यह बेहतर होता जा रहा है
“Pi-card क्यों? अगर इसका मतलब Raspberry Pi - Camera Audio Recognition Device है,” तो लगता है LCARS का मौका छूट गया
इसे LLM Camera Audio Recognition Service कहते, और जाहिर है “computer” keyword पर react करना चाहिए था. अगर यह Pi के अलावा कहीं और भी चलता है, तो LCARS बन सकता है
इसे 100% Picard की तरह पढ़ा जाता है, और LCARS से ज़्यादा आसानी से पहचाना जा सकता है
इसे आज़माने का इंतज़ार है
मेरी जानकारी में खुला, stable, flexible और privacy-focused voice assistant अभी भी बहुत कम हैं, इसलिए उम्मीद है इस project को गति मिले
लगभग एक साल पहले परिवार वाले सच में Alexa घर लाना चाहते थे, लेकिन मैं घर में Bezos का surveillance device नहीं रखना चाहता था, इसलिए मैंने उन्हें समझाया कि चलो खुद कुछ बनाते हैं. मैंने Pi 4 पर Mycroft चुना, लेकिन वह ठीक से नहीं चला; wake-word detection inconsistent था, integrations भी कमज़ोर थीं, और उस समय project लगभग छोड़ा हुआ सा लग रहा था. मैंने project और उन integrations में contribute करने की कोशिश की जिनमें मैं अटका था, लेकिन ज़िंदगी की व्यस्तता में वापस नहीं जा पाया, और अच्छी बात यह रही कि परिवार वाले भी Alexa को भूल गए
शायद nano था या pico, कुल मिलाकर SO-DIMM के आकार का board था. उसमें wake word नहीं था; सफेद जलते button को दबाने पर रंग दो बार बदलता था—एक बार press confirm करने के लिए, और दूसरी बार listening दिखाने के लिए. बोलना खत्म करने पर रंग फिर बदलता था और वह जवाब बोल देता था
backend में Google की कोई चीज़ इस्तेमाल होती थी, और उसे setup करके लगातार चलाना बेहद frustrating था, लेकिन वह काम करता था. मेरे पास ऐसे दो devices हैं, इसलिए मैं लंबे समय से किसी ऐसी चीज़ का इंतज़ार कर रहा हूँ जो कुछ ऐसा खुद host करने दे
यहाँ और काम करने की योजना है. अभी quality का अंदाज़ा देने वाले कुछ छोटे working demos YouTube पर हैं: https://www.youtube.com/watch?v=OryGVbh5JZE
जानना चाहता हूँ कि क्या इसे साधारण Linux machine पर चलाया जा सकता है
या फिर क्या किसी को ऐसा कोई मिलता-जुलता project पता है जो ऐसा कर सके
मैंने पहले खोजा था, लेकिन यह क्षेत्र काफ़ी जटिल है, और constraints भी काफ़ी सूक्ष्म थे
कुल मिलाकर Pi-C.A.R.D शायद Python और C++ का उपयोग करता है, इसलिए जहाँ Python और C++ चल और compile हो सकते हैं, वहाँ इसे चलाने में शायद कोई बड़ी समस्या नहीं होनी चाहिए
लगभग 3 साल पहले मैंने शुरुआती पीढ़ी के RPI 4 पर ऐसा कुछ बनाने की कोशिश की थी, लेकिन hardware limitations और अपनी जानकारी की सीमाओं से टकरा गया था
अब इसे सच में काम करते देखना बहुत शानदार है
अगर raspi hat हो जिसमें GPU लगाया जा सके तो काफ़ी बढ़िया लगेगा, लेकिन यह व्यावहारिक है या संभव भी है, इसे लेकर पक्का नहीं हूँ
आज का graphics card कल का e-waste है, इसलिए शायद ऐसे DIY raspi प्रोजेक्ट्स को मज़बूत करने में उसे दूसरी ज़िंदगी मिल सकती है
अगर सस्ते CUDA cores का फ़ायदा उठाने के लिए GPU/adapter/power supply जोड़ें, तो power, कीमत और size के हिसाब से यह किसी बेहतर SoC या x86 NUC solution से भी बदतर हो सकता है
PCIe में कैसी जादूगरी चलती है, यह तो नहीं जानता, लेकिन कम से कम बाज़ार में उपलब्ध boards में से एक Atomic Pi में “exposed” PCIe interface था
वैसे भी GPU एक छोटे PCB पर होता था, और वह PCB USB3 cable के ज़रिए motherboard के PCIe slot में लगी एक और छोटी PCB से जुड़ा होता था. मतलब यह कि PCIe जो भी हो, उसे USB3 cable के ज़रिए GPU तक पहुँचाकर काम कराया जा सकता है
hardware list में speaker दिख रहा है, तो जानना चाहता हूँ कि क्या यह बोलकर जवाब भी देता है
अभी https://espeak.sourceforge.net/ इस्तेमाल कर रहा हूँ, इसलिए सुनने में यह बहुत सुखद नहीं है
साथ ही, large language model के responses को stream किया जाता है, इसलिए जवाब मिलने में बहुत देर नहीं लगती. chunk-आधारित processing की वजह से कभी-कभी कुछ शब्दों के हिस्से ही क्षणभर के लिए बोल दिए जाते हैं. बेशक, कौन-सा model इस्तेमाल हो रहा है और context size कितना है, इसके अनुसार इंतज़ार का समय बदलता है
Picard को Earl Grey चाय की temperature preference हमेशा अलग से क्यों बतानी पड़ती है?
अगर AI इतना स्मार्ट है, तो उसे उसकी पसंद पहले से सीख लेनी चाहिए थी, है ना?
series में कई किरदार replicator को इससे ज़्यादा लचीले तरीक़े से निर्देश देते हैं. “Tea, Earl Grey, Hot” शायद Picard की आदत है, और हो सकता है यह Enterprise-D के replicator से पहले के ज़्यादा आदिम food/drink devices से आई हो
क्या scarcity के बाद की दुनिया में भी lawsuits बचेंगे? शायद हाँ
लगता है Starfleet के ज़्यादातर लोगों को replicator ठीक से इस्तेमाल करना आता ही नहीं. उनके पास इतना स्मार्ट device है, फिर भी उसे ऐसे चलाते हैं जैसे कोई आम consumer appliance हो जिसका manual कभी पढ़ा ही नहीं, और उसकी 90% features मिस कर देने के बाद complain करते हैं कि replicated खाना अच्छा नहीं है
https://i.redd.it/hluqexh3oqc91.jpg
wake word कैसे काम करता है, यह जानने की उत्सुकता है
क्या यह लगातार सुनता रहता है, और अगर आख़िरी कुछ सेकंड में wake word या phrase न मिले तो उसे ignore कर देता है?
और ज़्यादा सटीक रूप से कहें तो यह कई audio chunks को store रखता है और सबसे पुराने को हटाता रहता है, यानी एक rolling window