Как да си направим „Направи си сам“ AI асистент с Raspberry Pi

Как да си направим „Направи си сам“ AI асистент с Raspberry Pi

Искате малък гласов асистент, който действително следва вашите указания, работи на вашия собствен хардуер и няма случайно да поръча дванадесет ананаса, защото ви е чул погрешно? „ Направи си сам“ AI асистент с Raspberry Pi е изненадващо постижим, забавен и гъвкав. Ще свържете дума за събуждане, разпознаване на реч (ASR = автоматично разпознаване на реч), мозък за естествен език (правила или LLM) и преобразуване на текст в реч (TTS). Добавете няколко скрипта, една или две услуги и някои внимателни аудио настройки и ще имате джобен интелигентен високоговорител, който се подчинява на вашите правила.

Нека ви помогнем да започнете от нулата до това да говорите с вашия Pi без обичайното дърпане на косата. Ще разгледаме части, настройка, код, сравнения, хващания... цялото бурито. 🌯

Статии, които може да ви харесат след тази:

🔗 Как да изучаваме изкуствения интелект ефективно
Създайте пътна карта за обучение, практикувайте проекти и проследявайте напредъка.

🔗 Как да стартирате компания за изкуствен интелект
Валидиране на проблема, изграждане на MVP, сформиране на екип, осигуряване на първоначални клиенти.

🔗 Как да използвате изкуствен интелект, за да бъдете по-продуктивни
Автоматизирайте рутинните задачи, рационализирайте работните процеси и увеличете творческия резултат.

🔗 Как да внедрите изкуствен интелект във вашия бизнес
Идентифицирайте процеси с голямо въздействие, внедрете пилотни проекти, измерете възвръщаемостта на инвестициите, мащабирайте.


Какво прави един добър „Направи си сам“ асистент с изкуствен интелект с Raspberry Pi ✅

  • По подразбиране е лично – аудиото се запазва локално, където е възможно. Вие решавате какво да напуска устройството.

  • Модулни – сменяеми компоненти като Lego: движеща система за wake word, ASR, LLM, TTS.

  • Достъпни – предимно микрофони, високоговорители и Raspberry Pi с отворен код.

  • Хакируемо – искате домашна автоматизация, табла за управление, рутини, персонализирани умения? Лесно.

  • Надежден – управляван от услугата, стартира и започва да слуша автоматично.

  • Забавно – ще научите много за аудиото, процесите и дизайна, управляван от събития.

Малък съвет: Ако използвате Raspberry Pi 5 и планирате да използвате по-тежки локални модели, охладител с щипка помага при продължително натоварване. (В случай на съмнение, изберете официалния активен охладител, предназначен за Pi 5.) [1]


Части и инструменти, които ще ви трябват 🧰

  • Raspberry Pi : Препоръчва се Pi 4 или Pi 5 за по-голямо пространство.

  • microSD карта : препоръчва се 32 GB+.

  • USB микрофон : обикновен USB конферентен микрофон е чудесен.

  • Говорител : USB или 3,5 мм високоговорител, или I2S усилвател HAT.

  • Мрежа : Ethernet или Wi-Fi.

  • Допълнителни екстри: корпус, активен охладител за Pi 5, бутон за разговори, LED пръстен. [1]

ОС и базова настройка

  1. Флаширайте Raspberry Pi OS с Raspberry Pi Imager. Това е лесният начин да получите стартираща microSD карта с желаните от вас предварително зададени настройки. [1]

  2. Стартирайте, свържете се с мрежата и след това актуализирайте пакетите:

sudo apt update && sudo apt upgrade -y
  1. Основни положения на звука : В Raspberry Pi OS можете да зададете изхода по подразбиране, нивата и устройствата чрез потребителския интерфейс на работния плот или raspi-config . USB и HDMI аудио се поддържат във всички модели; Bluetooth изходът е наличен при модели с Bluetooth. [1]

  2. Проверка на устройства:

arecord -l aplay -l

След това тествайте заснемането и възпроизвеждането. Ако нивата ви се струват странни, проверете миксерите и настройките по подразбиране, преди да обвинявате микрофона.

 

Изкуствен интелект Raspberry Pi

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

Разумен „ Направи си сам“ AI асистент с Raspberry Pi flow изглежда така:

Будна дума → заснемане на аудио на живо → ASR транскрипция → обработка на намерение или LLM → текст на отговор → TTS → възпроизвеждане на аудио → допълнителни действия чрез MQTT или HTTP.

  • Събуждащата се дума : Porcupine е малка, точна и работи локално с контрол на чувствителността за всяка ключова дума. [2]

  • ASR : Whisper е многоезичен ASR модел с общо предназначение, обучен в продължение на ~680 000 часа; той е устойчив на акценти/фонов шум. За употреба на устройството, shippe.cpp предоставя лесен път за извод на C/C++. [3][4]

  • Мозък : Вашият избор – облачен LLM чрез API, система за правила или локален извод в зависимост от мощността.

  • TTS : Piper генерира естествена реч локално, достатъчно бързо за бързи отговори на скромен хардуер. [5]


Таблица за бързо сравнение 🔎

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

Стъпка по стъпка изграждане: Вашият първи гласов цикъл 🧩

Ще използваме Porcupine за дума за събуждане, Whisper за транскрипция, лека „мозъчна“ функция за отговора (заменете с избрания от вас LLM) и Piper за реч. Оставете го минимално, след което итерирайте.

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

sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 инсталира звуково устройство numpy
  • Porcupine: вземете SDK/bindings за вашия език и следвайте бързия старт (клавиш за достъп + списък с ключови думи + аудио кадри → .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 е проектиран за синтез на говор на устройството с множество опции за глас/език. [5]

3) Минимален асистентски цикъл в Python

Умишлено компактно: чака фраза за събуждане (stub), записва, транскрибира с shippe.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("Въведете фразата за събуждане, за да тествате цикъла.")

За истинско откриване на „wake-word“, интегрирайте стрийминг детектора на Porcupine (нисък процесор, чувствителност за всяка ключова дума). [2]


Аудио тунинг, който наистина има значение 🎚️

Няколко малки корекции карат вашия асистент да се чувства 10 пъти по-умен:

  • Разстояние до микрофона : 30–60 см е идеалното разстояние за много USB микрофони.

  • Нива : избягвайте изрязване на входа и поддържайте възпроизвеждането разумно; коригирайте маршрутизацията, преди да преследвате кодови фантомни кодове. В Raspberry Pi OS можете да управлявате изходното устройство и нивата чрез системни инструменти или raspi-config . [1]

  • Акустика на помещението : твърдите стени причиняват ехо; мека подложка под микрофона помага.

  • Праг на събуждащата дума : твърде чувствителен → фантомни тригери; твърде строг → ще крещите на пластмаса. Porcupine ви позволява да настройвате чувствителността за всяка ключова дума. [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. Активирайте го:

sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
  1. Опашки от трупи:

journalctl -u асистент -f

Сега стартира при зареждане, рестартира при срив и като цяло се държи като устройство. Малко скучно, но много по-добре.


Система от умения: Направете я наистина полезна у дома 🏠✨

След като гласът е включен и изключен, добавете действия:

  • Intent рутер : прости маршрути с ключови думи за често срещани задачи.

  • Умен дом : публикуване на събития в MQTT или обаждане до HTTP крайните точки на Home Assistant.

  • Плъгини : бързи Python функции като set_timer , what_is_the_time , play_radio , run_scene .

Дори с облачен LLM в цикъла, първо насочвайте очевидните локални команди за бързина и надеждност.


Само локално срещу облачна помощ: Компромиси, които ще усетите 🌓

Само локално.
Плюсове: частно, офлайн, предвидими разходи.
Минуси: по-тежките модели може да са бавни на малки дъски. Многоезичното обучение на Whisper помага за по-голяма стабилност, ако го държите на устройството или на близък сървър. [3]

на облачната помощ
: мощно разсъждение, по-големи контекстни прозорци.
Минуси: данните напускат устройството, мрежова зависимост, променливи разходи.

Хибридът често печели: wake word + ASR local → извикване на API за разсъждение → TTS local. [2][3][5]


Отстраняване на неизправности: Странни гремлини и бързи решения 👾

  • Фалшиви задействания на дума за събуждане : намалете чувствителността или опитайте друг микрофон. [2]

  • Закъснение на ASR : използвайте по-малък модел на Whisper или изградете whisper.cpp с флагове за освобождаване ( -j --config Release ). [4]

  • Накъсан текст : предварително генериране на често срещани фрази; потвърдете аудио устройството си и честотата на семплиране.

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

  • Термично дроселиране : използвайте официалния Active Cooler на Pi 5 за устойчива производителност. [1]


Бележки за сигурност и поверителност, които наистина трябва да прочетете 🔒

  • Поддържайте вашия Pi актуализиран с APT.

  • Ако използвате облачен API, регистрирайте изпратеното и първо помислете за локално редактиране на лични данни.

  • Стартирайте услуги с най-малки привилегии; избягвайте sudo в ExecStart, освен ако не е необходимо.

  • Осигурете режим само за локално ползване за гости или тихи часове.


Варианти за изграждане: Комбинирайте като сандвич 🥪

  • Ултра-локален : Porcupine + sheppe.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 е ефикасен и точен при откриване на „wake-word“ на малки дъски, което прави възможно постоянното слушане. [2]

  • Обширното, многоезично обучение на Whisper го прави устойчиво на различни среди и акценти. [3]

  • wishept.cpp запазва тази мощност използваема само на процесорни устройства, като например Pi. [4]

  • Piper поддържа отговорите бързи, без да изпраща аудио към облачен TTS. [5]


Твърде дълго, не го прочетох

Изградете модулен, частен „Направи си сам“ AI асистент с Raspberry Pi , като комбинирате Porcupine за „wake word“, 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 000 часа

    • Радфорд и др., Надеждно разпознаване на реч чрез широкомащабен слаб надзор (шепот): прочетете повече

  4. whisp.cpp – Удобен за процесора Whisper inference с CLI и стъпки за изграждане

  5. Piper TTS – Бърз, локален невронно TTS с множество гласове/езици

Намерете най-новия изкуствен интелект в официалния магазин за асистенти с изкуствен интелект

За нас


Обратно към блога