איך לבנות עוזר בינה מלאכותית עשה זאת בעצמך עם Raspberry Pi

איך לבנות עוזר בינה מלאכותית עשה זאת בעצמך עם Raspberry Pi

רוצים עוזר קולי זעיר שבאמת עוקב אחר ההוראות שלכם, פועל על החומרה שלכם, ולא יזמין בטעות שנים עשר אננסים כי הוא לא שמע אתכם נכון? עוזר בינה מלאכותית DIY עם Raspberry Pi הוא באופן מפתיע בר השגה, מהנה וגמיש. תחברו מילת השכמה, זיהוי דיבור (ASR = זיהוי דיבור אוטומטי), מוח לשפה טבעית (חוקים או LLM) וטקסט לדיבור (TTS). הוסיפו כמה סקריפטים, שירות אחד או שניים, וכמה שינויי אודיו מדוקדקים, וקיבלתם רמקול חכם נגיש לכיס שמציית לחוקים שלכם.

בואו נקדם אתכם מאפס למצב של דיבור עם ה-PAI שלכם בלי משיכת השיער הרגילה. נכסה חלקים, התקנה, קוד, השוואות, תקלות... את כל הבוריטו. 🌯

מאמרים שאולי תרצו לקרוא אחרי זה:

🔗 כיצד ללמוד בינה מלאכותית בצורה יעילה
צור מפת דרכים ללימודים, תרגל פרויקטים ומעקב אחר ההתקדמות.

🔗 איך להקים חברת בינה מלאכותית
אימות בעיה, בניית MVP, הרכבת צוות, אבטחת לקוחות ראשוניים.

🔗 כיצד להשתמש בבינה מלאכותית כדי להיות פרודוקטיביים יותר
אוטומציה של משימות שגרתיות, ייעול זרימות עבודה והגברת התפוקה היצירתית.

🔗 כיצד לשלב בינה מלאכותית בעסק שלך
זיהוי תהליכים בעלי השפעה גבוהה, יישום פיילוטים, מדידת החזר השקעה (ROI), הרחבה.


מה הופך עוזר בינה מלאכותית DIY טוב עם Raspberry Pi ✅

  • פרטי כברירת מחדל – שמרו על אודיו מקומי במידת האפשר. אתם מחליטים מה יוצא מהמכשיר.

  • מודולרי – החלפת רכיבים כמו לגו: מנוע Wake Word, ASR, LLM, TTS.

  • במחיר סביר - בעיקר קוד פתוח, מיקרופונים, רמקולים ו-Pi פשוטים.

  • ניתן לפריצה – רוצים אוטומציה ביתית, לוחות מחוונים, שגרות, מיומנויות מותאמות אישית? קל.

  • אמין - מנוהל על ידי שירות, מאתחל ומתחיל להאזין באופן אוטומטי.

  • כיף - תלמדו הרבה על אודיו, תהליכים ועיצוב מונחה אירועים.

טיפ קטן: אם אתם משתמשים ב-Raspberry Pi 5 ומתכננים להריץ דגמים מקומיים כבדים יותר, מצנן נצמד יעזור תחת עומס מתמשך. (במקרה של ספק, בחרו במצנן האקטיבי הרשמי שנועד עבור Pi 5.) [1]


חלקים וכלים שתצטרכו 🧰

  • Raspberry Pi: מומלץ להשתמש ב-Pi 4 או Pi 5 למרווח גובה.

  • כרטיס microSD: מומלץ 32 ג'יגה-בייט ומעלה.

  • מיקרופון USB: מיקרופון ועידה USB פשוט הוא נהדר.

  • רמקול: רמקול USB או 3.5 מ"מ, או מגבר I2S HAT.

  • רשת: אתרנט או Wi-Fi.

  • תוספות אופציונליות: מארז, מקרר אקטיבי ל-Pi 5, כפתור לדיבור באמצעות לחצן לחיצה, טבעת LED. [1]

מערכת הפעלה והגדרות בסיסיות

  1. התקן את מערכת ההפעלה Raspberry Pi עם Raspberry Pi Imager. זוהי הדרך הפשוטה ביותר להשיג כרטיס microSD הניתן לאתחול עם ההגדרות הרצויות. [1]

  2. אתחול, התחברות לרשת, ולאחר מכן עדכון חבילות:

עדכון sudo apt ו- sudo apt שדרוג -y
  1. יסודות האודיו: במערכת ההפעלה Raspberry Pi ניתן להגדיר את הפלט, הרמות וההתקנים המוגדרים כברירת מחדל דרך ממשק המשתמש של שולחן העבודה או raspi-config. נתמכים אודיו באמצעות USB ו-HDMI בדגמים שונים; פלט Bluetooth זמין בדגמים עם Bluetooth. [1]

  2. אימות מכשירים:

arecord -l aplay -l

לאחר מכן, בדקו את הלכידה וההפעלה. אם הרמות נראות מוזרות, בדקו את המיקסרים ואת הגדרות ברירת המחדל לפני שתאשימו את המיקרופון.

 

בינה מלאכותית פטל פאי

מבט חטוף על האדריכלות 🗺️

הגיוני DIY עם זרימת Raspberry Pi נראה כך:

מילת ערה → לכידת שמע חי → תמלול ASR → טיפול בכוונה או LLM → טקסט תגובה → TTS → השמעת שמע → פעולות אופציונליות דרך MQTT או HTTP.

  • מילת השכמה: Porcupine קטן, מדויק, ופועל באופן מקומי עם בקרת רגישות לכל מילת מפתח. [2]

  • ASR: Whisper הוא מודל ASR רב-לשוני, רב-תכליתי, שאומן על כ-680 אלף שעות; הוא עמיד בפני רעשי רקע/מבטאים. לשימוש במכשיר, whisper.cpp מספק נתיב הסקה רזה ב-C/C++. [3][4]

  • מוח: הבחירה שלך - תואר ראשון במשפטים בענן דרך API, מנוע חוקים או הסקה מקומית בהתאם לכוח סוס.

  • TTS: פייפר מייצר דיבור טבעי באופן מקומי, מהיר מספיק לתגובות מהירות על חומרה צנועה. [5]


טבלת השוואה מהירה 🔎

כְּלִי הטוב ביותר עבור מחיר-די למה זה עובד
מילת התעוררות של דורבן טריגר שמקשיב תמיד שכבה חינמית + מעבד נמוך, מדויק, קישורים קלים [2]
לחישה.cpp ASR מקומי על פאי קוד פתוח דיוק טוב, ידידותי למעבד [4]
לחישה מהירה יותר ASR מהיר יותר על המעבד/כרטיס המסך קוד פתוח אופטימיזציות של CTranslate2
פייפר TTS פלט דיבור מקומי קוד פתוח קולות מהירים, שפות רבות [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/bindings עבור השפה שלך ופעל לפי הוראות ההתחלה המהירה (מקש גישה + רשימת מילות מפתח + מסגרות שמע → .process). [2]

  • Whisper (ידידותי למעבד): בנה whisper.cpp:

שיבוט גיט https://github.com/ggml-org/whisper.cpp cd whisper.cpp ו-cmake -B בנייה ו-cmake --build בנייה -j ./models/download-ggml-model.sh base.en ./build/bin/whisper-cli -m ./models/ggml-base.en.bin -f your.wav -otxt

האמור לעיל משקף את תחילתו המהירה של הפרויקט. [4]

מעדיפים את פייטון? ‏faster-whisper ‏ (CTranslate2) לרוב מהיר יותר מפייטון רגיל על מעבדים צנועים.

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

פייפר מיועד ל-TTS במכשיר עם אפשרויות קול/שפה מרובות. [5]

3) לולאת עוזר מינימלית בפייתון

קומפקטי במכוון: ממתין לביטוי התעוררות (stub), מקליט, מתמלל עם whisper.cpp, יוצר תשובה (placeholder), ואז מדבר דרך Piper. החלף את ה-placeholder עם ה-LLM או לוגיקת הכללים המועדפת עליך.

import os, subprocess, wave import sounddevice as sd WAKE_WORD = "היי מחשב" # החלפה עבור Porcupine בפרודוקציה [2] RECORD_SECONDS = 6 SAMPLE_RATE = 16000 ערוצים = 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, dtype='int16') sd.wait() עם wave.open(נתיב, '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("Assistant:", reply) speak(reply) else: print("הקלד את משפט ההעברה כדי לבדוק את הלולאה.")

לזיהוי מילות התעוררות אמיתיות, שלבו את גלאי הסטרימינג של Porcupine (מעבד נמוך, רגישות לכל מילת מפתח). [2]


כוונון אודיו שחשוב באמת 🎚️

כמה תיקונים קטנים יגרמו לעוזר שלכם להרגיש חכם פי 10:

  • מרחק מיקרופון: 30-60 ס"מ הוא נקודה מתאימה עבור מיקרופונים רבים עם חיבור USB.

  • רמות: הימנעו מחיתוך בקלט ושמרו על השמעה שפויה; תקנו את הניתוב לפני מרדף אחר רוחות קוד. במערכת ההפעלה Raspberry Pi, ניתן לנהל את התקן הפלט והרמות דרך כלי מערכת או raspi-config. [1]

  • אקוסטיקה של החדר: קירות קשים גורמים להדים; שטיח רך מתחת למיקרופון עוזר.

  • סף מילות התעוררות: רגיש מדי → טריגרים של רוחות רפאים; קפדני מדי → תצעק על פלסטיק. דורבן מאפשר לך לכוונן את הרגישות לכל מילת מפתח. [2]

  • תרמיות: תמלולים ארוכים ב-Pi 5 נהנים מהמצנן האקטיבי הרשמי לביצועים לאורך זמן. [1]


מעבר מצעצוע למכשיר: שירותים, הפעלה אוטומטית, בדיקות תקינות 🧯

בני אדם שוכחים להריץ סקריפטים. מחשבים שוכחים להיות נחמדים. הפכו את הלולאה שלכם לשירות מנוהל:

  1. צור יחידת systemd:

[יחידה] תיאור=עוזר קולי עשה זאת בעצמך After=network.target sound.target [שירות] משתמש=pi מדריך עבודה=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py הפעלה מחדש=תמיד הפעלה מחדששניה=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.

  • תוספים: פונקציות מהירות של פייתון כמו set_timer, what_is_the_time, play_radio, run_scene.

אפילו עם LLM ענן בלולאה, נתב פקודות מקומיות ברורות תחילה לשם מהירות ואמינות.


מקומי בלבד לעומת סיוע בענן: פשרות שתרגישו 🌓

מקומי בלבד
יתרונות: פרטי, לא מקוון, עלויות צפויות.
חסרונות: דגמים כבדים יותר עשויים להיות איטיים בלוחות קטנים. האימון הרב-לשוני של Whisper מסייע בחוסן אם שומרים אותו על המכשיר או על שרת סמוך. [3]

סיוע בענן
: הנמקה חזקה, חלונות הקשר גדולים יותר.
חסרונות: נתונים עוזבים את המכשיר, תלות ברשת, עלויות משתנות.

היבריד מנצח לעתים קרובות: מילת עריכה + ASR מקומי → קריאה ל-API לצורך הנמקה → TTS מקומי. [2][3][5]


פתרון בעיות: גרמלינים מוזרים ותיקונים מהירים 👾

  • טריגרים כוזבים של מילת התעוררות: הנמיכו את הרגישויות או נסו מיקרופון אחר. [2]

  • השהיית ASR: השתמש במודל 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 = "בית/סלון/תאורה/סט" 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("on")

הוסיפו משפט קולי כמו: "הדליקו את מנורת הסלון", ותרגישו כמו קוסם.


למה הערימה הזו עובדת בפועל 🧪

  • Porcupine יעיל ומדויק בזיהוי מילות התעוררות בלוחות קטנים, מה שהופך את האפשרות של תמיד-האזנה אפשרית. [2]

  • האימון הרב-לשוני והרחב של Whisper הופך אותו לעמיד בפני סביבות ומבטאים מגוונים. [3]

  • whisper.cpp שומר על צריכת החשמל הזו שימושית במכשירים בעלי מעבד בלבד כמו ה-Pi [4].

  • פייפר שומר על תגובות מהירות מבלי לשלוח אודיו ל-TTS בענן. [5]


ארוך מדי, לא קראתי

בנו עוזר בינה מלאכותית מודולרי ופרטי DIY עם Raspberry Pi על ידי שילוב של Porcupine עבור מילת התעוררות, Whisper (דרך whisper.cpp) עבור ASR, בחירתכם של מוח עבור תשובות, ו-Piper עבור TTS מקומי. עטפו אותו כשירות systemd, כוונו את האודיו וחברו פעולות MQTT או HTTP. זה זול יותר ממה שאתם חושבים, ובאופן מוזר תענוג לחיות איתו. [1][2][3][4][5]


הפניות

  1. תוכנה וקירור של Raspberry Pi – מידע על Raspberry Pi Imager (הורדה ושימוש) ומידע על המוצר Pi 5 Active Cooler

  2. Porcupine Wake Word – ערכת פיתוח תוכנה והתחלה מהירה (מילות מפתח, רגישות, הסקה מקומית)

  3. Whisper (מודל ASR) – ASR רב לשוני וחזק שאומן על כ-680 אלף שעות

    • רדפורד ואחרים, זיהוי דיבור חזק באמצעות פיקוח חלש בקנה מידה גדול (לחישה): קרא עוד

  4. whisper.cpp – הסקה ידידותית למעבד של Whisper עם ממשק שורת פקודה (CLI) ושלבי בנייה

  5. Piper TTS – TTS עצבי מקומי ומהיר עם מספר קולות/שפות

מצאו את הבינה המלאכותית העדכנית ביותר בחנות הרשמית של עוזרי בינה מלאכותית

אודותינו


חזרה לבלוג