Ինչպես ստեղծել ինքնուրույն արհեստական ​​ինտելեկտի օգնական Raspberry Pi-ի միջոցով

Ինչպես ստեղծել ինքնուրույն արհեստական ​​ինտելեկտի օգնական Raspberry Pi-ի միջոցով

Ուզու՞մ եք փոքրիկ ձայնային օգնական, որը իրականում կհետևի ձեր օրինակին, կաշխատի ձեր սեփական սարքավորմամբ և պատահաբար չի պատվիրի տասներկու անանաս, քանի որ սխալ է լսել ձեզ: Raspberry Pi-ով ինքնուրույն պատրաստված արհեստական ​​բանականության օգնականը զարմանալիորեն հասանելի է, զվարճալի և ճկուն: Դուք կկազմակերպեք արթնացնող բառ, խոսքի ճանաչում (ASR = ավտոմատ խոսքի ճանաչում), բնական լեզվի ուղեղ (կանոններ կամ LLM) և տեքստից խոսք փոխակերպում (TTS): Ավելացրեք մի քանի սկրիպտներ, մեկ կամ երկու ծառայություն և որոշ զգույշ աուդիո կարգավորումներ, և դուք կունենաք գրպանի մեջ տեղավորվող խելացի բարձրախոս, որը ենթարկվում է ձեր կանոններին:

Եկեք զրոյից հասցնենք ձեր Pi-ի հետ խոսելու մակարդակի՝ առանց սովորական «մազերս քաշելու» անհրաժեշտության։ Մենք կանդրադառնանք մասերին, կարգավորմանը, կոդին, համեմատություններին, խճճվածքներին... ամբողջ բուրիտոյին։ 🌯

Հոդվածներ, որոնք կարող են ձեզ դուր գալ կարդալ սրանից հետո.

🔗 Ինչպես արդյունավետորեն ուսումնասիրել արհեստական ​​բանականությունը
Ստեղծեք ուսումնական ճանապարհային քարտեզ, պրակտիկ նախագծեր և հետևեք առաջընթացին։

🔗 Ինչպես սկսել արհեստական ​​բանականության ընկերություն
Հաստատել խնդիրը, կառուցել 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 ԳԲ+։

  • USB միկրոֆոն . պարզ USB կոնֆերանս միկրոֆոնը հիանալի է:

  • Բարձրախոս ՝ USB կամ 3.5 մմ բարձրախոս, կամ I2S amp HAT:

  • Ցանց ՝ Ethernet կամ Wi-Fi:

  • Լրացուցիչ հարմարություններ՝ պատյան, ակտիվ սառեցուցիչ , սեղմման կոճակ՝ խոսելու համար, LED օղակ։ [1]

Օպերացիոն համակարգի և բազային կարգաբերման

  1. Raspberry Pi օպերացիոն համակարգի ֆլեշ Raspberry Pi Imager-ի միջոցով: Սա ամենապարզ միջոցն է բեռնվող microSD քարտ ստանալու համար՝ ձեր ցանկալի նախադրված կարգավորումներով: [1]

  2. Բեռնել, միանալ ցանցին, ապա թարմացնել փաթեթները՝

sudo apt թարմացում և sudo apt թարմացում -y
  1. Աուդիո հիմունքներ . Raspberry Pi OS-ում դուք կարող եք սահմանել լռելյայն ելքը, մակարդակները և սարքերը աշխատասեղանի ինտերֆեյսի կամ raspi-config-ի : USB և HDMI աուդիոն աջակցվում է բոլոր մոդելներում. Bluetooth ելքը հասանելի է Bluetooth-ով մոդելներում: [1]

  2. Ստուգեք սարքերը՝

arecord -l aplay -l

Այնուհետև փորձարկեք ձայնագրումը և վերարտադրումը: Եթե մակարդակները տարօրինակ են թվում, ստուգեք միքսերները և լռելյայն կարգավորումները, նախքան միկրոֆոնին մեղադրելը:


Ճարտարապետությունը մեկ հայացքով 🗺️

Raspberry Pi flow-ով խելացի այսպիսի տեսք ունի.

Wake word → ուղիղ աուդիո ձայնագրություն → ASR տառադարձում → intent machineing կամ LLM → պատասխան տեքստ → TTS → աուդիո վերարտադրում → MQTT կամ HTTP միջոցով լրացուցիչ գործողություններ։

  • Wake word : Porcupine-ը փոքր է, ճշգրիտ և աշխատում է տեղայնորեն՝ յուրաքանչյուր բանալի բառի զգայունության կարգավորմամբ։ [2]

  • ASR : Whisper-ը բազմալեզու, ընդհանուր նշանակության ASR մոդել է, որը մարզվում է մոտ 680 հազար ժամվա ընթացքում. այն դիմացկուն է շեշտադրումների/ֆոնային աղմուկի նկատմամբ: Սարքի վրա օգտագործման համար whisper.cpp-ը ապահովում է C/C++ լեզվի ինֆերենցիայի ուղի: [3][4]

  • Brain . Ձեր ընտրությունը՝ ամպային LLM API-ի միջոցով, կանոնների շարժիչ կամ լոկալ եզրակացություն՝ կախված ձիաուժից։

  • TTS : Piper-ը տեղական մակարդակով ստեղծում է բնական խոսք, բավականաչափ արագ՝ համեստ սարքավորումների վրա արագ արձագանքների համար: [5]


Համեմատական ​​աղյուսակ 🔎

Գործիք Լավագույնը Գինու չափ Ինչու է այն աշխատում
Porcupine Wake Word-ը Մշտապես լսող ազդանշան Անվճար մակարդակ + Ցածր CPU, ճշգրիտ, հեշտ կապակցումներ [2]
Whisper.cpp Տեղական ASR Pi-ի վրա Բաց կոդով Լավ ճշգրտություն, CPU-ի համար հարմար [4]
Ավելի արագ շշուկ Ավելի արագ ASR պրոցեսորի/գրաֆիկական պրոցեսորի վրա Բաց կոդով CTranslate2 օպտիմալացումներ
Piper TTS Տեղական խոսքի արտածում Բաց կոդով Արագ ձայներ, բազմաթիվ լեզուներ [5]
Cloud LLM API Հարուստ դատողություն Օգտագործման վրա հիմնված Ազատում է ծանր համակարգչային ծանրաբեռնվածությունից
Հանգույց-ԿԱՐՄԻՐ Գործողությունների կազմակերպում Բաց կոդով Տեսողական հոսքեր, MQTT-ի համար հարմար

Քայլ առ քայլ կառուցում. Ձեր առաջին ձայնային ցիկլը 🧩

Մենք կօգտագործենք Porcupine-ը արթնացնող բառի համար, 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-ում նվազագույն օգնականի ցիկլ

Միտումնավոր սեղմված. սպասում է wake արտահայտության (stub), ձայնագրում է, տառադարձում է whisper.cpp- , ստեղծում է պատասխան (տեղապահ), ապա խոսում է Piper-ի միջոցով: Փոխարինեք տեղապահը ձեր նախընտրած LLM-ով կամ կանոնների տրամաբանությամբ:

ներմուծել os, ենթապրոցես, ալիք ներմուծել ձայնային սարքը որպես 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(path, seconds=RECORD_SECONDS): audio = sd.rec(int(seconds * 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("Օգնական:", reply) speak(reply) else: print("Մուտքագրեք արթնացման արտահայտությունը ցիկլը փորձարկելու համար։")

Իրական արթնացող բառերի հայտնաբերման համար ինտեգրեք Porcupine-ի հոսքային դետեկտորը (ցածր CPU, յուրաքանչյուր բանալի բառի նկատմամբ զգայունություն): [2]


Աուդիո կարգավորում, որն իսկապես կարևոր է 🎚️

Մի քանի փոքր շտկումներ ձեր օգնականին 10 անգամ ավելի խելացի կզգացնեն.

  • Միկրոֆոնի հեռավորությունը . 30–60 սմ-ը լավագույն տարբերակն է շատ USB միկրոֆոնների համար։

  • Մակարդակներ . խուսափեք մուտքային տվյալների կտրումից և պահպանեք վերարտադրման կարգը. շտկեք երթուղայնացումը՝ նախքան կոդի ուրվականներին հետապնդելը: Raspberry Pi OS-ում դուք կարող եք կառավարել ելքային սարքը և մակարդակները համակարգային գործիքների կամ raspi-config-ի : [1]

  • Սենյակի ակուստիկա . կոշտ պատերը արձագանք են առաջացնում. միկրոֆոնի տակ փափուկ գորգը օգնում է։

  • Wake բառի շեմը . չափազանց զգայուն → ghost triggers; չափազանց խիստ → դուք կգոռաք պլաստիկի վրա: Porcupine-ը թույլ է տալիս կարգավորել զգայունությունը յուրաքանչյուր բանալի բառի համար: [2]

  • Ջերմային էֆեկտներ . Pi 5-ի վրա երկար ձայնագրությունները օգտվում են պաշտոնական ակտիվ սառեցուցիչից՝ կայուն աշխատանքի համար: [1]


Խաղալիքից անցում կենցաղային տեխնիկայի. ծառայություններ, ավտոմատ մեկնարկ, վիճակի ստուգումներ 🧯

Մարդիկ մոռանում են սկրիպտներ գործարկել։ Համակարգիչները մոռանում են լավը լինել։ Վերածեք ձեր ցիկլը կառավարվող ծառայության։

  1. Ստեղծեք համակարգային միավոր՝

[Միավոր] Նկարագրություն=DIY ձայնային օգնական After=network.target sound.target [Ծառայություն] User=pi WorkingDirectory=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Վերագործարկում=միշտ ՎերագործարկումSec=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-ում կամ զանգահարեք Home Assistant-ի HTTP վերջնակետերին:

  • Պլագիններ ՝ արագ Python ֆունկցիաներ, ինչպիսիք են set_timer , what_is_the_time , play_radio , run_scene ։

Նույնիսկ եթե ցիկլում ունեք ամպային LLM, արագության և հուսալիության համար նախ ուղղորդեք ակնհայտ տեղական հրամանները։


Միայն տեղական vs ամպային օգնություն. փոխզիջումներ, որոնք դուք կզգաք 🌓

Միայն տեղական տարբերակով
Առավելություններ՝ մասնավոր, անցանց, կանխատեսելի ծախսեր։
Թերություններ՝ ավելի ծանր մոդելները կարող են դանդաղ աշխատել փոքր տախտակների վրա։ Whisper-ի բազմալեզու ուսուցումը նպաստում է կայունությանը, եթե այն պահեք սարքի վրա կամ մոտակա սերվերի վրա։ [3]

Ամպային օգնություն։
Առավելություններ՝ հզոր դատողություն, ավելի մեծ համատեքստային պատուհաններ։
Թերություններ՝ տվյալները թողնում են սարքը, ցանցային կախվածությունը, փոփոխական ծախսերը։

Հիբրիդը հաճախ հաղթում է. wake word + ASR local → API-ի կանչ դատողության համար → TTS local: [2][3][5]


Խնդիրների լուծում. Տարօրինակ գրեմլիններ և արագ լուծումներ 👾

  • «Արթնացնել կեղծ բառ» ազդանշանները . իջեցրեք զգայունությունը կամ փորձեք այլ միկրոֆոն։ [2]

  • ASR lag . օգտագործեք ավելի փոքր 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")

Ավելացրեք ձայնային տող, օրինակ՝ «միացրեք հյուրասենյակի լամպը», և դուք ձեզ կախարդ կզգաք։


Ինչու է այս Stack-ը գործում գործնականում 🧪

  • Porcupine-ը արդյունավետ և ճշգրիտ է փոքր տախտակների վրա արթնացող բառերի հայտնաբերման հարցում, ինչը հնարավոր է դարձնում միշտ լսելի լինելը։ [2]

  • Whisper-ի լայնածավալ, բազմալեզու ուսուցումը այն դարձնում է դիմացկուն տարբեր միջավայրերի և առոգանությունների համար։ [3]

  • whisper.cpp-ը այդ հզորությունը պահպանում է օգտագործելի միայն պրոցեսորով աշխատող սարքերի վրա, ինչպիսին է Pi-ն։ [4]

  • Piper-ը պահպանում է արագ արձագանքներ՝ առանց ձայնը ամպային 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 հազար ժամվա ընթացքում։

    • Ռեդֆորդ և այլք, Հզոր խոսքի ճանաչում լայնածավալ թույլ վերահսկողության միջոցով (Շշուկ). կարդալ ավելին

  4. whisper.cpp – CPU-ի համար հարմար Whisper եզրակացություն CLI-ով և կառուցման քայլերով

  5. Piper TTS – Արագ, տեղային նեյրոնային TTS՝ բազմաթիվ ձայներով/լեզուներով

Գտեք արհեստական ​​բանականության վերջին նորույթները պաշտոնական արհեստական ​​բանականության օգնականների խանութում

Մեր մասին


Վերադառնալ բլոգ