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

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

Сакате мал гласовен асистент кој всушност го следи вашиот пример, работи на вашиот сопствен хардвер и нема случајно да нарача дванаесет ананаси затоа што погрешно ве слушнал? „Направи сам“ асистент со вештачка интелигенција со Raspberry Pi е изненадувачки остварлив, забавен и флексибилен. Ќе поврзете збор за будење, препознавање на говор (ASR = автоматско препознавање на говор), мозок за природен јазик (правила или LLM) и претворање на текст во говор (TTS). Додадете неколку скрипти, една или две услуги и неколку внимателни аудио прилагодувања, и ќе добиете џебен паметен звучник кој ги почитува вашите правила.

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

Статии што можеби ќе ве интересираат по оваа:

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

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

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

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


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

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

  • Модуларен – заменете компоненти како Lego: wake word engine, ASR, LLM, TTS.

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

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

  • Сигурно – управувано од услугата, се стартува и почнува да слуша автоматски.

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

Мал совет: Ако користите Raspberry Pi 5 и планирате да користите потешки локални модели, ладилникот со клип помага при континуирано оптоварување. (Кога се сомневате, изберете го официјалниот активен ладилник дизајниран за Pi 5.) [1]


Делови и алатки што ќе ви бидат потребни 🧰

  • Raspberry Pi : Се препорачува Pi 4 или Pi 5 за простор за глава.

  • microSD картичка : препорачана 32 GB+.

  • USB микрофон : едноставен USB конференциски микрофон е одличен.

  • Звучник : USB или 3,5 мм звучник или I2S засилувач HAT.

  • Мрежа : Етернет или 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 прикажи -l

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


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

Разумен DIY AI асистент со Raspberry Pi flow изгледа вака:

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

  • Wake word : Porcupine е мал, прецизен и работи локално со контрола на чувствителноста по клучен збор. [2]

  • ASR : Whisper е повеќејазичен, ASR модел за општа намена трениран на ~680.000 часа; отпорен е на акценти/шум во позадина. За употреба на уредот, whisper.cpp обезбедува лесна патека за инференција во C/C++. [3][4]

  • Мозок : Вашиот избор – cloud LLM преку API, rule engine или локално изведување во зависност од коњските сили.

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


Брза споредбена табела 🔎

Алатка Најдобро за Премногу скапо Зошто функционира
Збор за будење на поркупин Секогаш слушачки тригер Бесплатно ниво + Мал процесор, прецизност, лесно поврзување [2]
Whisper.cpp Локален ASR на Pi Отворен код Добра прецизност, прилагоден за процесорот [4]
Побрзо шепотење Побрз ASR на процесорот/графичката картичка Отворен код Оптимизации на CTranslate2
Пајпер TTS Локален говорен излез Отворен код Брзи гласови, многу јазици [5]
API за LLM во облак Богато расудување Врз основа на употреба Ги намалува тешките компјутерски оптоварувања
Јазол-ЦРВЕНО Оркестрирање на акции Отворен код Визуелни текови, MQTT пријателски настроени кон

Чекор-по-чекор градење: Вашата прва гласовна јамка 🧩

Ќе користиме Porcupine за wake word, Whisper за транскрипција, лесна „мозочна“ функција за одговор (заменете ја со LLM по ваш избор) и Piper за говор. Одржувајте го минимално, а потоа повторувајте.

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

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

  • Whisper (пријателски за процесорот): изгради whisper.cpp :

git клон 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

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

увоз os, подпроцес, бран увоз sounddevice како sd WAKE_WORD = "здраво компјутере" # замена за 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(патека, секунди=RECORD_SECONDS): аудио = 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 "Не можам да ги видам облаците, но можеби е во ред. Донесете јакна за секој случај." врати "Рековте: " + 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("Асистент:", reply) speak(reply) else: print("Внесете ја фразата за будење за да ја тестирате јамката.")

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


Аудио подесување кое навистина е важно 🎚️

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

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

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

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

  • Праг на збор за будење : премногу чувствителен → активирачи на духови; премногу строг → ќе викате на пластика. Porcupine ви овозможува да ја прилагодите чувствителноста по клучни зборови. [2]

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


Премин од играчка до апарат за домаќинство: Услуги, автоматско стартување, проверки на состојбата 🧯

Луѓето забораваат да извршуваат скрипти. Компјутерите забораваат да бидат љубезни. Претворете ја вашата јамка во управувана услуга:

  1. Креирај системска единица:

[Единица] Опис=Направи сам гласовен асистент After=network.target sound.target [Услуга] Корисник=pi WorkingDirectory=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Restart=always 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

Сега се стартува при стартување, се рестартира при пад на системот и генерално се однесува како уред. Малку е здодевно, многу подобро.


Систем за вештини: Направете го навистина корисен дома 🏠✨

Откако гласовните индукции и гласовните исклучување ќе се цврсти, додадете дејства:

  • Наменски рутер : едноставни рути со клучни зборови за вообичаени задачи.

  • Паметен дом : објавувајте настани на MQTT или јавете се на HTTP крајните точки на Home Assistant.

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

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


Само локално наспроти помош во облак: Компромиси што ќе ги почувствувате 🌓

Само локално
Предности: приватно, офлајн, предвидливи трошоци.
Недостатоци: потешките модели може да бидат бавни на мали плочи. Повеќејазичната обука на Whisper помага со робусноста ако ја чувате на уредот или на близок сервер. [3]

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

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


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

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

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

  • Нерамномерен текст во текст : однапред генерирајте вообичаени фрази; потврдете го вашиот аудио уред и стапките на семплирање.

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

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


Белешки за безбедност и приватност што навистина треба да ги прочитате 🔒

  • Одржувајте го вашиот Pi ажуриран со APT.

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

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

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


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

  • Ултра-локално : Поркупин + шепот.cpp + Пајпер + едноставни правила. Приватно и цврсто. [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 = "дом/дневна соба/светило/сет" 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() # if "вклучи ги светлата" во текстот: set_light("вклучено")

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


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

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

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

  • whisper.cpp ја одржува таа енергија употреблива на уреди само со процесор како Pi. [4]

  • Пајпер ги одржува одговорите брзи без да испраќа аудио до облак TTS. [5]


Предолго, не го прочитав

Изградете модуларен, приватен „направи сам“ асистент со вештачка интелигенција со Raspberry Pi со комбинирање на Porcupine за wake word, Whisper (преку whisper.cpp ) за ASR, мозокот по ваш избор за одговори и 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. whisper.cpp – Инференција на Whisper прилагодена за процесорот со CLI и чекори за градење

  5. Piper TTS – Брз, локален невронски TTS со повеќе гласови/јазици

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

За нас


Назад кон блогот