Ուզու՞մ եք փոքրիկ ձայնային օգնական, որը իրականում կհետևի ձեր օրինակին, կաշխատի ձեր սեփական սարքավորմամբ և պատահաբար չի պատվիրի տասներկու անանաս, քանի որ սխալ է լսել ձեզ: 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]
Օպերացիոն համակարգի և բազային կարգաբերման
-
Raspberry Pi օպերացիոն համակարգի ֆլեշ Raspberry Pi Imager-ի միջոցով: Սա ամենապարզ միջոցն է բեռնվող microSD քարտ ստանալու համար՝ ձեր ցանկալի նախադրված կարգավորումներով: [1]
-
Բեռնել, միանալ ցանցին, ապա թարմացնել փաթեթները՝
sudo apt թարմացում և sudo apt թարմացում -y
-
Աուդիո հիմունքներ . Raspberry Pi OS-ում դուք կարող եք սահմանել լռելյայն ելքը, մակարդակները և սարքերը աշխատասեղանի ինտերֆեյսի կամ
raspi-config-ի: USB և HDMI աուդիոն աջակցվում է բոլոր մոդելներում. Bluetooth ելքը հասանելի է Bluetooth-ով մոդելներում: [1] -
Ստուգեք սարքերը՝
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]
Խաղալիքից անցում կենցաղային տեխնիկայի. ծառայություններ, ավտոմատ մեկնարկ, վիճակի ստուգումներ 🧯
Մարդիկ մոռանում են սկրիպտներ գործարկել։ Համակարգիչները մոռանում են լավը լինել։ Վերածեք ձեր ցիկլը կառավարվող ծառայության։
-
Ստեղծեք համակարգային միավոր՝
[Միավոր] Նկարագրություն=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
-
Միացնել այն՝
sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
-
Գերանի պոչեր՝
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]
Հղումներ
-
Raspberry Pi ծրագրային ապահովում և սառեցում – Raspberry Pi Imager (ներբեռնեք և օգտագործեք) և Pi 5 Active Cooler ապրանքի մասին տեղեկություններ
-
Raspberry Pi Imager: կարդալ ավելին
-
Ակտիվ սառեցուցիչ (Pi 5): կարդալ ավելին
-
-
Porcupine Wake Word – SDK և արագ մեկնարկ (բանալի բառեր, զգայունություն, տեղական եզրակացություն)
-
Whisper (ASR մոդել) – Բազմալեզու, հզոր ASR, որը մարզվել է մոտ 680 հազար ժամվա ընթացքում։
-
Ռեդֆորդ և այլք, Հզոր խոսքի ճանաչում լայնածավալ թույլ վերահսկողության միջոցով (Շշուկ). կարդալ ավելին
-
-
whisper.cpp – CPU-ի համար հարմար Whisper եզրակացություն CLI-ով և կառուցման քայլերով
-
Piper TTS – Արագ, տեղային նեյրոնային TTS՝ բազմաթիվ ձայներով/լեզուներով