Хочаце маленькага галасавога памочніка, які сапраўды ідзе за вашымі ўказаннямі, працуе на вашым уласным абсталяванні і не будзе выпадкова заказваць дванаццаць ананасаў, таму што няправільна вас пачуў? Памочнік са штучным інтэлектам сваімі рукамі з Raspberry Pi — гэта дзіўна дасягальна, весела і гнутка. Вы падключыце слова для абуджэння, распазнаванне маўлення (ASR = аўтаматычнае распазнаванне маўлення), мозг для натуральнай мовы (правілы або LLM) і пераўтварэнне тэксту ў маўленне (TTS). Дадайце некалькі сцэнарыяў, адну-дзве службы і некалькі дбайных налад гуку, і ў вас атрымаецца кішэнная разумная калонка, якая падпарадкоўваецца вашым правілам.
Давайце пачнем з нуля і пачнем размаўляць са сваім Пі без звычайных клопатаў. Мы разгледзім дэталі, наладу, код, параўнанні, падводныя камбінацыі... усё бурыта. 🌯
Артыкулы, якія вам могуць спадабацца пасля гэтага:
🔗 Як эфектыўна вывучаць штучны інтэлект
Стварыце план навучання, практыкуйцеся ў праектах і адсочвайце прагрэс.
🔗 Як пачаць кампанію па штучным інтэлекце
Праверка праблемы, стварэнне MVP, збор каманды, забеспячэнне першапачатковых кліентаў.
🔗 Як выкарыстоўваць штучны інтэлект для павышэння прадукцыйнасці
Аўтаматызуйце руцінныя задачы, аптымізуйце працоўныя працэсы і павялічвайце творчы вынік.
🔗 Як укараніць штучны інтэлект у свой бізнес
Вызначыць высокаэфектыўныя працэсы, рэалізаваць пілотныя праекты, вымераць рэнтабельнасць інвестыцый, маштабаваць.
Што робіць Raspberry Pi добрым памочнікам са штучным інтэлектам для самастойнага выкарыстання ✅
-
Прыватна па змаўчанні — па магчымасці захоўвайце аўдыё лакальна. Вы вырашаеце, што пакідае прыладу.
-
Модульная — кампаненты для абмену месцамі, як у Lego: механізм Wake Word, ASR, LLM, TTS.
-
Даступныя цэны — у асноўным з адкрытым зыходным кодам, стандартныя мікрафоны, дынамікі і Pi.
-
Узломны — хочаце хатнюю аўтаматызацыю, панэлі кіравання, распарадкі дня, карыстальніцкія навыкі? Лёгка.
-
Надзейнасць — кіраванне сэрвісам ажыццяўляецца аўтаматычна, загружаецца і пачынае праслухоўванне.
-
Цікава — вы даведаецеся шмат новага пра аўдыё, працэсы і дызайн, арыентаваны на падзеі.
Невялікая парада: калі вы карыстаецеся Raspberry Pi 5 і плануеце выкарыстоўваць больш магутныя лакальныя мадэлі, прымацаваны кулер дапаможа пры працяглай нагрузцы. (Калі сумняваецеся, выбірайце афіцыйны актыўны кулер, распрацаваны для Pi 5.) [1]
Запчасткі і інструменты, якія вам спатрэбяцца 🧰
-
Raspberry Pi : для большай прасторы рэкамендуецца выкарыстоўваць Pi 4 або Pi 5.
-
Карта microSD : рэкамендуецца 32 ГБ+.
-
USB-мікрафон : просты USB-мікрафон для канферэнцый выдатна падыдзе.
-
Дынамік : USB або 3,5-мм дынамік, альбо ўзмацняльнік I2S HAT.
-
Сетка : Ethernet або Wi-Fi.
-
Дадатковыя зручнасці: корпус, актыўны кулер для Pi 5, кнопка для націскання і размовы, святлодыёднае кольца. [1]
АС і базавая налада
-
Прашыйце аперацыйную сістэму Raspberry Pi з дапамогай Raspberry Pi Imager. Гэта просты спосаб атрымаць загрузачную карту microSD з патрэбнымі вам загадзя наладамі. [1]
-
Загрузіце кампутар, падключыцеся да сеткі, а затым абнавіце пакеты:
sudo apt update && sudo apt upgrade -y
-
Асновы аўдыё : у Raspberry Pi OS вы можаце ўсталяваць выхадны сігнал па змаўчанні, узроўні і прылады праз інтэрфейс працоўнага стала або
raspi-config. Аўдыё праз USB і HDMI падтрымліваецца ва ўсіх мадэлях; выхад праз Bluetooth даступны на мадэлях з Bluetooth. [1] -
Праверце прылады:
запіс -l прайграванне -l
Затым праверце запіс і прайграванне. Калі ўзроўні здаюцца дзіўнымі, праверце мікшэры і налады па змаўчанні, перш чым вінаваціць мікрафон.

Архітэктура з першага погляду 🗺️
Разумны памочнік па штучным інтэлекце з дапамогай Raspberry Pi выглядае наступным чынам:
Слова для абуджэнняў → запіс жывога аўдыё → транскрыпцыя ASR → апрацоўка намеру або LLM → тэкст адказу → TTS → прайграванне аўдыё → дадатковыя дзеянні праз MQTT або HTTP.
-
Слова для абуджэння : Porcupine — гэта невялікі, дакладны інструмент, які працуе лакальна з кантролем адчувальнасці для кожнага ключавога слова. [2]
-
ASR : Whisper — гэта шматмоўная мадэль ASR агульнага прызначэння, навучаная прыкладна 680 тыс. гадзін; яна ўстойлівая да акцэнтаў/фонавага шуму. Для выкарыстання на прыладзе
whisper.cppзабяспечвае зручны шлях вываду на C/C++. [3][4] -
Мозг : На ваш выбар — воблачны LLM праз API, механізм правілаў або лакальны вывад у залежнасці ад магутнасці.
-
TTS : Piper генеруе натуральнае маўленне лакальна, дастаткова хутка для хуткіх адказаў на сціплым абсталяванні. [5]
Табліца хуткага параўнання 🔎
| Інструмент | Лепш за ўсё падыходзіць для | Прыблізная цана | Чаму гэта працуе |
|---|---|---|---|
| Слова прачнення дзікабраза | Трыгер пастаяннага праслухоўвання | Бясплатны ўзровень + | Нізкая загрузка працэсара, дакладнасць, лёгкае прывязванне [2] |
| Whisper.cpp | Лакальны ASR на Pi | Адкрыты зыходны код | Добрая дакладнасць, зручнасць для працэсара [4] |
| Хутчэйшы шэпт | Хутчэйшы ASR на працэсары/графічным працэсары | Адкрыты зыходны код | Аптымізацыі CTranslate2 |
| Пайпер ТТС | Лакальны вывад маўлення | Адкрыты зыходны код | Хуткія галасы, шмат моў [5] |
| API воблачнага LLM | Багатыя разважанні | На аснове выкарыстання | Выгружае цяжкія вылічэнні |
| Node-RED | Арганізацыя дзеянняў | Адкрыты зыходны код | Візуальныя патокі, сумяшчальныя з MQTT |
Пакрокавая зборка: ваш першы галасавы цыкл 🧩
Мы будзем выкарыстоўваць Porcupine для слова, якое выклікае абуджэнне, Whisper для транскрыпцыі, лёгкую функцыю «brain» для адказу (заменіце яе на любую іншую функцыю) і Piper для маўлення. Зрабіце яго мінімальным, а потым паўтарыце.
1) Усталюйце залежнасці
sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 ўсталяваць гукавую прыладу numpy
-
Porcupine: вазьміце SDK/прывязкі для вашай мовы і выканайце інструкцыі хуткага запуску (клавіша доступу + спіс ключавых слоў + аўдыякадры →
.process). [2] -
Whisper (спрыяльны для працэсара): сабраць 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/ggml-base.en.bin -f your.wav -otxt
Вышэйзгаданае адлюстроўвае хуткі старт праекта. [4]
Аддаеце перавагу Python?
faster-whisper(CTranslate2) часта працуе хутчэй, чым звычайны Python, на сціплых працэсарах.
2) Наладзьце Piper TTS
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
Piper распрацаваны для TTS на прыладзе з некалькімі варыянтамі голасу/мовы. [5]
3) Мінімальны цыкл памочніка ў Python
Наўмысна кампактны: чакае заглушкі фразы, запісвае, транскрыбуе з дапамогай whisper.cpp , генеруе адказ (запаўняльнік), а затым гаворыць праз Piper. Замяніце запаўняльнік на ваш любімы LLM або логіку правілаў.
import os, subprocess, wave import sounddevice as sd WAKE_WORD = "hey computer" # замена для 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, seconds=RECORD_SECONDS): audio = sd.rec(int(секунды * SAMPLE_RATE), samplerate=SAMPLE_RATE, channels=CHANNELS, dtype='int16') sd.wait() з wave.open(path, '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 "Я не бачу аблокаў, але, магчыма, усё будзе добра. Вазьміце з сабой куртку на ўсялякі выпадак." 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() if typed == WAKE_WORD: wav_path = f"{WORKDIR}/input.wav" record_wav(wav_path) text = transcribe(wav_path) reply = generate_reply(text) print("Карыстальнік:", text); print("Памочнік:", адказ) speak(адказ) else: print("Увядзіце фразу для праверкі цыкла.")
Для рэальнага выяўлення слоў-абуджэння інтэгруйце струменевы дэтэктар Porcupine (нізкі працэсар, адчувальнасць да кожнага ключавога слова). [2]
Налада аўдыё, якая сапраўды мае значэнне 🎚️
Некалькі дробных выпраўленняў робяць вашага памочніка ў 10 разоў разумнейшым:
-
Адлегласць паміж мікрафонамі : 30–60 см — гэта аптымальная адлегласць для многіх USB-мікрафонаў.
-
Узроўні : пазбягайце абрэзкі на ўваходзе і захоўвайце нармальнае прайграванне; выпраўце маршрутызацыю, перш чым гнацца за фантомамі кода. У Raspberry Pi OS вы можаце кіраваць выходнай прыладай і ўзроўнямі з дапамогай сістэмных інструментаў або
raspi-config. [1] -
Акустыка памяшкання : цвёрдыя сцены выклікаюць рэха; мяккі кілімок пад мікрафонам дапамагае.
-
Парог абуджэння слова : занадта адчувальны → прывідныя трыгеры; занадта строгі → вы будзеце крычаць на пластык. Porcupine дазваляе рэгуляваць адчувальнасць для кожнага ключавога слова. [2]
-
Тэрмічная апрацоўка : доўгія транскрыпцыі на Pi 5 атрымліваюць выгаду ад афіцыйнага актыўнага кулера для ўстойлівай прадукцыйнасці. [1]
Пераход ад цацкі да бытавой тэхнікі: абслугоўванне, аўтазапуск, праверкі спраўнасці 🧯
Людзі забываюць запускаць скрыпты. Кампутары забываюць быць добрымі. Ператварыце свой цыкл у кіраваны сэрвіс:
-
Стварыце блок systemd:
[Блок] Апісанне=DIY Voice Assistant Пасля=network.target sound.target [Сэрвіс] Карыстальнік=pi WorkingDirectory=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Перазагрузка=заўсёды RestartSec=3 [Усталёўка] WantedBy=multi-user.target
-
Уключыць гэта:
sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
-
Хвасты бярвення:
journalctl -u памочнік -f
Цяпер ён запускаецца пры загрузцы, перазапускаецца пры збоі і ў цэлым паводзіць сябе як звычайная прылада. Трохі сумна, але значна лепш.
Сістэма навыкаў: зрабіце яе сапраўды карыснай дома 🏠✨
Пасля таго, як голас уключаны і выключаны, дадайце дзеянні:
-
Маршрутызатар Intent : простыя маршруты па ключавых словах для распаўсюджаных задач.
-
Разумны дом : публікацыя падзей у MQTT або выклік HTTP-канцавых кропак Home Assistant.
-
Плагіны : хуткія функцыі Python, такія як
set_timer,what_is_the_time,play_radio,run_scene.
Нават з улікам наяўнасці воблачнага LLM, спачатку накіроўвайце відавочныя лакальныя каманды для хуткасці і надзейнасці.
Толькі лакальна супраць Cloud Assist: кампрамісы, якія вы адчуеце 🌓
Толькі лакальна.
Перавагі: прыватнасць, аўтаномны доступ, прадказальныя выдаткі.
Недахопы: больш цяжкія мадэлі могуць працаваць павольна на невялікіх дошках. Шматмоўнае навучанне Whisper дапамагае забяспечыць надзейнасць, калі вы захоўваеце яго на прыладзе або на бліжэйшым серверы. [3]
хмарнай дапамогі
: магутнае лагічнае мысленне, большыя кантэкстныя вокны.
Недахопы: дадзеныя пакідаюць прыладу, залежнасць ад сеткі, зменныя выдаткі.
Гібрыд часта перамагае: слова для прабуджэння + лакальны ASR → выклікаць API для разважанняў → лакальны TTS. [2][3][5]
Пошук і ліквідацыя непаладак: дзіўныя грэмліны і хуткія рашэнні 👾
-
Ілжывыя спрацоўванні па словах абуджэння : знізіце адчувальнасць або паспрабуйце іншы мікрафон. [2]
-
Затрымка ASR : выкарыстоўвайце меншую мадэль Whisper або збірайце
whisper.cppса сцягамі выпуску (-j --config Release). [4] -
Перарывісты TTS : папярэдне генеруйце распаўсюджаныя фразы; пацвердзіце сваю аўдыёпрыладу і частату дыскрэтызацыі.
-
Мікрафон не выяўлены : праверце
arecord -lі мікшэры. -
Тэрматролінг : для ўстойлівай прадукцыйнасці выкарыстоўвайце афіцыйны актыўны кулер на Pi 5. [1]
Заўвагі па бяспецы і прыватнасці, якія вам варта прачытаць 🔒
-
Абнаўляйце свой Pi з дапамогай APT.
-
Калі вы карыстаецеся якім-небудзь воблачным API, запісвайце адпраўленыя даныя ў журнал і спачатку выдаляйце асабістыя дадзеныя лакальна.
-
Запускайце службы з найменшымі прывілеямі; пазбягайце
sudoў ExecStart, калі гэта не патрабуецца. -
Забяспечце рэжым толькі для мясцовых гасцей або ціхія гадзіны.
Варыянты зборкі: камбінуйце, як сэндвіч 🥪
-
Ультралакальны : Porcupine + whisper.cpp + Piper + простыя правілы. Прыватны і надзейны. [2][4][5]
-
Хуткая дапамога ў воблаку : Porcupine + (меншы лакальны Whisper або хмарны ASR) + лакальны TTS + хмарны LLM.
-
Цэнтр хатняй аўтаматызацыі : дадайце патокі Node-RED або Home Assistant для падпраграм, сцэн і датчыкаў.
Прыклад навыку: Уключэнне святла праз MQTT 💡
import paho.mqtt.client as 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" if state.lower().startswith("on") else "OFF" client.publish(TOPIC, payload, qos=1, retain=False) client.disconnect() # калі ў тэксце "уключыць святло": set_light("on")
Дадайце такую галасавую фразу, як: «Уключыце лямпу ў гасцінай», і вы адчуеце сябе чараўніком.
Чаму гэты стэк працуе на практыцы 🧪
-
Porcupine эфектыўна і дакладна распазнае словы, якія выклікаюць абуджэнне, на невялікіх дошках, што робіць магчымым пастаяннае праслухоўванне. [2]
-
Шырока распаўсюджанае шматмоўнае навучанне Whisper робіць яго ўстойлівым да розных асяроддзяў і акцэнтаў. [3]
-
shippet.cppдазваляе выкарыстоўваць гэтую магутнасць толькі на прыладах, якія выкарыстоўваюць толькі працэсар, такіх як Pi. [4] -
Piper захоўвае хуткія адказы, не адпраўляючы аўдыё ў воблачны TTS. [5]
Занадта доўга, не чытаў
Стварыце модульнага прыватнага памочніка са штучным інтэлектам на 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 тыс. гадзін
-
Рэдфард і інш., Надзейнае распазнаванне маўлення з дапамогай маштабнага слабога кантролю (шэпт): чытаць далей
-
-
whispett.cpp — зручны для працэсара вывад Whisper з дапамогай CLI і этапаў зборкі
-
Piper TTS — хуткі лакальны нейронны TTS з некалькімі галасамі/моў