Raspberry Pi ilə DIY AI köməkçisini necə qurmaq olar

Raspberry Pi ilə DIY AI köməkçisini necə qurmaq olar

Həqiqətən sizin liderliyinizi izləyən, öz aparatınızla işləyən və sizi səhv eşitdiyinə görə təsadüfən on iki ananas sifariş etməyəcək kiçik səsli köməkçi istəyirsiniz? Raspberry Pi ilə DIY AI köməkçisi təəccüblü şəkildə əldə edilə bilən, əyləncəli və çevikdir. Siz oyanmış söz, nitqin tanınması (ASR = avtomatik nitqin tanınması), təbii dil üçün beyin (qaydalar və ya LLM) və mətndən nitqə (TTS) qoşulacaqsınız. Bir neçə skript, bir və ya iki xidmət və bəzi diqqətli audio tənzimləmələri əlavə edin və sizin qaydalarınıza tabe olan cibli ağıllı dinamikiniz var.

Gəlin sizi adi saçlarınızı dartmadan sıfırdan öz Pi ilə danışmağa çatdıraq. Biz hissələri, quraşdırmanı, kodu, müqayisələri, əldə edilənləri... bütün burritonu əhatə edəcəyik. 🌯

Bundan sonra oxumaq istədiyiniz məqalələr:

🔗 AI-ni effektiv şəkildə necə öyrənmək olar
Tədqiqat yol xəritəsi yaradın, layihələr həyata keçirin və irəliləyişləri izləyin.

🔗 AI şirkətinə necə başlamaq olar
Problemi təsdiqləyin, MVP qurun, komanda toplayın, ilkin müştəriləri təmin edin.

🔗 Daha məhsuldar olmaq üçün AI-dən necə istifadə etmək olar
Rutin tapşırıqları avtomatlaşdırın, iş axınlarını sadələşdirin və yaradıcı nəticəni artırın.

🔗 AI-ni biznesinizə necə daxil etmək olar
Yüksək təsirli prosesləri müəyyən edin, pilotları həyata keçirin, ROI, miqyasını ölçün.


Raspberry Pi ilə yaxşı DIY AI köməkçisini nə edir ✅

  • Defolt olaraq məxfi – mümkün olduqda audionu yerli saxlayın. Cihazdan nəyin ayrılacağına siz qərar verin.

  • Modul - Lego kimi komponentləri dəyişdirin: oyanış söz mühərriki, ASR, LLM, TTS.

  • Əlverişli - əsasən açıq mənbə, əmtəə mikrofonları, dinamiklər və Pi.

  • Hackable – ev avtomatlaşdırılması, tablosuna, rutinlərə, fərdi bacarıqlara sahib olmaq istəyirsiniz? Asan.

  • Etibarlı – xidmət tərəfindən idarə olunur, avtomatik yüklənir və dinləməyə başlayır.

  • Əyləncəli – siz audio, proseslər və hadisələrə əsaslanan dizayn haqqında çox şey öyrənəcəksiniz.

Kiçik ipucu: Raspberry Pi 5 istifadə edirsinizsə və daha ağır yerli modelləri işə salmağı planlaşdırırsınızsa, sıxışdırıcı soyuducu davamlı yük altında kömək edir. (Şübhə olduqda, Pi 5 üçün hazırlanmış rəsmi Aktiv Soyuducu seçin.) [1]


Ehtiyacınız Olan Hissələr və Alətlər 🧰

  • Raspberry Pi : Pi 4 və ya Pi 5 başlıq üçün tövsiyə olunur.

  • microSD kart : 32 GB+ tövsiyə olunur.

  • USB mikrofon : sadə USB konfrans mikrofonu əladır.

  • Dinamik : USB və ya 3,5 mm dinamik və ya I2S gücləndirici HAT.

  • Şəbəkə : Ethernet və ya Wi-Fi.

  • Əlavə incəliklər: korpus, aktiv soyuducu , təkanla danışıq düyməsi, LED üzük. [1]

ƏS və Əsas Quraşdırma

  1. Flash Raspberry Pi OS . Bu, istədiyiniz ilkin parametrlərlə yüklənə bilən microSD əldə etməyin sadə yoludur. [1]

  2. Yükləyin, şəbəkəyə qoşulun, sonra paketləri yeniləyin:

sudo apt yeniləmə && sudo apt yeniləmə -y
  1. Səs əsasları : Raspberry Pi ƏS-də siz masaüstü UI və ya raspi-config . USB və HDMI audio bütün modellərdə dəstəklənir; Bluetooth çıxışı Bluetooth ilə modellərdə mövcuddur. [1]

  2. Cihazları yoxlayın:

arecord -l aplay -l

Sonra çəkmə və oynatmanı sınayın. Səviyyələr qəribə görünürsə, mikrofonu günahlandırmadan əvvəl mikserləri və defoltları yoxlayın.


Bir Baxışda Memarlıq 🗺️

Raspberry Pi axını ilə həssas belə görünür:

Oyandırma sözü → canlı audio ələ keçirmə → ASR transkripsiyası → niyyətin idarə edilməsi və ya LLM → cavab mətni → TTS → audio oxutma → MQTT və ya HTTP vasitəsilə isteğe bağlı hərəkətlər.

  • Oyanış sözü : Porcupine kiçikdir, dəqiqdir və hər bir açar sözə həssaslıq nəzarəti ilə yerli olaraq işləyir. [2]

  • ASR : Whisper ~680k saat ərzində öyrədilmiş çoxdilli, ümumi təyinatlı ASR modelidir; vurğulara/fon səsinə davamlıdır. Cihazda istifadə üçün whisper.cpp yalın C/C++ nəticə çıxarma yolunu təmin edir. [3][4]

  • Beyin : Sizin seçiminiz – API vasitəsilə bulud LLM, qaydalar mühərriki və ya at gücündən asılı olaraq yerli nəticə.

  • TTS : Piper yerli olaraq təbii nitq yaradır, təvazökar aparatda sürətli cavablar üçün kifayət qədər sürətli. [5]


Sürətli Müqayisə Cədvəli 🔎

Alət Üçün ən yaxşısı Qiyməti Niyə işləyir
Porcupine Wake Word Həmişə dinləmə tetikleyicisi Pulsuz səviyyə + Aşağı CPU, dəqiq, asan bağlamalar [2]
Whisper.cpp Pi-də yerli ASR Açıq mənbə Yaxşı dəqiqlik, CPU dostu [4]
Daha sürətli - Pıçıltı CPU/GPU-da daha sürətli ASR Açıq mənbə CTranslate2 optimallaşdırması
Piper TTS Yerli nitq çıxışı Açıq mənbə Sürətli səslər, çoxlu dillər [5]
Cloud LLM API Zəngin əsaslandırma İstifadəyə əsaslanan Ağır hesablamaları boşaldır
Node-QIRMIZI Tədbirlərin təşkili Açıq mənbə Vizual axınlar, MQTT dostudur

Addım-addım Quraşdırma: İlk Səs Döngəniz 🧩

Biz oyanıq söz üçün Porcupine, transkripsiya üçün Whisper, cavab üçün yüngül "beyin" funksiyasından (seçdiyiniz LLM ilə əvəz edin) və nitq üçün Piperdən istifadə edəcəyik. Minimum saxlayın, sonra təkrarlayın.

1) Asılılıqları quraşdırın

sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 quraşdırma səs cihazı numpy
  • Porcupine: diliniz üçün SDK/bağlamaları götürün və sürətli başlanğıcı izləyin (giriş açarı + açar sözlər siyahısı + audio çərçivələr → .proses ). [2]

  • Pıçıltı (CPU üçün uyğun): whisper.cpp :

git clone 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.enggml-baxt

Yuxarıdakılar layihənin sürətli başlanğıcını əks etdirir. [4]

Python-a üstünlük verirsiniz? daha sürətli pıçıltı (CTranslate2) təvazökar CPU-larda tez-tez vanil Python-dan daha sürətlidir.

2) Piper TTS-ni qurun

git clone https://github.com/rhasspy/piper cd piper make # Bəyəndiyiniz səs modelini yükləyin, məsələn, en_US-amy echo "Salam." | ./piper --model voices/en/en_US-amy-medium.onnx --output_file hello.wav aplay hello.wav

Piper çoxlu səs/dil seçimləri ilə cihazda TTS üçün nəzərdə tutulmuşdur. [5]

3) Python-da minimal köməkçi döngə

Qəsdən yığcam: oyanış ifadəsini (stub) gözləyir, qeyd edir, whisper.cpp , cavab yaradır (yer tutucu), sonra Piper vasitəsilə danışır. Yertutanı sevimli LLM və ya qayda məntiqi ilə dəyişdirin.

import əməliyyat sistemi, alt proses, dalğa idxal səs cihazı sd olaraq WAKE_WORD = "hey kompüter" # istehsalda Porcupine üçün dəyişdirmə [2] RECORD_SECONDS = 6 SAMPLE_RATE = 16000 KANAL = 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] PIPERV "/home/pi/piper/voices/en/en_US-amy-medium.onnx" os.makedirs(WORKDIR, exist_ok=Doğru) def record_wav(yol, saniyə=RECORD_SECONDS): audio = sd.rec(int(saniyə * SAMPLE_SAMPLE_RATE), sample_rates=NEWORKDIR dtype='int16') sd.wait() ilə wave.open(yol, 'wb') w kimi: w.setnchannels(CHANNELS); w.setsampwidth(2); w.setframerate(SAMPLE_RATE) w.writeframes(audio.tobytes()) def transkripsiya(yol): cmd = [ASR_BIN, "-m", ASR_MODEL, "-f", yol, "-otxt"] subprocess.run(cmd, check=Doğrudur, cwd=açıq("."xtwa",("."v)yerlə "r", encoding="utf-8") kimi f: return f.read().strip() def generate_reply(prompt): əgər prompt.lower()-də "hava": "Mən buludları görə bilmirəm, amma yaxşı ola bilər. Hər ehtimala qarşı pencək gətirin." qaytarın "Siz dediniz: " + prompt def speak(mətn): proc = subprocess.Popen([PIPER_BIN, "--model", PIPER_VOICE, "--output_file", f"{WORKDIR}/reply.wav"], stdin=subprocess.PIPE) proc.stdin.text(mətn): proc.stdin."en"de" proc.stdin.close(); proc.wait() subprocess.run(["aplay", f"{WORKDIR}/reply.wav"], check=Doğrudur) print("Assistent hazırdır. Test etmək üçün oyanış ifadəsini yazın.") True: typed = input("> ").strip().lower() əgər yazılsa == WAKE_W = f"{WORKDIR}/input.wav" record_wav(wav_path) text = transscribe(wav_path) reply = create_cavab(mətn) print("İstifadəçi:", mətn); print("Assistant:", cavab ver) danış(cavab ver) else: print("Dövrəni yoxlamaq üçün oyanış ifadəsini yazın.")

Həqiqi oyanış sözü aşkar etmək üçün Porcupine-nin axın detektorunu (aşağı CPU, hər sözə həssaslıq) birləşdirin. [2]


Əslində Vacib Olan Audio Tuning 🎚️

Bir neçə kiçik düzəliş köməkçinizi 10 qat daha ağıllı hiss edir:

  • Mikrofon məsafəsi : 30–60 sm bir çox USB mikrofonlar üçün əlverişli yerdir.

  • Səviyyələr : girişdə kəsilmələrin qarşısını almaq və oxutmanı sağlam saxlamaq; kod xəyallarını təqib etməzdən əvvəl marşrutu düzəldin. Raspberry Pi OS-də siz sistem alətləri və ya raspi-config . [1]

  • Otaq akustikası : sərt divarlar əks-sədaya səbəb olur; mikrofonun altındakı yumşaq mat kömək edir.

  • Oyanış söz həddi : çox həssas → xəyal tətikləri; çox sərt → plastikə qışqıracaqsınız. Porcupine açar sözə görə həssaslığı dəyişməyə imkan verir. [2]

  • Termallar : Pi 5-də uzun transkripsiyalar davamlı performans üçün rəsmi aktiv soyuducudan faydalanır. [1]


Oyuncaqdan Cihaza keçid: Xidmətlər, Avtomatik işə salma, Sağlamlıq Yoxlamaları 🧯

İnsanlar skriptləri işlətməyi unudurlar. Kompüterlər gözəl olmağı unudurlar. Döngənizi idarə olunan xidmətə çevirin:

  1. Sistem vahidi yaradın:

[Vahid] Təsvir=DY Voice Assistant After=network.target sound.target [Xidmət] İstifadəçi=pi WorkingDirectory=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Yenidən Başlat=həmişə Yenidən BaşlatSec]mull=3-Get.
  1. Onu aktivləşdirin:

sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-yenidən yüklə sudo systemctl aktivləşdir --indi assistant.service
  1. Günlük quyruqları:

journalctl -u assistent -f

İndi açılışda başlayır, qəza zamanı yenidən başlayır və ümumiyyətlə, bir cihaz kimi davranır. Bir az darıxdırıcı, daha yaxşı.


Bacarıq Sistemi: Onu Evdə Faydalı Edin 🏠✨

Səs daxil etmə və səs çıxarma möhkəm olduqdan sonra əməliyyatlar əlavə edin:

  • Niyyət yönləndiricisi : ümumi tapşırıqlar üçün sadə açar söz marşrutları.

  • Ağıllı ev : hadisələri MQTT-də dərc edin və ya Home Assistant-ın HTTP son nöqtələrinə zəng edin.

  • Pluginlər set_timer , what_is_the_time , play_radio , run_scene kimi sürətli Python funksiyaları .

Döngüdə bulud LLM olsa belə, sürət və etibarlılıq üçün ilk növbədə aşkar yerli əmrləri yönləndirin.


Yalnız Yerli və Bulud Yardımı: Hiss edəcəyiniz güzəştlər 🌓

Yalnız yerli
üstünlüklər: şəxsi, oflayn, proqnozlaşdırıla bilən xərclər.
Eksiler: daha ağır modellər kiçik lövhələrdə yavaş ola bilər. Whisper-in çoxdilli təlimi onu cihazda və ya yaxınlıqdakı serverdə saxlasanız, möhkəmliyə kömək edir. [3]

Cloud assist
Pros: güclü əsaslandırma, daha böyük kontekst pəncərələri.
Eksiler: məlumat cihazı tərk edir, şəbəkə asılılığı, dəyişən xərclər.

Hibrid tez-tez qalib gəlir: oyanış sözü + yerli ASR → əsaslandırma üçün API çağırın → TTS yerli. [2][3][5]


Problemlərin aradan qaldırılması: Qəribə Gremlinlər və Tez Düzəlişlər 👾

  • Yalan söz tetikleyicilerini oyandırın : həssaslığı azaldın və ya başqa mikrofonu sınayın. [2]

  • ASR gecikməsi : daha kiçik Whisper modelindən istifadə edin və ya buraxılış bayraqları ilə whisper.cpp -j --config Release ). [4]

  • Choppy TTS : ümumi ifadələri əvvəlcədən yaradın; audio cihazınızı və nümunə dərəcələrini təsdiqləyin.

  • Mikrofon aşkarlanmadı : arecord -l və mikserləri yoxlayın.

  • Termal tənzimləmə : davamlı performans üçün Pi 5-də rəsmi Aktiv Soyuducudan istifadə edin. [1]


Həqiqətən Oxumalı olduğunuz Təhlükəsizlik və Məxfilik Qeydləri 🔒

  • Pi-ni APT ilə yeniləyin.

  • Hər hansı bulud API istifadə edirsinizsə, göndərdiklərinizi qeyd edin və əvvəlcə yerli olaraq şəxsi bitləri redaktə etməyi düşünün.

  • Xidmətləri ən az imtiyazla işlətmək; sudodan çəkinin .

  • yalnız yerli rejim təmin edin .


Variantları qurun: Qarışdırın və sendviç kimi uyğunlaşdırın 🥪

  • Ultra yerli : Kirpi + whisper.cpp + Piper + sadə qaydalar. Şəxsi və möhkəm. [2][4][5]

  • Sürətli bulud yardımı : Porcupine + (kiçik yerli Whisper və ya bulud ASR) + TTS yerli + bulud LLM.

  • Ev avtomatlaşdırma mərkəzi : Rutinlər, səhnələr və sensorlar üçün Node-RED və ya Home Assistant axını əlavə edin.


Nümunə Bacarıq: MQTT vasitəsilə işıqlar yanır 💡

paho.mqtt.client-i mqtt olaraq idxal edin MQTT_HOST = "192.168.1.10" MÖVZU = "ev/qonaq otağı/işıq/set" def set_light(state: küç): client = mqtt.Client() client.connect(MQTT_HOST, 1883) yüklə, = 60" state.lower().startswith("on") else "OFF" client.publish(TOPIC, payload, qos=1, retain=False) client.disconnect() # mətndə "işıqları yandırmaq" varsa: set_light("on")

"Qonaq otağının lampasını yandırın" kimi bir səs xətti əlavə edin və özünüzü sehrbaz kimi hiss edəcəksiniz.


Niyə Bu Stack Praktikada İşləyir 🧪

  • Porcupine kiçik lövhələrdə oyanıq sözün aşkarlanmasında səmərəli və dəqiqdir, bu da həmişə dinləməni mümkün edir. [2]

  • Whisper-in böyük, çoxdilli təlimi onu müxtəlif mühitlərə və vurğulara davamlı edir. [3]

  • whisper.cpp bu gücü Pi kimi yalnız CPU olan cihazlarda istifadə edilə bilən saxlayır. [4]

  • Piper səsi bulud TTS-ə göndərmədən cavabları sürətli saxlayır. [5]


Çox uzundu, oxumadım

whisper.cpp ), cavablar üçün seçdiyiniz beyin və yerli TTS üçün Piperi birləşdirərək modul, özəl DIY AI köməkçisi Onu sistem xidməti kimi sarın, səsi tənzimləyin və MQTT və ya HTTP əməliyyatlarında naqil edin. Düşündüyünüzdən daha ucuzdur və onunla yaşamaq qəribə dərəcədə ləzzətlidir. [1][2][3][4][5]


İstinadlar

  1. Raspberry Pi Proqram təminatı və Soyutma – Raspberry Pi Imager (download və istifadə) və Pi 5 Active Cooler məhsul haqqında məlumat

  2. Porcupine Wake Word – SDK və sürətli başlanğıc (açar sözlər, həssaslıq, yerli nəticə)

  3. Pıçıltı (ASR modeli) – ~680k saat ərzində öyrədilmiş çoxdilli, möhkəm ASR

    • Radford və başqaları, Böyük Ölçülü Zəif Nəzarət (Pıçıltı) vasitəsilə Güclü Nitqin Tanınması: daha çox oxu

  4. whisper.cpp – CLI ilə CPU-dostluq Pıçıltıdan nəticə çıxarmaq və addımlar qurmaq

  5. Piper TTS – Çox səsli/dilli sürətli, yerli sinir TTS

Rəsmi AI köməkçisi mağazasında ən son AI-ni tapın

Haqqımızda


Bloqa qayıt