Како направити „уради сам“ вештачку интелигенцију помоћника са Raspberry Pi-јем

Како направити „уради сам“ вештачку интелигенцију помоћника са Raspberry Pi-јем

Желите малог гласовног асистента који заиста прати ваше вођење, ради на вашем хардверу и неће случајно наручити дванаест ананаса зато што вас је погрешно чуо? „ Уради сам“ вештачка интелигенција асистента са Raspberry Pi- јем је изненађујуће остварив, забаван и флексибилан. Повезаћете реч за буђење, препознавање говора (ASR = аутоматско препознавање говора), мозак за природни језик (правила или LLM) и претварање текста у говор (TTS). Додајте неколико скрипти, једну или две услуге и нека пажљива подешавања звука и добићете џепни паметни звучник који поштује ваша правила.

Хајде да вас одведемо од нуле до разговора са вашим Пи-јем без уобичајеног чупања косе. Обрадићемо делове, подешавање, код, поређења, проблеме... цео бурито. 🌯

Чланци које бисте можда желели да прочитате након овог:

🔗 Како ефикасно проучавати вештачку интелигенцију
Направите план учења, вежбајте пројекте и пратите напредак.

🔗 Како покренути компанију за вештачку интелигенцију
Валидирајте проблем, изградите MVP, окупите тим, обезбедите почетне купце.

🔗 Како користити вештачку интелигенцију да бисте били продуктивнији
Аутоматизујте рутинске задатке, поједноставите токове рада и повећајте креативни резултат.

🔗 Како укључити вештачку интелигенцију у своје пословање
Идентификујте процесе са високим утицајем, имплементирајте пилот пројекте, измерите повраћај улагања, скалирајте.


Шта чини доброг „уради сам“ вештачког асистента са Raspberry Pi-јем ✅

  • Приватно подразумевано – звук се чува локално где год је то могуће. Ви одлучујете шта напушта уређај.

  • Модуларна – замена компоненти попут Лего-а: систем за претварање речи у буђење, ASR, LLM, TTS.

  • Приступачно – углавном отвореног кода, стандардни микрофони, звучници и Pi.

  • Хаковано – желите кућну аутоматизацију, контролне табле, рутине, прилагођене вештине? Лако.

  • Поуздан – управља се сервисом, покреће се и почиње да слуша аутоматски.

  • Забавно – научићете много о звуку, процесима и дизајну вођеном догађајима.

Мали савет: Ако користите Raspberry Pi 5 и планирате да користите теже локалне моделе, хладњак са штипаљком помаже при дуготрајном оптерећењу. (У случају сумње, изаберите званични активни хладњак дизајниран за Pi 5.) [1]


Делови и алати који ће вам бити потребни 🧰

  • Raspberry Pi : Pi 4 или Pi 5 се препоручује за већи простор изнад.

  • microSD картица : препоручује се 32 GB+.

  • УСБ микрофон : једноставан УСБ конференцијски микрофон је одличан.

  • Звучник : USB или 3,5 mm звучник, или I2S појачало HAT.

  • Мрежа : Етернет или Ви-Фи.

  • Опционе погодности: кућиште, активни хладњак за Pi 5, дугме за разговор путем дугмета, LED прстен. [1]

ОС и основно подешавање

  1. Флешовање Raspberry Pi оперативног система помоћу Raspberry Pi Imager-а. То је једноставан начин да добијете bootable microSD меморију са жељеним подешавањима. [1]

  2. Покрените систем, повежите се на мрежу, а затим ажурирајте пакете:

sudo apt update && sudo apt upgrade -y
  1. Основе звука : На Raspberry Pi оперативном систему можете подесити подразумевани излаз, нивое и уређаје преко корисничког интерфејса радне површине или raspi-config . USB и HDMI аудио су подржани на свим моделима; Bluetooth излаз је доступан на моделима са Bluetooth-ом. [1]

  2. Проверите уређаје:

arecord -l aplay -l

Затим тестирајте снимање и репродукцију. Ако вам нивои делују чудно, проверите миксере и подразумеване поставке пре него што окривите микрофон.

 

АИ малина пи

Архитектура на први поглед 🗺️

Паметан „ уради сам“ вештачки асистент са Raspberry Pi током рада изгледа овако:

Буђење → снимање звука уживо → ASR транскрипција → руковање намером или LLM → текст одговора → TTS → репродукција звука → опционе радње путем MQTT-а или HTTP-а.

  • Реч за буђење : Porcupine је мала, прецизна и ради локално са контролом осетљивости за сваку кључну реч. [2]

  • ASR : Whisper је вишејезични ASR модел опште намене, обучен на око 680 хиљада сати; отпоран је на акценте/позадинску буку. За употребу на уређају, wiffel.cpp пружа једноставан C/C++ пут за закључивање. [3][4]

  • Мозак : Ваш избор – cloud LLM преко API-ја, механизам правила или локално закључивање у зависности од снаге.

  • TTS : Пајпер генерише природни говор локално, довољно брзо за брзе одговоре на скромном хардверу. [5]


Табела за брзо поређење 🔎

Алат Најбоље за Приближно скупо Зашто то функционише
Реч за буђење дикобраза Окидач за стално слушање Бесплатни ниво + Ниска потрошња процесора, прецизност, једноставно повезивање [2]
Whisper.cpp Локални ASR на Pi-ју Отворени код Добра тачност, прилагођено процесору [4]
Бржи шапат Бржи ASR на CPU/GPU Отворени код Оптимизације CTranslate2
Пајпер ТТС Локални говорни излаз Отворени код Брзи гласови, много језика [5]
Cloud LLM API Богато резоновање На основу употребе Растерећује тешке рачунарске ресурсе
Чвор-ЦРВЕНИ Оркестрирање акција Отворени код Визуелни токови, прилагођени MQTT-у

Корак по корак изградња: Ваша прва гласовна петља 🧩

Користићемо Porcupine за реч буђења, Whisper за транскрипцију, лагану „brain“ функцију за одговор (замените је са вашим LLM-ом по избору) и Piper за говор. Нека буде минимално, а затим поновите.

1) Инсталирајте зависности

sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 install sounddevice numpy
  • Поркјупајн: преузмите SDK/везивања за ваш језик и пратите упутства за брзи почетак (приступни тастер + листа кључних речи + аудио фрејмови → .process ). [2]

  • Whisper (прилагођен процесору): изгради wiffel.cpp :

гит клон хттпс://гитхуб.цом/ггмл-орг/wхиспер.цпп цд шоп.цпп && цмаке -Б буилд && цмаке --буилд буилд -ј ./моделс/довнлоад-ггмл-модел.ш бас.ен ./буилд/бин/wхиспер-цли -м ./моделс/ггмл-басе.ен.бин -ф your.wav -отxt

Горе наведено одражава брзи почетак пројекта. [4]

Више волите Пајтон? faster-whisper (CTranslate2) је често бржи од обичног Пајтона на скромним процесорима.

2) Подесите Пајпер ТТС

git clone https://github.com/rhasspy/piper cd piper make # Преузмите модел гласа који вам се свиђа, нпр. en_US-amy echo „Здраво.“ | ./piper --model voices/en/en_US-amy-medium.onnx --output_file hello.wav aplay hello.wav

Пајпер је дизајниран за претварање говора у говор на уређају са више гласовних/језичких опција. [5]

3) Минимална помоћна петља у Пајтону

Намерно компактно: чека фразу за буђење (stub), снима, транскрибује са shittle.cpp , генерише одговор (плацехолдер), а затим говори преко Piper-а. Замените плачехолдер са вашим омиљеним LLM-ом или логиком правила.

импорт ос, подпроцес, талас импорт звучни уређај као сд WAKE_WORD = "хеј рачунаре" # замена за Поркјупајн у продукцији [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(путања, секунде=RECORD_SECONDS): аудио = sd.rec(int(секунде * SAMPLE_RATE), samplerate=SAMPLE_RATE, channels=CHANNELS, dtype='int16') sd.wait() са wave.open(путања, 'wb') као w: w.setnchannels(CHANNELS); 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 "Не видим облаке, али би могло бити у реду. Понесите јакну за сваки случај." врати „Рекли сте: “ + промт def speak(текст): 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() if typed == WAKE_WORD: wav_path = f"{WORKDIR}/input.wav" record_wav(wav_path) text = transcribe(wav_path) reply = generate_reply(текст) print(„Корисник:“, text); print("Асистент:", одговори) speak(одговори) else: print("Унесите фразу за буђење да бисте тестирали петљу.")

За право откривање речи које изазивају буђење, интегришите Porcupine-ов детектор стримовања (низак CPU, осетљивост по кључној речи). [2]


Подешавање звука које је заиста важно 🎚️

Неколико ситних исправки чини да се ваш асистент осећа 10 пута паметније:

  • Удаљеност микрофона : 30–60 цм је идеална вредност за многе УСБ микрофоне.

  • Нивои : избегавајте клипинг на улазу и одржавајте репродукцију разумном; поправите рутирање пре него што јурите „духове“ кода. На Raspberry Pi OS-у, можете управљати излазним уређајем и нивоима путем системских алата или raspi-config-а . [1]

  • Акустика просторије : тврди зидови изазивају одјеке; мекана подлога испод микрофона помаже.

  • Праг буђења речи : превише осетљив → окидачи духова; превише строг → викаћете на пластику. Поркјупајн вам омогућава да подесите осетљивост по кључној речи. [2]

  • Термалне перформансе : дуги транскрипције на Pi 5 имају користи од званичног активног хладњака за одрживе перформансе. [1]


Прелазак са играчке на кућни апарат: Сервиси, аутоматско покретање, провере исправности 🧯

Људи заборављају да покрећу скрипте. Рачунари заборављају да буду љубазни. Претворите своју петљу у управљану услугу:

  1. Направите системску јединицу:

[Јединица] Опис=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. Омогући га:

судо цп асистент.сервице /етц/системд/систем/ судо системктл демон-релоад судо системктл омогући --нов асистент.сервице
  1. Репови трупаца:

journalctl -u assistant -f

Сада се покреће при покретању система, поново се покреће при паду система и генерално се понаша као прави уређај. Мало досадно, али много боље.


Систем вештина: Учините га заиста корисним код куће 🏠✨

Када су гласовни унос и износ гласа чврсти, додајте акције:

  • Intent рутер : једноставне руте са кључним речима за уобичајене задатке.

  • Паметни дом : објавите догађаје на MQTT или позовите HTTP крајње тачке кућног асистента.

  • Додаци : брзе Пајтон функције као што су set_timer , what_is_the_time , play_radio , run_scene .

Чак и са cloud LLM-ом у петљи, прво усмерите очигледне локалне команде због брзине и поузданости.


Само локално наспрам Cloud Assist-а: Компромиси које ћете осетити 🌓

Само локално
Предности: приватно, офлајн, предвидљиви трошкови.
Мане: тежи модели могу бити спори на малим таблама. Виспер-ова вишејезична обука помаже у робусности ако га држите на уређају или на оближњем серверу. [3]

Помоћ у облаку.
Предности: моћно резоновање, већи контекстуални прозори.
Мане: подаци напуштају уређај, зависност од мреже, варијабилни трошкови.

Хибрид често побеђује: реч за буђење + локални ASR → позовите API за расуђивање → локални TTS. [2][3][5]


Решавање проблема: Чудни гремлини и брза решења 👾

  • Лажни окидачи речи за буђење : смањите осетљивост или покушајте са другим микрофоном. [2]

  • ASR кашњење : користите мањи Whisper модел или направите whisper.cpp са заставицама за објављивање ( -j --config Release ). [4]

  • Испрекидани ТТС : унапред генеришите уобичајене фразе; потврдите свој аудио уређај и брзине узорковања.

  • Није детектован микрофон : проверите arecord -l и миксере.

  • Термално ограничавање : користите званични активни хладњак на Pi 5 за одрживе перформансе. [1]


Напомене о безбедности и приватности које би заправо требало да прочитате 🔒

  • Држите свој Pi ажурираним помоћу APT-а.

  • Ако користите било који cloud API, евидентирајте шта шаљете и прво размислите о локалном редиговању личних података.

  • Покрените сервисе са најмањим привилегијама; избегавајте sudo у ExecStart-у осим ако није потребно.

  • Обезбедите само локални режим за госте или тихе сате.


Варијанте за прављење: Комбинујте као сендвич 🥪

  • Ултра-локално : Porcupine + whisper.cpp + Piper + једноставна правила. Приватно и чврсто. [2][4][5]

  • Брза помоћ у облаку : Porcupine + (мањи локални Whisper или cloud ASR) + локални TTS + cloud LLM.

  • Централа за кућну аутоматизацију : Додајте Node-RED или Home Assistant токове за рутине, сцене и сензоре.


Пример вештине: Паљење светла преко MQTT-а 💡

импорт пахо.мктт.цлиент ас мктт МКТТ_ХОСТ = "192.168.1.10" ТОПИЦ = "хоум/ливингроом/лифт/сет" деф сет_лигхт(стање: стр): клијент = мктт.Цлиент() клијент.цоннецт(МКТТ_ХОСТ, 1883, 60) паидтерет = "ОН" иф стате.ловер().стартсвитх("он") елсе "ИСКЉУЧЕНО" клијент.публиш(ТОПИЦ, паидтерет, qos=1, ретаин=Фалсе) клијент.дисконнецт() # ако је "укључити светла" у тексту: сет_лигхт("он")

Додајте гласовну реплику попут: „упалите лампу у дневној соби“ и осећаћете се као чаробњак.


Зашто овај стек функционише у пракси 🧪

  • Поркјупајн је ефикасан и прецизан у детекцији речи које изазивају буђење на малим таблама, што омогућава стално слушање. [2]

  • Висперова велика, вишејезична обука чини је отпорном на различита окружења и акценте. [3]

  • wiffel.cpp омогућава да се та снага користи само на CPU уређајима као што је Pi. [4]

  • Пајпер одржава одговоре брзим без слања звука у клауд ТТС. [5]


Предугачко, нисам прочитао/ла

Направите модуларног, приватног „уради сам“ AI асистента са Raspberry Pi- јем комбиновањем Porcupine-а за реч за буђење, Whisper-а (преко whisper.cpp ) за ASR, вашег избора brain-а за одговоре и Piper-а за локални TTS. Умотајте га као системски сервис, подесите звук и повежите га са MQTT или HTTP акцијама. Јефтиније је него што мислите, и чудно је пријатно живети са њим. [1][2][3][4][5]


Референце

  1. Софтвер и хлађење за Raspberry Pi – Raspberry Pi Imager (преузмите и користите) и информације о производу Pi 5 Active Cooler

  2. Porcupine Wake Word – SDK и брзи почетак (кључне речи, осетљивост, локално закључивање)

  3. Whisper (ASR модел) – Вишејезични, робустан ASR обучен током ~680 хиљада сати

    • Радфорд и др., Робусно препознавање говора путем слабог надзора великих размера (шапат): прочитајте више

  4. shipset.cpp – Закључивање шапутања прилагођено процесору са командном линијом (CLI) и корацима изградње

  5. Пајпер ТТС – Брз, локални неуронски ТТС са више гласова/језика

Пронађите најновију вештачку интелигенцију у званичној продавници вештачке интелигенције

О нама


Назад на блог