रास्पबेरी पाई के साथ DIY AI सहायक कैसे बनाएं

रास्पबेरी पाई के साथ DIY AI सहायक कैसे बनाएं

क्या आप एक ऐसा छोटा वॉइस असिस्टेंट चाहते हैं जो वास्तव में आपके निर्देशों का पालन करे, आपके अपने हार्डवेयर पर चले, और आपकी बात गलत सुनने के कारण गलती से बारह अनानास ऑर्डर न कर दे? रास्पबेरी पाई के साथ एक DIY AI असिस्टेंट आश्चर्यजनक रूप से संभव, मज़ेदार और लचीला है। आप एक वेक वर्ड, स्पीच रिकग्निशन (ASR = स्वचालित स्पीच रिकग्निशन), प्राकृतिक भाषा के लिए एक ब्रेन (नियम या LLM), और टेक्स्ट-टू-स्पीच (TTS) तैयार कर सकते हैं। कुछ स्क्रिप्ट, एक या दो सेवाएँ, और कुछ सावधानीपूर्वक ऑडियो ट्वीक्स जोड़ें, और आपके पास एक पॉकेटेबल स्मार्ट स्पीकर होगा जो आपके नियमों का पालन करेगा।

चलिए, बिना किसी सामान्य झंझट के, आपको शून्य से लेकर अपने Pi से बात करने तक ले चलते हैं। हम भागों, सेटअप, कोड, तुलनाओं, छोटी-छोटी बातों... सब कुछ कवर करेंगे। 🌯

इसके बाद आप जो लेख पढ़ना चाहेंगे वे इस प्रकार हैं:

🔗 एआई का प्रभावी ढंग से अध्ययन कैसे करें
अध्ययन रोडमैप बनाएं, अभ्यास परियोजनाएं बनाएं और प्रगति पर नज़र रखें।

🔗 एआई कंपनी कैसे शुरू करें
समस्या का सत्यापन करें, एमवीपी बनाएं, टीम को इकट्ठा करें, प्रारंभिक ग्राहकों को सुरक्षित करें।

🔗 अधिक उत्पादक होने के लिए AI का उपयोग कैसे करें
नियमित कार्यों को स्वचालित करें, कार्यप्रवाह को सुव्यवस्थित करें, और रचनात्मक आउटपुट को बढ़ाएं।

🔗 अपने व्यवसाय में AI को कैसे शामिल करें
उच्च प्रभाव वाली प्रक्रियाओं की पहचान करना, पायलटों को क्रियान्वित करना, ROI को मापना, पैमाना बनाना।


रास्पबेरी पाई के साथ एक अच्छा DIY AI सहायक क्या बनाता है?

  • डिफ़ॉल्ट रूप से निजी - जहाँ तक संभव हो, ऑडियो को स्थानीय रखें। आप तय करते हैं कि डिवाइस से क्या बाहर जाएगा।

  • मॉड्यूलर - लेगो जैसे घटकों को बदलें: वेक वर्ड इंजन, एएसआर, एलएलएम, टीटीएस।

  • सस्ती - ज्यादातर ओपन सोर्स, कमोडिटी माइक, स्पीकर और एक Pi।

  • हैक करने योग्य - क्या आप होम ऑटोमेशन, डैशबोर्ड, रूटीन, कस्टम कौशल चाहते हैं? आसान।

  • विश्वसनीय - सेवा-प्रबंधित, स्वचालित रूप से बूट होता है और सुनना शुरू करता है।

  • मज़ा - आप ऑडियो, प्रक्रियाओं और घटना-संचालित डिजाइन के बारे में बहुत कुछ सीखेंगे।

छोटी सी सलाह: अगर आप Raspberry Pi 5 इस्तेमाल करते हैं और भारी लोकल मॉडल चलाने की योजना बना रहे हैं, तो लगातार लोड के दौरान क्लिप-ऑन कूलर मददगार साबित हो सकता है। (अगर कोई संदेह हो, तो Pi 5 के लिए डिज़ाइन किया गया आधिकारिक एक्टिव कूलर चुनें।) [1]


आपको जिन भागों और उपकरणों की आवश्यकता होगी 🧰

  • रास्पबेरी पाई : हेडरूम के लिए पाई 4 या पाई 5 की सिफारिश की जाती है।

  • माइक्रोएसडी कार्ड : 32 जीबी+ अनुशंसित.

  • यूएसबी माइक्रोफोन : एक साधारण यूएसबी सम्मेलन माइक महान है।

  • स्पीकर : USB या 3.5 मिमी स्पीकर, या I2S amp HAT.

  • नेटवर्क : ईथरनेट या वाई-फाई.

  • वैकल्पिक सुविधाएँ: केस, सक्रिय कूलर , पुश-टू-टॉक के लिए पुश बटन, एलईडी रिंग। [1]

ओएस और बेसलाइन सेटअप

  1. रास्पबेरी पाई ओएस फ्लैश करें । यह आपके इच्छित प्रीसेट के साथ बूट करने योग्य माइक्रोएसडी प्राप्त करने का सीधा तरीका है। [1]

  2. बूट करें, नेटवर्क से कनेक्ट करें, फिर पैकेज अपडेट करें:

sudo apt update && sudo apt upgrade -y
  1. ऑडियो मूल बातें : रास्पबेरी पाई ओएस पर आप डेस्कटॉप यूआई या रास्पि-कॉन्फ़िगरेशन । यूएसबी और एचडीएमआई ऑडियो सभी मॉडलों में समर्थित हैं; ब्लूटूथ आउटपुट ब्लूटूथ वाले मॉडलों पर उपलब्ध है। [1]

  2. डिवाइस सत्यापित करें:

एक रिकॉर्ड -एल एक प्ले -एल

फिर कैप्चर और प्लेबैक का परीक्षण करें। अगर लेवल अजीब लगें, तो माइक को दोष देने से पहले मिक्सर और डिफ़ॉल्ट की जाँच करें।

 

एआई रास्पबेरी पाई

वास्तुकला पर एक नज़र 🗺️

एक समझदार DIY AI सहायक इस तरह दिखता है:

वेक वर्ड → लाइव ऑडियो कैप्चर → एएसआर ट्रांसक्रिप्शन → इंटेंट हैंडलिंग या एलएलएम → प्रतिक्रिया टेक्स्ट → टीटीएस → ऑडियो प्लेबैक → एमक्यूटीटी या एचटीटीपी के माध्यम से वैकल्पिक क्रियाएं।

  • वेक वर्ड : पोर्क्यूपाइन छोटा, सटीक है, और प्रति-कीवर्ड संवेदनशीलता नियंत्रण के साथ स्थानीय रूप से चलता है। [2]

  • एएसआर : व्हिस्पर एक बहुभाषी, सामान्य-उद्देश्य वाला एएसआर मॉडल है जिसे लगभग 680k घंटों पर प्रशिक्षित किया गया है; यह उच्चारण/पृष्ठभूमि शोर के प्रति मज़बूत है। डिवाइस पर उपयोग के लिए, whisper.cpp एक लीन C/C++ इंफ़रेंस पथ प्रदान करता है। [3][4]

  • ब्रेन : आपकी पसंद - एपीआई के माध्यम से क्लाउड एलएलएम, एक नियम इंजन, या हॉर्सपावर के आधार पर स्थानीय अनुमान।

  • टीटीएस : पाइपर स्थानीय स्तर पर प्राकृतिक भाषण उत्पन्न करता है, जो मामूली हार्डवेयर पर त्वरित प्रतिक्रियाओं के लिए पर्याप्त तेज़ है। [5]


त्वरित तुलना तालिका 🔎

औजार सर्वश्रेष्ठ के लिए कीमत के हिसाब से ठीक-ठाक यह कैसे काम करता है
साही जागो शब्द हमेशा सुनने वाला ट्रिगर निःशुल्क स्तर + कम सीपीयू, सटीक, आसान बाइंडिंग [2]
व्हिस्पर.सीपीपी Pi पर स्थानीय ASR खुला स्त्रोत अच्छी सटीकता, सीपीयू-अनुकूल [4]
तेज़-कानाफूसी CPU/GPU पर तेज़ ASR खुला स्त्रोत CTranslate2 अनुकूलन
पाइपर टीटीएस स्थानीय वाक् आउटपुट खुला स्त्रोत तेज़ आवाज़ें, कई भाषाएँ [5]
क्लाउड एलएलएम एपीआई समृद्ध तर्क उपयोग आधारित भारी कंप्यूटिंग को ऑफलोड करता है
नोड-लाल क्रियाओं का आयोजन खुला स्त्रोत दृश्य प्रवाह, MQTT अनुकूल

चरण-दर-चरण निर्माण: आपका पहला वॉइस लूप 🧩

हम वेक वर्ड के लिए पोर्क्यूपाइन, ट्रांसक्रिप्शन के लिए व्हिस्पर, रिप्लाई के लिए एक हल्का "ब्रेन" फंक्शन (अपनी पसंद के LLM से बदलें), और स्पीच के लिए पाइपर का इस्तेमाल करेंगे। इसे न्यूनतम रखें, फिर दोहराएँ।

1) निर्भरताएँ स्थापित करें

sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 install sounddevice numpy
  • पोर्क्यूपाइन: अपनी भाषा के लिए SDK/बाइंडिंग को पकड़ें और त्वरित शुरुआत (एक्सेस कुंजी + कीवर्ड सूची + ऑडियो फ़्रेम → .process ) का पालन करें। [2]

  • व्हिस्पर (सीपीयू-अनुकूल): whisper.cpp :

git क्लोन https://github.com/ggml-org/whisper.cpp cd whisper.cpp && cmake -B build && cmake --build build -j ./models/download-ggml-model.sh base.en ./build/bin/whisper-cli -m ./models/ggml-base.en.bin -f your.wav -otxt

उपरोक्त परियोजना की त्वरित शुरुआत को दर्शाता है। [4]

क्या आप पायथन को पसंद करते हैं? फ़ास्ट-व्हिस्पर (CTranslate2) अक्सर मामूली CPU पर वेनिला पायथन की तुलना में अधिक तेज़ होता है।

2) पाइपर टीटीएस सेट अप करें

git clone https://github.com/rhasspy/piper cd piper make # अपनी पसंद का एक वॉइस मॉडल डाउनलोड करें, जैसे, en_US-amy echo "Hello there." | ./piper --model voices/en/en_US-amy-medium.onnx --output_file hello.wav aplay hello.wav

पाइपर को कई आवाज/भाषा विकल्पों के साथ ऑन-डिवाइस टीटीएस के लिए डिज़ाइन किया गया है। [5]

3) पायथन में एक न्यूनतम सहायक लूप

जानबूझकर कॉम्पैक्ट करें: एक वेक वाक्यांश (स्टब) की प्रतीक्षा करता है, रिकॉर्ड करता है, whisper.cpp , एक उत्तर (प्लेसहोल्डर) उत्पन्न करता है, फिर Piper के माध्यम से बोलता है। प्लेसहोल्डर को अपने पसंदीदा LLM या नियम तर्क से बदलें।

import os, subprocess, wave sounddevice को sd के रूप में import करें WAKE_WORD = "हे कंप्यूटर" # उत्पादन में Porcupine के लिए स्वैप करें [2] RECORD_SECONDS = 6 SAMPLE_RATE = 16000 CHANNELS = 1 WORKDIR = "/home/pi/assistant" ASR_BIN = "/home/pi/whisper.cpp/build/bin/whisper-cli" # [4] ASR_MODEL = "/home/pi/whisper.cpp/models/ggml-base.en.bin" PIPER_BIN = "/home/pi/piper/build/piper" # [5] PIPER_VOICE = "/home/pi/piper/voices/en/en_US-amy-medium.onnx" os.makedirs(WORKDIR, exist_ok=True) def record_wav(path, सेकंड=रिकॉर्ड_सेकंड): ऑडियो = sd.rec(int(सेकंड * नमूना दर), नमूना दर=नमूना दर, चैनल=चैनल, dtype='int16') sd.wait() wave.open(पथ, 'wb') के साथ w: w.setnchannels(चैनल); w.setsampwidth(2); w.setframerate(SAMPLE_RATE) w.writeframes(audio.tobytes()) def transcribe(path): cmd = [ASR_BIN, "-m", ASR_MODEL, "-f", path, "-otxt"] subprocess.run(cmd, check=True, cwd=WORKDIR) with open(path.replace(".wav", ".txt"), "r", encoding="utf-8") as f: return f.read().strip() def generate_reply(prompt): if "weather" in prompt.lower(): return "मैं बादलों को नहीं देख सकता, लेकिन यह ठीक हो सकता है। बस मामले में एक जैकेट लाओ।" return "आपने कहा: " + prompt def speak(text): proc = subprocess.Popen([PIPER_BIN, "--model", PIPER_VOICE, "--output_file", f"{WORKDIR}/reply.wav"], stdin=subprocess.PIPE) proc.stdin.write(text.encode("utf-8")); proc.stdin.close(); proc.wait() subprocess.run(["aplay", f"{WORKDIR}/reply.wav"], check=True) print("सहायक तैयार है। परीक्षण के लिए वेक वाक्यांश टाइप करें।") while True: typed = input("> ").strip().lower() यदि typed == WAKE_WORD: wav_path = f"{WORKDIR}/input.wav" record_wav(wav_path) text = transcribe(wav_path) reply = generate_reply(text) print("उपयोगकर्ता:", text); print("सहायक:", reply) speak(reply) अन्यथा: print("लूप का परीक्षण करने के लिए वेक वाक्यांश टाइप करें।")

वास्तविक वेक-वर्ड डिटेक्शन के लिए, पोर्क्यूपाइन के स्ट्रीमिंग डिटेक्टर (कम सीपीयू, प्रति-कीवर्ड संवेदनशीलता) को एकीकृत करें। [2]


ऑडियो ट्यूनिंग जो वास्तव में मायने रखती है 🎚️

कुछ छोटे-छोटे सुधार आपके सहायक को 10 गुना अधिक स्मार्ट बना देंगे:

  • माइक दूरी : 30-60 सेमी कई यूएसबी माइक के लिए एक उपयुक्त स्थान है।

  • लेवल : इनपुट पर क्लिपिंग से बचें और प्लेबैक को व्यवस्थित रखें; कोड घोस्ट का पीछा करने से पहले रूटिंग को ठीक करें। रास्पबेरी पाई ओएस पर, आप सिस्टम टूल्स या रास्पि-कॉन्फ़िगरेशन । [1]

  • कमरे की ध्वनिकी : कठोर दीवारें गूँज पैदा करती हैं; माइक के नीचे एक नरम चटाई मदद करती है।

  • वेक वर्ड थ्रेशोल्ड : बहुत संवेदनशील → घोस्ट ट्रिगर; बहुत सख्त → आप प्लास्टिक पर चिल्लाएँगे। पोरक्यूपाइन आपको कीवर्ड के अनुसार संवेदनशीलता को समायोजित करने की सुविधा देता है। [2]

  • थर्मल्स : Pi 5 पर लंबे ट्रांस्क्रिप्शन को निरंतर प्रदर्शन के लिए आधिकारिक सक्रिय कूलर से लाभ मिलता है। [1]


खिलौने से उपकरण तक: सेवाएँ, ऑटोस्टार्ट, स्वास्थ्य जाँच 🧯

इंसान स्क्रिप्ट चलाना भूल जाते हैं। कंप्यूटर अच्छा व्यवहार करना भूल जाते हैं। अपने लूप को एक प्रबंधित सेवा में बदलें:

  1. systemd इकाई बनाएं:

[यूनिट] विवरण=DIY वॉयस असिस्टेंट बाद=network.target sound.target [सेवा] उपयोगकर्ता=pi WorkingDirectory=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py पुनरारंभ=हमेशा RestartSec=3 [इंस्टॉल] WantedBy=multi-user.target
  1. इसे सक्षम करें:

sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
  1. लॉग टेल्स:

जर्नलctl -u सहायक -f

अब यह बूट होने पर शुरू होता है, क्रैश होने पर रीस्टार्ट होता है, और आम तौर पर किसी उपकरण की तरह काम करता है। थोड़ा उबाऊ, पर काफ़ी बेहतर।


कौशल प्रणाली: इसे घर पर वास्तव में उपयोगी बनाएं 🏠✨

जब वॉयस-इन और वॉयस-आउट ठोस हो जाएं, तो क्रियाएं जोड़ें:

  • इंटेंट राउटर : सामान्य कार्यों के लिए सरल कीवर्ड रूट।

  • स्मार्ट होम : MQTT पर ईवेंट प्रकाशित करें या होम असिस्टेंट के HTTP एंडपॉइंट पर कॉल करें।

  • प्लगइन्स set_timer , what_is_the_time , play_radio , run_scene जैसे त्वरित पायथन फ़ंक्शन ।

यहां तक ​​कि क्लाउड एलएलएम के साथ भी, गति और विश्वसनीयता के लिए स्पष्ट स्थानीय कमांड को पहले रूट करें।


लोकल ओनली बनाम क्लाउड असिस्ट: आपको जो नुकसान महसूस होंगे 🌓

केवल स्थानीय
लाभ: निजी, ऑफ़लाइन, अनुमानित लागत।
नुकसान: छोटे बोर्ड पर भारी मॉडल धीमे हो सकते हैं। व्हिस्पर का बहुभाषी प्रशिक्षण, यदि आप इसे डिवाइस पर या पास के सर्वर पर रखते हैं, तो मजबूती बढ़ाने में मदद करता है। [3]

क्लाउड सहायता के
लाभ: शक्तिशाली तर्क, बड़ी संदर्भ विंडो।
नुकसान: डेटा डिवाइस से बाहर चला जाता है, नेटवर्क पर निर्भरता, परिवर्तनीय लागत।

एक हाइब्रिड अक्सर जीतता है: वेक वर्ड + एएसआर लोकल → रीजनिंग के लिए एपीआई कॉल करें → टीटीएस लोकल। [2][3][5]


समस्या निवारण: अजीबोगरीब गड़बड़ियाँ और त्वरित समाधान 👾

  • वेक वर्ड झूठे ट्रिगर : संवेदनशीलता कम करें या एक अलग माइक आज़माएं। [2]

  • एएसआर लैग : एक छोटे व्हिस्पर मॉडल का उपयोग करें या रिलीज़ फ्लैग ( -j --config रिलीज़ whisper.cpp । [4]

  • चॉपी टीटीएस : सामान्य वाक्यांशों को पूर्व-जनरेट करें; अपने ऑडियो डिवाइस और नमूना दरों की पुष्टि करें।

  • कोई माइक नहीं मिला : arecord -l और मिक्सर की जाँच करें।

  • थर्मल थ्रॉटलिंग : निरंतर प्रदर्शन के लिए Pi 5 पर आधिकारिक एक्टिव कूलर का उपयोग करें। [1]


सुरक्षा और गोपनीयता संबंधी नोट्स जिन्हें आपको अवश्य पढ़ना चाहिए 🔒

  • अपने Pi को APT के साथ अद्यतन रखें।

  • यदि आप किसी क्लाउड एपीआई का उपयोग करते हैं, तो जो भी आप भेजते हैं उसे लॉग करें और पहले स्थानीय स्तर पर व्यक्तिगत बिट्स को संपादित करने पर विचार करें।

  • न्यूनतम विशेषाधिकार के साथ सेवाएं चलाएं; जब तक आवश्यक न हो, ExecStart में sudo का

  • मेहमानों या शांत घंटों के लिए केवल स्थानीय मोड प्रदान करें


बिल्ड वेरिएंट: सैंडविच की तरह मिक्स एंड मैच 🥪

  • अल्ट्रा-लोकल : पोर्क्यूपाइन + व्हिस्पर.सीपीपी + पाइपर + सरल नियम। निजी और मज़बूत। [2][4][5]

  • शीघ्र क्लाउड सहायता : पोर्क्यूपाइन + (छोटा स्थानीय व्हिस्पर या क्लाउड एएसआर) + टीटीएस स्थानीय + क्लाउड एलएलएम।

  • होम ऑटोमेशन सेंट्रल : रूटीन, दृश्यों और सेंसर के लिए नोड-RED या होम असिस्टेंट प्रवाह जोड़ें।


उदाहरण कौशल: MQTT के माध्यम से लाइट्स ऑन 💡

paho.mqtt.client को mqtt के रूप में आयात करें MQTT_HOST = "192.168.1.10" TOPIC = "home/livingroom/light/set" def set_light(state: str): client = mqtt.Client() client.connect(MQTT_HOST, 1883, 60) payload = "ON" यदि state.lower().startswith("on") अन्यथा "OFF" client.publish(TOPIC, payload, qos=1, retain=False) client.disconnect() # यदि "lights चालू करें" text में: set_light("on")

एक आवाज लाइन जोड़ें जैसे: "लिविंग रूम का लैंप चालू करें," और आप एक जादूगर की तरह महसूस करेंगे।


यह स्टैक व्यवहार में क्यों काम करता है 🧪

  • पोर्क्यूपाइन छोटे बोर्डों पर वेक-वर्ड डिटेक्शन में कुशल और सटीक है, जो हमेशा सुनने को संभव बनाता है। [2]

  • व्हिस्पर का व्यापक, बहुभाषी प्रशिक्षण इसे विभिन्न वातावरणों और लहजों के लिए मजबूत बनाता है। [3]

  • whisper.cpp उस शक्ति को केवल सीपीयू डिवाइस जैसे Pi पर उपयोग करने योग्य रखता है। [4]

  • पाइपर क्लाउड टीटीएस पर ऑडियो भेजे बिना प्रतिक्रियाओं को तेज़ रखता है। [5]


बहुत लंबा है, पढ़ा नहीं

एक मॉड्यूलर, निजी DIY AI असिस्टेंट । इसके लिए Porcupine को वेक वर्ड के लिए, Whisper ( whisper.cpp ) को ASR, आपके द्वारा चुने गए ब्रेन को रिप्लाई के लिए, और Piper को लोकल TTS के लिए संयोजित करें। इसे systemd सर्विस के रूप में रैप करें, ऑडियो ट्यून करें, और MQTT या HTTP एक्शन्स में वायर करें। यह आपके विचार से कहीं अधिक सस्ता है, और इसके साथ काम करना अजीब तरह से सुखद है। [1][2][3][4][5]


संदर्भ

  1. रास्पबेरी पाई सॉफ्टवेयर और कूलिंग - रास्पबेरी पाई इमेजर (डाउनलोड और उपयोग करें) और पाई 5 एक्टिव कूलर उत्पाद जानकारी

  2. पोर्क्यूपाइन वेक वर्ड - SDK और त्वरित शुरुआत (कीवर्ड, संवेदनशीलता, स्थानीय अनुमान)

  3. व्हिस्पर (एएसआर मॉडल) - बहुभाषी, मजबूत एएसआर ~680k घंटों पर प्रशिक्षित

    • रैडफोर्ड एट अल., बड़े पैमाने पर कमजोर पर्यवेक्षण के माध्यम से मजबूत भाषण पहचान (व्हिस्पर): और पढ़ें

  4. whisper.cpp – CLI और निर्माण चरणों के साथ CPU-अनुकूल व्हिस्पर अनुमान

  5. पाइपर टीटीएस - कई आवाजों/भाषाओं के साथ तेज़, स्थानीय न्यूरल टीटीएस

आधिकारिक AI सहायक स्टोर पर नवीनतम AI खोजें

हमारे बारे में


ब्लॉग पर वापस जाएँ