Желите малог гласовног асистента који заиста прати ваше вођење, ради на вашем хардверу и неће случајно наручити дванаест ананаса зато што вас је погрешно чуо? „ Уради сам“ вештачка интелигенција асистента са 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]
ОС и основно подешавање
-
Флешовање Raspberry Pi оперативног система помоћу Raspberry Pi Imager-а. То је једноставан начин да добијете bootable microSD меморију са жељеним подешавањима. [1]
-
Покрените систем, повежите се на мрежу, а затим ажурирајте пакете:
sudo apt update && sudo apt upgrade -y
-
Основе звука : На Raspberry Pi оперативном систему можете подесити подразумевани излаз, нивое и уређаје преко корисничког интерфејса радне површине или
raspi-config. USB и HDMI аудио су подржани на свим моделима; Bluetooth излаз је доступан на моделима са Bluetooth-ом. [1] -
Проверите уређаје:
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]
Прелазак са играчке на кућни апарат: Сервиси, аутоматско покретање, провере исправности 🧯
Људи заборављају да покрећу скрипте. Рачунари заборављају да буду љубазни. Претворите своју петљу у управљану услугу:
-
Направите системску јединицу:
[Јединица] Опис=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
-
Омогући га:
судо цп асистент.сервице /етц/системд/систем/ судо системктл демон-релоад судо системктл омогући --нов асистент.сервице
-
Репови трупаца:
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]
Референце
-
Софтвер и хлађење за Raspberry Pi – Raspberry Pi Imager (преузмите и користите) и информације о производу Pi 5 Active Cooler
-
Raspberry Pi Imager: прочитајте више
-
Активни хладњак (Pi 5): прочитајте више
-
-
Porcupine Wake Word – SDK и брзи почетак (кључне речи, осетљивост, локално закључивање)
-
Whisper (ASR модел) – Вишејезични, робустан ASR обучен током ~680 хиљада сати
-
Радфорд и др., Робусно препознавање говора путем слабог надзора великих размера (шапат): прочитајте више
-
-
shipset.cpp – Закључивање шапутања прилагођено процесору са командном линијом (CLI) и корацима изградње
-
Пајпер ТТС – Брз, локални неуронски ТТС са више гласова/језика