Чӣ тавр як ёвари зеҳни сунъии DIY-ро бо Raspberry Pi сохтан мумкин аст

Чӣ тавр як ёвари зеҳни сунъии DIY-ро бо Raspberry Pi сохтан мумкин аст

Мехоҳед як ёвари хурди овозӣ, ки воқеан аз паи шумо равад, бо сахтафзори худатон кор кунад ва тасодуфан дувоздаҳ ананас фармоиш надиҳад, зеро шуморо нодуруст мешунавад? Ёвари зеҳни сунъии худсохт бо Raspberry Pi ба таври ҳайратангез дастрас, шавқовар ва чандир аст. Шумо калимаи бедоркунанда, шинохти нутқ (ASR = шинохти худкори нутқ), мағзи сар барои забони табиӣ (қоидаҳо ё LLM) ва матн ба нутқ (TTS)-ро пайваст мекунед. Якчанд скрипт, як ё ду хидмат ва баъзе танзимоти бодиққати аудиоро илова кунед ва шумо як баландгӯяки интеллектуалии ҷайбӣ доред, ки ба қоидаҳои шумо итоат мекунад.

Биёед шуморо аз сифр ба сӯҳбат бо Пи-и худ бидуни кашидани мӯйҳои маъмулӣ расонем. Мо қисмҳо, насб, рамз, муқоисаҳо, маълумоти дақиқ... тамоми бурриторо баррасӣ хоҳем кард. 🌯

Мақолаҳое, ки шумо метавонед баъд аз ин хонед, инҳоянд:

🔗 Чӣ тавр AI-ро самаранок омӯхтан мумкин аст
Харитаи роҳи таҳсилро тартиб диҳед, лоиҳаҳои амалӣ тартиб диҳед ва пешрафтро пайгирӣ кунед.

🔗 Чӣ тавр як ширкати зеҳни сунъиро оғоз кардан мумкин аст
Тасдиқи мушкилот, сохтани MVP, ҷамъоварии даста, таъмини муштариёни аввалия.

🔗 Чӣ тавр аз зеҳни сунъӣ барои самараноктар будан истифода бурдан мумкин аст
Автоматикунонии вазифаҳои муқаррарӣ, содда кардани ҷараёнҳои корӣ ва афзоиши натиҷаҳои эҷодӣ.

🔗 Чӣ тавр зеҳни сунъиро ба тиҷорати худ ворид кардан мумкин аст
Муайян кардани равандҳои таъсиррасон, татбиқи озмоишӣ, чен кардани ROI, миқёспазирӣ.


Чӣ як ёвари хуби зеҳни сунъии DIY-ро бо Raspberry Pi месозад ✅

  • Пешфарз махфӣ аст - аудиоро дар ҷойҳои имконпазир маҳаллӣ нигоҳ доред. Шумо қарор медиҳед, ки чӣ дастгоҳро тарк мекунад.

  • Модулӣ - ҷузъҳои ивазшаванда ба монанди Lego: Wake Word Engine, ASR, LLM, TTS.

  • Дастрас - асосан манбаи кушода, микрофонҳои молӣ, баландгӯякҳо ва Pi.

  • Hackable – мехоҳед автоматикунонии хона, панелҳои идоракунӣ, тартибҳои корӣ, малакаҳои фармоишӣ дошта бошед? Осон.

  • Боэътимод – аз ҷониби хидмат идора карда мешавад, боргирӣ мешавад ва гӯш карданро ба таври худкор оғоз мекунад.

  • Шавқовар - шумо дар бораи аудио, равандҳо ва тарроҳии ба рӯйдодҳо асосёфта бисёр чизҳоро меомӯзед.

Маслиҳати хурд: Агар шумо аз Raspberry Pi 5 истифода баред ва нақша доред, ки моделҳои вазнинтари маҳаллиро истифода баред, хунуккунандаи клипӣ дар зери бори доимӣ кӯмак мекунад. (Дар ҳолати шубҳа, Cooler-и расмии Active-ро, ки барои Pi 5 тарҳрезӣ шудааст, интихоб кунед.) [1]


Қисмҳо ва асбобҳое, ки ба шумо лозиманд 🧰

  • Raspberry Pi : Pi 4 ё Pi 5 барои фазои холӣ тавсия дода мешавад.

  • Корти microSD : 32 ГБ+ тавсия дода мешавад.

  • Микрофони USB : микрофони оддии конфронси USB аъло аст.

  • Баландгӯяк : баландгӯяки USB ё 3.5 мм, ё HAT ампери I2S.

  • Шабака : Ethernet ё Wi-Fi.

  • Лавозимоти иловагӣ: корпус, хунуккунандаи фаъол барои Pi 5, тугмаи пахшкунӣ барои пахш кардан ба сӯҳбат, ҳалқаи LED. [1]

Танзимоти системаи амалиётӣ ва базавӣ

  1. Flash Raspberry Pi OS бо Raspberry Pi Imager. Ин роҳи осони гирифтани microSD-и боршаванда бо танзимоти пешфарзии дилхоҳ аст. [1]

  2. Боркунӣ, пайвастшавӣ ба шабака ва сипас навсозии бастаҳо:

навсозии sudo apt && навсозии sudo apt -y
  1. Асосҳои аудио : Дар Raspberry Pi OS шумо метавонед баромади пешфарз, сатҳҳо ва дастгоҳҳоро тавассути UI мизи корӣ ё raspi-config . Аудиои USB ва HDMI дар ҳама моделҳо дастгирӣ карда мешаванд; баромади Bluetooth дар моделҳое, ки Bluetooth доранд, дастрас аст. [1]

  2. Тасдиқи дастгоҳҳо:

arecord -l aplay -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]


Ҷадвали муқоисаи зуд 🔎

Асбоб Беҳтарин барои Нархдор Чаро он кор мекунад
Калимаи бедории чиркин Триггери ҳамеша гӯшкунанда Сатҳи ройгон + CPU-и паст, пайвасткунии дақиқ ва осон [2]
Пичиррос.cpp ASR-и маҳаллӣ дар Pi Манбаи кушода Дақиқияти хуб, барои CPU мувофиқ [4]
Тезтар-Пичиррос ASR-и зудтар дар CPU/GPU Манбаи кушода Беҳсозии CTranslate2
Пайпер ТТС Баромади нутқи маҳаллӣ Манбаи кушода Садоҳои тез, забонҳои гуногун [5]
API-и LLM-и абрӣ мулоҳизаҳои бой Дар асоси истифода Ҳисобҳои вазнинро кам мекунад
Гиреҳи сурх Амалиётҳои ташкилӣ Манбаи кушода Ҷараёнҳои визуалӣ, дӯстона ба 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 (барои CPU мувофиқ): 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-и ванилинӣ дар CPU-ҳои оддӣ тезтар аст.

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 ё мантиқи қоидаи дӯстдоштаи худ иваз кунед.

import os, subprocess, wave import sounddevice as sd WAKE_WORD = "hey computer" # swap барои 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("User:", text); print("Ёрдамчӣ:", ҷавоб) speak(ҷавоб) else: print("Барои санҷидани ҳалқа ибораи бедоркуниро ворид кунед.")

Барои ошкоркунии воқеии калимаҳои бедор, детектори ҷараёни Porcupine-ро (CPU-и паст, ҳассосияти ҳар як калимаи калидӣ) муттаҳид кунед. [2]


Танзими аудио, ки воқеан муҳим аст 🎚️

Якчанд ислоҳоти хурд ёвари шуморо 10 маротиба донотар ҳис мекунад:

  • Масофаи микрофон : 30-60 см нуқтаи муносиб барои бисёре аз микрофонҳои USB аст.

  • Сатҳҳо : аз буридани вуруд худдорӣ кунед ва бозикуниро солим нигоҳ доред; пеш аз таъқиби арвоҳҳои рамз, масиркуниро ислоҳ кунед. Дар Raspberry Pi OS, шумо метавонед дастгоҳи баромад ва сатҳҳоро тавассути асбобҳои система ё raspi-config . [1]

  • Акустикаи утоқ : деворҳои сахт акси садоро ба вуҷуд меоранд; қолини нарм дар зери микрофон кӯмак мекунад.

  • Остонаи калимаи бедор : хеле ҳассос → ангезандаҳои арвоҳ; хеле сахтгир → шумо ба пластикӣ дод мезанед. Porcupine ба шумо имкон медиҳад, ки ҳассосиятро барои ҳар як калимаи калидӣ танзим кунед. [2]

  • Термикӣ : транскрипсияҳои тӯлонӣ дар Pi 5 аз хунуккунандаи фаъоли расмӣ барои кори устувор баҳра мебаранд. [1]


Гузариш аз бозича ба асбобҳои рӯзгор: Хизматрасониҳо, Оғози худкор, Санҷишҳои саломатӣ 🧯

Одамон иҷро кардани скриптҳоро фаромӯш мекунанд. Компютерҳо фаромӯш мекунанд, ки хуб бошанд. Давраи худро ба хидмати идорашаванда табдил диҳед:

  1. Эҷоди як воҳиди systemd:

[Воҳид] Тавсиф=Ёвари овозии DIY After=network.target sound.target [Хидмат] User=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 .

Ҳатто бо LLM-и абрӣ дар ҳалқа, аввал фармонҳои маҳаллии возеҳро барои суръат ва эътимоднокӣ равона кунед.


Танҳо маҳаллӣ ва ёрирасони абрӣ: Мубодилаҳо, ки шумо эҳсос хоҳед кард 🌓

Танҳо маҳаллӣ
Тарафҳои мусбат: хусусӣ, офлайнӣ, хароҷоти пешбинишаванда.
Камбудиҳо: моделҳои вазнинтар метавонанд дар тахтаҳои хурд суст кор кунанд. Омӯзиши бисёрзабонаи Whisper ба устуворӣ кӯмак мекунад, агар шумо онро дар дастгоҳ ё дар сервери наздик нигоҳ доред. [3]

Кӯмаки абрӣ
Тарафҳои мусбат: мулоҳизаҳои пурқувват, тирезаҳои калонтари контекстӣ.
Камбудиҳо: аз дастгоҳ берун рафтани маълумот, вобастагии шабака, хароҷоти тағйирёбанда.

Гибрид аксар вақт ғолиб меояд: калимаи "wake word" + маҳаллии ASR → API-ро барои мулоҳизакорӣ даъват кунед → маҳаллии TTS. [2][3][5]


Ҳалли мушкилот: Гремлинҳои аҷиб ва ислоҳи фаврӣ 👾

  • Омилҳои бардурӯғи бедоркунӣ : ҳассосияти пасттар ё микрофони дигарро санҷед. [2]

  • Таъхири ASR : аз модели хурдтари Whisper истифода баред ё whisper.cpp-ро бо парчамҳои озодкунӣ ( -j --config Release ) созед. [4]

  • TTS-и ноҳамвор : ибораҳои маъмулиро пешакӣ тавлид кунед; дастгоҳи аудиоии худ ва суръати намунаро тасдиқ кунед.

  • Микрофон ошкор нашуд : arecord -l ва миксерҳоро санҷед.

  • Кам кардани ҳарорати гармӣ : барои кори устувор аз сардкунандаи расмии Active дар Pi 5 истифода баред. [1]


Эзоҳҳои амниятӣ ва махфият, ки шумо бояд воқеан хонед 🔒

  • Пи-и худро бо APT навсозӣ кунед.

  • Агар шумо ягон API-и абриро истифода баред, он чизеро, ки фиристодаед, сабт кунед ва аввал редаксияи битҳои шахсиро дар маҳал баррасӣ кунед.

  • Хизматрасониҳоро бо имтиёзи камтар иҷро кунед; sudo дар ExecStart худдорӣ кунед.

  • Барои меҳмонон ё соатҳои хомӯшӣ танҳо режими маҳаллиро фароҳам оред


Вариантҳои сохтан: Мисли сэндвич омехта ва мувофиқ кунед 🥪

  • Ултра-маҳаллӣ : Поркупин + whisper.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 = "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]

  • whisper.cpp ин қудратро дар дастгоҳҳои танҳо бо CPU, ба монанди Pi, қобили истифода нигоҳ медорад. [4]

  • Piper посухҳоро бе интиқоли аудио ба TTS-и абрӣ зуд нигоҳ медорад. [5]


Хеле дароз, нахондам

Як ёвари зеҳни сунъии модулӣ ва хусусии DIY-ро бо Raspberry Pi бо роҳи якҷоя кардани Porcupine барои калимаҳои огоҳкунанда, 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 – SDK ва оғози зуд (калимаҳои калидӣ, ҳассосият, хулосаи маҳаллӣ)

  3. Пичиррос (модели ASR) – ASR-и бисёрзабона ва мустаҳкам, ки бо тақрибан 680 ҳазор соат омӯзонида шудааст

    • Рэдфорд ва ҳамкорон, Шинохти устувори нутқ тавассути назорати заифи миқёси калон (Whisper): бештар хонед.

  4. whisper.cpp – истилоҳоти Whisper-и мувофиқ барои CPU бо CLI ва қадамҳои сохтан

  5. TTS Piper – TTS-и асабии зуд ва маҳаллӣ бо овозҳо/забонҳои гуногун

Навтарин зеҳни сунъиро дар мағозаи расмии ёвари зеҳни сунъӣ пайдо кунед

Дар бораи мо


Бозгашт ба блог