ไมโครโฟนรับเสียงระยะไกลที่ได้ยินคุณจากอีกฝั่งของห้องจริง ๆ ต่อเข้ากับไปป์ไลน์เสียงของ Home Assistant ด้วย ESPHome — ด้วยไฟล์อุปกรณ์ยาวแค่สี่สิบบรรทัด เพราะสถาปัตยกรรมแพ็กเกจจากชุมชนแบกรับส่วนที่เหลือทั้งหมด นี่คือชุดที่เราใช้ในสามห้อง: ฮาร์ดแวร์ คอนฟิก การแฟลช และบทเรียนที่จะเจอก็ต่อเมื่อมีสองตัวอยู่ใต้เพดานเดียวกัน
ReSpeaker XVF3800 จับคู่ชุดไมโครโฟนสี่ตัวแบบวงกลมกับ DSP เสียงของ XMOS ที่ตัดเสียงสะท้อน ทำ beamforming และลดเสียงรบกวนด้วยฮาร์ดแวร์ ก่อนเสียงจะไปถึงไมโครคอนโทรลเลอร์ ในทางปฏิบัติ นั่นคือความต่างระหว่างอุปกรณ์ที่ได้ยินคำปลุกแม้ขณะเล่นเพลงของตัวเอง กับอุปกรณ์ที่หูหนวกทันทีที่มีอะไรเล่นอยู่ XIAO ESP32-S3 ที่ติดมาด้วยรัน ESPHome ทั้งชุดจึงปรากฏใน Home Assistant เป็นอุปกรณ์ผู้ช่วยเสียงโดยตรง — คำปลุกประมวลผลบนตัวอุปกรณ์ เสียงถูกสตรีมไปยังระบบแปลงเสียงเป็นข้อความที่ไปป์ไลน์ของคุณใช้ และคำตอบเล่นผ่านลำโพงที่ต่อกับช่องขยายเสียงของบอร์ด ไม่มีอะไรออกนอกบ้าน
การควบคุม XVF3800 จาก ESPHome ต้องใช้โค้ดจริง — คอมโพเนนต์เฉพาะสำหรับ DSP วงแหวนไฟ LED ตัวจับเวลา และส่วนเชื่อมของผู้ช่วยเสียง ไม่มีส่วนไหนควรอยู่ในคอนฟิกของคุณ โปรเจกต์ formatBCE Respeaker-XVF3800-ESPHome-integration แพ็กทั้งหมดเป็นแพ็กเกจ ESPHome แบบระยะไกล: ไฟล์อุปกรณ์ของคุณระบุรีโพซิทอรี รายการไฟล์แพ็กเกจ และแฮชของคอมมิต — แล้ว ESPHome ประกอบส่วนที่เหลือตอนบิลด์ แฮชคือวินัยที่ทำให้ปลอดภัย: ref เดียวเลือกแพ็กเกจ YAML คอมโพเนนต์ C++ และเฟิร์มแวร์ XMOS DFU ไปพร้อมกัน อุปกรณ์ทุกตัวจึงบิลด์ซ้ำได้จากสถานะต้นทางเดียวกัน และต้นทางจะปรับโครงสร้างเท่าไรก็ได้โดยไม่แตะห้องของคุณ จนกว่าคุณจะเลือกย้ายหมุดเอง
# =============================================================================
# ReSpeaker satellite — device file (formatBCE packages architecture)
# Everything except the settings below comes from the upstream packages.
# =============================================================================
substitutions:
name: respeaker-living-room
friendly_name: ReSpeaker Living Room
# Pin to an exact upstream commit. This one ref selects the YAML packages,
# the C++ components AND the XMOS DFU firmware together, so every satellite
# builds reproducibly from this exact upstream state. To take a future
# upstream update: check the repo's commits page, replace the hash,
# reflash ONE satellite first and live with it for a day.
respeaker_ref: d52dd1acc740c1ceeb2c61ce1299341f808c808c
packages:
respeaker:
url: https://github.com/formatBCE/Respeaker-XVF3800-ESPHome-integration
ref: ${respeaker_ref}
refresh: 1d
files:
- packages/base.yaml
- packages/hardware.yaml
- packages/voice-assistant.yaml
- packages/leds.yaml
- packages/timers-alarm.yaml
# A remote package cannot read your secrets, so credentials live here.
# ESPHome merges these blocks with the packages' own wifi/api/ota blocks.
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# api encryption can be added once the build is settled — one change per
# flash. When everything works, add:
# api:
# encryption:
# key: !secret api_key
# (generate a key, add api_key to secrets.yaml, reflash, re-enter in HA)
ota:
- platform: esphome
id: ota_esphome
password: !secret ota_passwordwifi_ssid: "YourNetwork"
wifi_password: "your-wifi-password"
ota_password: "a-long-random-string"name และ friendly_name — หมุดทำให้ทุกห้องใช้บิลด์เดียวกัน