Table of Contents
למה לבנות עוזר בית קול-מגולם?
שליטה קולית היא כבר לא מושג עתידני - זו דרך מעשית לתקשר עם הסביבה הביתית שלך.בעוד פתרונות מסחריים כמו אמזון אקו או Google נס קן מציעים נוחות, בניית עוזר הבית הנשלט הקולי שלך עם microcontrollers נותן לך שליטה מלאה על פונקציונליות, פרטיות ועלות. פרויקט זה מלמד אותך כיצד לשלב מיקרו-בקר נמוך, מודולים, רמקולים, ענן או על זיהוי קולי כדי ליצור גישה זו כדי לענות על ידי התקנים, כדי לענות על כל אחד, כדי להפעיל את התוספים שלך, כדי להפעיל את הגישה שלך, או כדי לענות על ידי שימוש, כדי לענות על ידי שימוש ב-או-או-או-אם אתה רוצה להפעיל את התוספים, כדי להפעיל את ה-לבקר, כדי להפעיל את ה-לבקר על גבי מערכת בקרה נמוכה, כדי להפעיל את היכולת שלך.
מדריך מורחב זה מכסה בחירת רכיב, ארכיטקטורת מערכת, שלב אחר שלב ההתקנה חומרה, פרטי תכנות, שיטות בדיקה, ותכונות מתקדמות.עד הסוף, יהיה לך בסיס מוצק לבנות עוזר קולי אמין שמתאים למערכת האקולוגית הבית החכם שלך.
בחירת המיקרובקר הנכון
המיקרובקר הוא המוח של העוזר שלך.זה חייב להתמודד עם לכידת אודיו, תקשורת רשת, ובקרת המכשיר.שלוש אפשרויות פופולריות הן ESP32, Arduino Uno עם מגן Wi-Fi, ו- Raspberry Pi Pico W.
ESP32
ESP32 היא האפשרות המומלצת ביותר כי היא בנתה ב-Wi-Fi ו- Bluetooth, די RAM (125 KB), ומעבד כפול-core שיכול להתמודד עם הזרמת אודיו בזמן אמת ושיחות API בו-זמנית.זה גם תומך ב-Arduino IDE ו- MicroPython, מה שהופך את התכנות לפשוט שלו (בסביבות $ 5–$10) ותמיכה קהילתית רחבה להפוך אותו אידיאלי עבור זה.
Arduino Uno עם Wi-Fi Shield
Arduino Uno יחד עם מגן Wi-Fi ESP8266 הוא חלופה מעשית אם כבר הבעלים של Uno. עם זאת, ה- RAM המוגבל (2 KB) ומהירות השעון איטי יותר להקשות על ניהול מציצים אודיו.סביר להניח שתצטרכו לספוג עיבוד כבד לענן, אשר יכול להציג שקיפות.
Raspberry Pi Pico W
הוכרז ב-2022, Raspberry Pi Pico W כולל Wi-Fi ורץ ב-133 MHz עם 264 KB SRAM.זה פחות חזק מ- ESP32 אבל עובד טוב עבור קבוצות פקודה פשוטות יותר. התמיכה של המיקרופיפון שלה מצוינת עבור prototyping מהיר.
עבור מדריך זה, אנו מניחים שאתה משתמש ESP32.You יכול למצוא תיעוד רשמי וגליונות נתונים ב NCLT:0Espressif ESP32 Referencementr
מיקרופונים ורמקולים מודולים
לכידת אודיו אמין ו- Playback הם קריטיים.עבור המיקרופון, אתה צריך מודול המפיק אות אנלוגי נקי.ה-MAX4466 מיקרופון אדפטפט הוא בחירה פופולרית כי הוא רגיש, נמוך רעש, ועובד עם 3.3V לוגיקה. עבור איכות קול טובה יותר, לשקול את מיקרופון IMP441MS, אשר משתמש I2S עבור אודיו דיגיטלי ו-s לחסל בעיות אנלוגיות.
עבור הדובר, דובר פשוט 8-ohm, 0.5W מחובר דרך מתנגד (לצמצם את הזרם) יכול לייצר משוב אמין. עבור נפח גבוה יותר ופלט ברור יותר, להשתמש ב- MAX98357 I2S עם דובר קטן.מודול זה יכול לנהוג דובר 3W והוא קל לממשק עם ESP32.
תמיד לבדוק כל רכיב אודיו בנפרד לפני שילוב אותם לתוך המערכת.ציור מהיר יכול להקליט אודיו למוניטור הסדרה או לשחק טון מבחן כדי לאמת חיוט ותצורה.
אפשרויות לזיהוי קולי
זיהוי קול מבוסס ענן
(ב) שירותים כמו FLT:0)Google Speech-to-Textigtigerph:1; (FLT:2) אמזון טרנבול 3, או FLT:4e Speech-to-Textphtph:5 מציע דיוק גבוה ותמיכה במספר שפות.You שלח נתונים אודיו על HTTP או WebSocket ולהשיג טקסט מוכר בצד התחתון של רשת האינטרנט הוא אמין על גבי 60 דקות (L).
ביקורת קול קידוד
(בשיתוף פרטיות ופעולה לא מקוונת, ניתן להשתמש בספריות קל משקל כמו FLT:0PorcupineFuaFeloineFelo1 (מ- Picoחשב) או FLT:2TensorFlow Lite MicroBuildFLT:3 עם מודל מילות מפתח מותאם אישית בשם פורקוטין מציע מילים טרום-מגביל (למשל, "Computer", "Alexa") ורץ על משאבים-Creditcons, על גבי מכשיר זיכרון RAM של 10.
גישה היברידית היא גם פופולרית: השתמש במילה על-ידי אזהרה כדי לעורר הכרה מבוססת ענן עבור פקודות מלאות.זה מקטין את השימוש בענן ומשפר את זמן התגובה.
מערכת אדריכלות:
אדריכלות טיפוסית מורכבת משלושה שכבות:
- (FLT:0) Input LayerFLT:1: Microphone ללכוד קול. An אנלוגי-to-דיגיטלי ממיר (ADC) או ממשק I2S ממיר את האות לנתונים דיגיטליים.
- (FLT:0) דרישות של שכבת שכבה: אודיו המיקרובקר, מזהה מילת התעוררות או לחץ כפתור, ולאחר מכן שולח את אודיו ל- API בענן או תהליכים אותו באופן מקומי.
- (FLT:0Output LayerFLT:1): המיקרובקר גורם להעביר מסרים, שולח אותות אינפרא אדום, מפרסם הודעות MQTT, או משתמש GPIO כדי לשלוט במכשירים.זה יכול גם לשחק אישור אודיו באמצעות הדובר.
הדיאגרמה הבאה (תפיסתית) מציגה את זרימת הנתונים: Microphone ESP32 TP-Fi ,Wi-Fi Cloud API ,JSON Response ESP32 , Relay/LED/Talker. for Local עיבוד, שלב הענן הוחלף בספרייה מקומית.
שלב אחר שלב-בונה מדריך
שלב 1: ג'ר ספונס
תצטרך:
- ESP32 ועדת הפיתוח (למשל, NodeMCU-32S)
- MAX4466 או INMP441 מיקרופון מודול
- MAX98357 I2S מגבר + דובר (3W, 4-8 הואם)
- מחבת לחם וחוטי קפיצה
- Relayמודול (לשליטה בתקני AC)
- Optional: LED, התנגדות, כפתור דחיפה, תצוגת OLED
- אספקת חשמל USB (5V, 2A)
שלב 2: Wiring
חיבור המיקרופון:
- (ב) [15] ויקרא י"א: ויקרא י"א: ויקרא י"ד: ויקרא י"ד, ויקרא י"ד, ויקרא י"ד).
- (FLT:0INMP441 (I2S)IRLT:1): VCC ל-3.3V, GND ל- GND, L/R ל- GND (ערוץ שמאל), Dout to GPIO25, BCLK to GPIO26, WS to GPIO27.
צור קשר עם דובר הדובר:
- (FLT:0)MAX98357igFLT:1: VIN ל 5V (או כוח USB), GND ל- GND, BCLK GPIO26, LRC GPIO27, DIN ל- GPIO25. (הערה: BCLK ו- WS pins ניתן לשתף עם מיקרופון I2S אם נקבע כראוי, אבל קל יותר להקצות סיכות נפרדות כדי למנוע קונפליקטים).
- הדובר חיובי לתוצר מגבר חיובי, שלילי לתפוקה שלילית.
חיבור מודול הממסר:
- VCC עד 5V, GND ל- GND, IN to GPIO32 (או כל ציון דיגיטלי).
- עייפנו אנשי קשר לתחזוקה שלכם (באמצעות מעגל מתח גבוה נפרד – לנקוט באמצעי זהירות בטיחותיים).
שלב 3: התקנת פוליסות
התקן את חבילת ה- ESP32:0 Arduino IDEFLT:1 ולהוסיף את חבילת לוח ESP32. השתמש במנהל הדירקטוריון כדי להתקין "esp32" על ידי Espressif Systems.
- (ב) ויקרא י"ד:
- (ב) ויקרא י"ד:
- (ב) ויקרא י"ד: ויקרא י"ד): "לקבל את תגובת ה-AP" (בתרגום חופשי: ).
- (ב) ויקרא יא"ד (ב)
- (ב) ⁇ (בתרגום חופשי:0.10).
עבור זיהוי ענן, תצטרך גם את ה-FLT:0 (Google Speech-to-Text APIsFLT:1 ספריית לקוח (או להשתמש ב- REST שיחות ישירות) עבור מילת הערות על-ידי התוסף, להתקין את ספריית ה-FLT:2PorcupineFLT 3: 3 מ- Picoחשבונית.
שלב 4: תסבירו את המיקרובקר
קוד כתוב שמבצע את הלולאה הבאה:
- (ב) ויקרא י"א: ויקרא יט: ויקרא יט-פי, מיקרופון, דובר ו- GPIO.
- (ב) ויקרא י"א): "השמעו" (במדבר כ"ד): "במבטו של אדם" (בתרגום חופשי: "ה') "וַיָּעָשֶׂה וּלְהִיאוּ" (במדבר כ"ד).
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (FLT:0)סוף ל-WalearFLT:1: המרת אודיו לפורמט הנדרש (WAV PCM 16-bit, 16 kHz מונו) POST ל-Google Speech-to-Text Endpoint.קבל JSON עם תמליל.
- (ב) ⁇ :0 (הדגשה) (ב): השתמש בהתאמות מיתר או בהכוונה פשוטה ⁇ .לדוגמה, אם תמליל מכיל "החזרה לאור", להגדיר GPIO32 גבוה.
- (ב) ,0) ,RespondvedFLT: שחק טון אישור או דיבור על התוצאה באמצעות TTS (אופציונלי).
- חזרה למצב האזנה
להלן קוד פשוט snippet (לא נועד להיות פועלי העתקה) הממחיש את המבנה:
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
#include <driver/i2s.h>
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASS";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) delay(500);
// Initialize I2S, GPIO etc.
}
void loop() {
// Check wake word – omitted for brevity
if (wake_word_detected) {
record_audio();
String transcript = send_to_google(audio_buffer);
if (transcript.indexOf("light") != -1) {
digitalWrite(RELAY_PIN, HIGH);
play_beep();
}
delay(1000); // debounce
}
}
טיפול בשגיאה יישום עבור ניתוק Wi-Fi, ניכויי API, והוראות לא יסולא בפז.
בדיקה ווויכוח על עוזרך
בדוק כל רכיב בבידוד ראשון:
- [01:0] מ"מ"ל: "העלה ציור שקורא את ה- ADC או I2S ומדפס מסתור למזימה הסידורית.
- (ב) ,0) דברר'רמב"א: השתמש בפונקציה (() או שחקן I2S כדי לייצר מלודי פשוט.
- (ב) ויקרא י"א: ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (ב) ⁇ :0) ,[דרוש מקור]: עיין בציון באופן ידני ולהאזין ללחיצת הקליק.
לאחר מכן לשלב את ההכרה הקולית.התחל עם פקודה פשוטה קודרת (למשל, ללחוץ על כפתור לשלוח קובץ אודיו מבחן) כדי להבטיח את שיחת ה- API פועל.עבר בהדרגה כדי לחיות מיקרופון קלט. השתמש יומניות סידוריות כדי לראות את התזמון והתאריך.
נושאים משותפים:
- (FLT:0) No Audio זיההFLT:1: בדוק את I2S pins wiring, מדגם שיעור, מעט עומק לא מתאים. ESP32, ADC ערוצים 0-7 אינם זמינים; השתמש GPIO34-39 עבור ADC1.
- (FLT:0)API חוזר "מאט"מפלט 1: "להבטיח אודיו הוא בפורמט הנכון (16-bit PCM, 16kHz, מונו) גוגל מצפה בסיס 64 קודקוד WAV או מגבונים גולמיים עם שיעור מדגם מתאים.
- (ב) ,0) , היענות נמוכה (FLT:1): "הההגינות ברשת היא בלתי נמנעת. השתמש במודול Ethernet חוטי אם ניתן, או להפחית את משך השמע.
הרחבת הפונקציונליות
ברגע שהעזר הבסיסי שלך עובד, שקול להוסיף תכונות אלה:
בקרת מכשירים מרובים
השתמש ב-FLT:0 ;MQTTERFLT:1 (כמו Mosquitto) כדי לפרסם פקודות ל- ESP32 נקודות ברחבי הבית.היחידה העיקרית שלך יכולה לשלוח "קיצ'ן / אור / על" לצומת משני השולט באור ספציפי זה.
טקסט-to-Speech (TTS) Feedback
במקום להיות פשוט, השתמש ב-FLT:0 (Google Cloud-to-Speech APIsFLT:1 או בספריה לא מקוונת כמו FLT:2 רמקולים FLT 3:2 (הדווח ל-ESP32) כדי לדבר הודעות אישור.
מילים לשיר Custom Wake Words
השתמש ב- Picoחשב הקונסולה כדי להכשיר מילת התעוררות מותאמת אישית (למשל, "Jarvis") ולהפיץ אותה על ESP32.הספריה חופשית לשימוש לא מסחרי.
בקרת קול לתקשורת
(ב) ,0) , ⁇ ⁇ 1 (בשיתוף:2) ,KodiFLT 3: 3 (דרך JSON-RPC) כך שתוכל לומר "לשחק ג'אז" ולהתחיל לסטרימינג מוסיקה.
אינטגרציה
צורף חיישן טמפרטורה / בדידות כאשר המשתמש שואל "מה הטמפרטורה?", קרא את החיישן ולהגיב עם הערך.
הנפילה המקומית
אם Wi-Fi יורד, חזור אל קבוצה מוגבלת של פקודות לא מקוון (למשל, להעביר מסר המבוסס על מילת מפתח פשוטה כמו "on" או "off" שזוהו באמצעות התאמת מילת המפתח של פורקוטין).
שיקולים ביטחוניים ופרטיות
בניית עוזר קול שמקשיב כל הזמן מעלה חששות תקפים. לנקוט בצעדים אלה כדי להגן על עצמך:
- (FLT:0)Use HTTPSigFLT:1 עבור כל שיחות API. ESP32 תומך TELS, אבל עליך לכלול את טביעת האצבע CA או תעודת שורש מהימן.
- (ב) ,0) ,התקדשות בענן: השתמש במילה 'התראות' כדי להימנע מלשלח את כל השמע לאינטרנט.
- (ב) [ה]התב"ה]: "למשימות רגישות, שמור על כל צינורות הדיבור ללא הפרעה.
- (ב) ,0) מתג פיזיקלי (PLT:1): Wire A toggle מתג בין כוח המיקרופון ו- VCC.
- (FLT:0 Network ScationFLT:1) : להציב מכשירים IoT על רשת VLAN נפרדת או אורח כדי להגביל את החשיפה אם נפגע.
כמו כן, שימו לב לתנאי השירות עבור כל ממשק API בענן שבו אתם משתמשים.חלקם אוסרים על זרימה רציפה או דורשים הסכמה מפורשת של משתמשים.תמיד לציית לתקנות הפרטיות המקומיות.
מסקנה
בניית עוזר ביתי מבוקר קול עם microcontrollers הוא פרויקט מתגמל המאחד חומרה, תוכנה, עיבוד שפה טבעית. על ידי החל ESP32, מיקרופון mMS, ו- API בענן, אתה יכול ליצור עוזר פונקציונלי בסוף השבוע.החוויה שאתה מרוויח אודיו אנלוגי, I2S תקשורת, Wi-Fi רשתות, ושילוב API ישמש אותך היטב בפרויקטים אחרים של IoT.
ככל שאתה גדל נוח, לדחוף את הגבולות: להוסיף הכרה דיבור מקומית, שליטה על MQTT, או אפילו לוח מחוונים אינטרנט כדי להכשיר פקודות מותאמות אישית.היופי של עוזר DIY הוא שהוא מתפתח איתך.אין מערכת אקולוגית נעולה - כל תכונה שאתה מוסיף היא לחלוטין תחת השליטה שלך.
לקריאה נוספת, בדוק את הדוגמאות של FLT:0 ESP פתרון IoT פתרון ההרחבה 1 (החדשה עבור דוגמאות של עוזר קולי מוכן, ואת FLT:2Porcupine להעיר את מילת ה-iPotation Engine DocumentsFLT 3: 3) כדי להוסיף טריגרים מותאמים אישית.