โปรเจกต์งานอดิเรก → ไมโครโฟนประจำห้อง ReSpeaker
เขียนเมื่อ 7 ตุลาคม 2026 · ปักหมุดต้นทางที่ D52DD1A
เสียง · ESPHome · ฮาร์ดแวร์

ไมโครโฟนประจำห้องจาก ReSpeaker XVF3800

ไมโครโฟนรับเสียงระยะไกลที่ได้ยินคุณจากอีกฝั่งของห้องจริง ๆ ต่อเข้ากับไปป์ไลน์เสียงของ 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 ไปพร้อมกัน อุปกรณ์ทุกตัวจึงบิลด์ซ้ำได้จากสถานะต้นทางเดียวกัน และต้นทางจะปรับโครงสร้างเท่าไรก็ได้โดยไม่แตะห้องของคุณ จนกว่าคุณจะเลือกย้ายหมุดเอง

ไฟล์อุปกรณ์ทั้งไฟล์ · esphome/respeaker-living-room.yaml
# =============================================================================
# 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_password
และรายการที่คู่กัน · esphome/secrets.yaml
wifi_ssid: "YourNetwork"
wifi_password: "your-wifi-password"
ota_password: "a-long-random-string"

แฟลชและเพิ่มเข้าระบบ

ระวังเรื่องเหล่านี้

ให้เครดิตตามจริง: งานหนักทั้งหมดอยู่ที่การเชื่อมต่อของ formatBCE — แพ็กเกจ คอมโพเนนต์ และเฟิร์มแวร์ XMOS หน้านี้คือวิธีที่บางและทำซ้ำได้ในการวางระบบไว้ข้างบนมัน