ของเล่น AI พูดได้ ด้วย ESP32-S3 และ xiaozhi-esp32 คำปลุกบนบอร์ด สมองบนคลาวด์
ทำของเล่นคุยได้ด้วยโปรเจกต์โอเพนซอร์ส xiaozhi-esp32 บอร์ดฟังคำปลุกเอง ส่วน LLM อยู่บนคลาวด์ พร้อมเรื่องที่ต้องคิดก่อนให้เด็กเล่น ทั้งความเป็นส่วนตัวและไฟบอกไมค์
- คำปลุก (wake word) ตรวจบนบอร์ดด้วย ESP-SR แต่เสียงที่พูดหลังคำปลุกถูกส่งขึ้นเซิร์ฟเวอร์เพื่อแปลงเป็นข้อความ ให้ LLM ตอบ แล้วแปลงกลับเป็นเสียง
- เฟิร์มแวร์ค่าตั้งต้นต่อเซิร์ฟเวอร์ทางการ xiaozhi.me ถ้าไม่อยากส่งเสียงออกไปที่อื่น ต้องตั้งเซิร์ฟเวอร์เอง ซึ่งยังไม่พร้อมใช้งานจริงตามที่ผู้พัฒนาเขียนไว้
- ของเล่นที่เด็กใช้ ต้องมีไฟบอกว่ากำลังฟัง ผู้ปกครองตั้งค่าเครือข่ายเอง และอยู่ด้วยตอนเล่น
- เสียงเด็กเป็นข้อมูลส่วนบุคคล PDPA ของไทยกำหนดให้เด็กอายุต่ำกว่า 10 ปีต้องได้ความยินยอมจากผู้ปกครอง
ของเล่นที่ทักแล้วตอบได้ ทุกวันนี้ทำเองได้ด้วยบอร์ด ESP32-S3 กับโปรเจกต์โอเพนซอร์ส xiaozhi-esp32 (ใบอนุญาต MIT) บอร์ดทำหน้าที่ฟังคำปลุก อัดเสียง และเล่นเสียงตอบ ส่วน “สมอง” คือ LLM ที่อยู่บนเซิร์ฟเวอร์ บทนี้อธิบายว่าเสียงเดินทางไปไหนบ้าง ทำตัวต้นแบบยังไง และเรื่องที่ต้องคิดให้จบก่อนยื่นของเล่นให้เด็ก
ข้อมูลในบทอ้างอิง README ของ xiaozhi-esp32 และคู่มือ XiaoZhi AI ของบอร์ด Waveshare ESP32-S3-AUDIO-Board ณ ตุลาคม 2026 โปรเจกต์นี้เปลี่ยนเร็ว ตรวจหน้า GitHub อีกครั้งก่อนลงมือ
อะไรทำบนบอร์ด อะไรทำบนคลาวด์
| งาน | ทำที่ไหน | หมายเหตุ |
|---|---|---|
| ฟังคำปลุก | บนบอร์ด | ESP-SR (WakeNet) ไม่ต้องใช้เน็ต |
| อัดเสียงหลังคำปลุก บีบอัด | บนบอร์ด | เข้ารหัสเป็น Opus |
| ส่งเสียง | เครือข่าย | WebSocket หรือ MQTT + UDP |
| แปลงเสียงเป็นข้อความ (ASR) | เซิร์ฟเวอร์ | |
| คิดคำตอบ (LLM) | เซิร์ฟเวอร์ / คลาวด์ | เช่น Qwen, DeepSeek |
| แปลงข้อความเป็นเสียง (TTS) | เซิร์ฟเวอร์ | |
| เล่นเสียง แสดงหน้าตาบนจอ | บนบอร์ด |
ค่าตั้งต้นของเฟิร์มแวร์คือต่อเซิร์ฟเวอร์ทางการ xiaozhi.me ถ้าอยากคุมเอง มีเซิร์ฟเวอร์ที่ชุมชนเขียนให้รันบนเครื่องตัวเอง เช่น xiaozhi-esp32-server (Python) แบบติดตั้งน้อยที่สุดต้องการราว 2 คอร์ RAM 2 GB ถ้าใช้ API บนคลาวด์ทั้งหมด หรือ 4 GB ถ้ารัน FunASR ในเครื่อง ผู้พัฒนาเขียนไว้ชัดว่ายังไม่ผ่านการทดสอบความปลอดภัยเครือข่าย ไม่ควรใช้ในงานจริง และถ้าเปิดออกเน็ตสาธารณะต้องป้องกันเอง
โปรเจกต์ยังมี MCP ฝั่งอุปกรณ์ ให้ LLM สั่งของบนบอร์ดได้ เช่น ปรับเสียง เปิดไฟ LED หมุนเซอร์โว ตรงนี้ทำให้ของเล่นขยับตามคำพูดได้ แต่ก็แปลว่าโมเดลบนคลาวด์สั่งฮาร์ดแวร์ในห้องเด็กได้ ให้เปิดเฉพาะคำสั่งที่ปลอดภัยเท่านั้น
ตัวอย่างบอร์ด: ESP32-S3-AUDIO-Board
บอร์ดสำเร็จรูปตัวนี้มีครบสำหรับของเล่นเสียง ESP32-S3R8 (dual-core 240 MHz) แฟลช 16 MB PSRAM 8 MB ไมค์ดิจิทัล 2 ตัว ชิปเสียง ES8311 กับ ES7210 ภาคขยายลำโพง ไฟ RGB วงแหวน 7 ดวง และช่องต่อแบตลิเธียม 3.7 V พร้อมวงจรชาร์จ ถ้าจะใส่แบต อ่านใช้แบตลิเธียมอย่างปลอดภัย ก่อน
ขั้นตอนจากคู่มือ
- ตรวจว่าบอร์ดอยู่ในรายชื่อบอร์ดที่ XiaoZhi รองรับ
- แฟลชเฟิร์มแวร์สำเร็จรูปจาก GitHub ของ XiaoZhi หรือของผู้ผลิตบอร์ด หรือ build เองด้วย ESP-IDF (
idf.py menuconfigเลือกชนิดบอร์ด) เวอร์ชันล่าสุดต้องใช้ ESP-IDF 6.0 ขึ้นไป - บอร์ดเปิดฮอตสปอตชื่อ
Xiaozhi-xxxxxxต่อมือถือเข้าไป หน้าเลือก Wi-Fi จะเด้งขึ้น หรือเปิดhttp://192.168.4.1เอง รองรับเฉพาะ Wi-Fi 2.4 GHz - ต่อเน็ตได้แล้ว บอร์ดแสดงรหัส 6 หลัก นำไปใส่ในหน้าควบคุมบน xiaozhi.me เพื่อผูกอุปกรณ์กับบัญชี
- พูดคำปลุก “Hello XiaoZhi” หรือกดปุ่ม BOOT แล้วเริ่มคุย
ตัวอย่างคำนวณ: เสียงหนึ่งประโยคมีขนาดเท่าไร
WakeNet รับเสียง 16 kHz โมโน 16 บิต และประมวลผลเป็นเฟรมละ 30 ms
- ตัวอย่างเสียงต่อเฟรม = 16,000 × 0.030 = 480 ตัวอย่าง
- อัตราข้อมูลดิบ = 16,000 × 16 บิต = 256,000 บิต/วินาที = 32 KB/วินาที
- เด็กพูดประโยคยาว 6 วินาที เสียงดิบ = 6 × 32 = 192 KB
- ถ้าบีบอัดด้วย Opus ที่ 24 kbps (ตัวเลขสมมุติเพื่อเทียบ ค่าจริงขึ้นกับการตั้งค่า) = 6 × 24,000 ÷ 8 = 18 KB เล็กลงราว 10 เท่า
ตัวเลขนี้บอกสองอย่าง ข้อแรก Wi-Fi บ้านธรรมดาส่งเสียงได้สบาย ข้อสอง เสียงทุกประโยคหลังคำปลุกเป็นไฟล์ที่เก็บ ส่งต่อ และฟังซ้ำได้ ถ้าเซิร์ฟเวอร์ปลายทางเลือกเก็บไว้
ความเป็นส่วนตัวของเด็ก
เสียงเด็กคือข้อมูลส่วนบุคคล และหลายครั้งในประโยคมีชื่อ ชื่อโรงเรียน หรือเรื่องในบ้านปนมาด้วย
- กฎหมายไทย: ตามแนวทางของคณะกรรมการคุ้มครองข้อมูลส่วนบุคคล ภายใต้ PDPA เด็กอายุต่ำกว่า 10 ปีให้ความยินยอมเองไม่ได้ ต้องเป็นผู้ใช้อำนาจปกครอง ถ้าทำของเล่นให้คนอื่นใช้หรือขาย นี่คือเรื่องที่ต้องถามผู้รู้กฎหมาย ไม่ใช่เดาเอง
- มุมของสหรัฐฯ: FTC ระบุว่าไฟล์เสียงของเด็กเป็นข้อมูลส่วนบุคคลภายใต้ COPPA และจะผ่อนผันเฉพาะกรณีที่ใช้เสียงแทนการพิมพ์ เก็บไว้สั้น ๆ แล้วลบ และต้องเขียนนโยบายการลบไว้ชัด ใช้เป็นมาตรฐานขั้นต่ำในการคิดได้ดี
- ถามเซิร์ฟเวอร์ปลายทาง: README ของ xiaozhi-esp32 ไม่ได้เขียนว่าเสียงเก็บไว้นานเท่าไร หรือเก็บที่ไหน ก่อนผูกบัญชีให้อ่านเงื่อนไขของบริการนั้นเอง ถ้าหาคำตอบไม่ได้ ให้ถือว่าเสียงอาจถูกเก็บ
- ข้อมูลที่ไม่ควรถาม: ตั้ง system prompt ไม่ให้ของเล่นถามชื่อจริง ที่อยู่ โรงเรียน หรือรูปภาพ และบอร์ดบางรุ่นมีกล้อง ถ้าไม่จำเป็นให้ปิดหรือไม่ต่อกล้องเลย
ของเล่นที่ฟังได้ ต้องให้ผู้ใหญ่รู้ทุกครั้งว่ามันกำลังฟัง และรู้ว่าเสียงไปที่ไหน ถ้าตอบสองข้อนี้ไม่ได้ ยังไม่ควรให้เด็กเล่น
พึ่งคลาวด์: เมื่อเซิร์ฟเวอร์หาย ของเล่นก็เงียบ
ของเล่นตัวนี้ทำงานได้เท่าที่เซิร์ฟเวอร์ยังเปิด บริการเปลี่ยนเงื่อนไข ปิดตัว หรือ API ของ LLM เปลี่ยน ของเล่นก็ตอบไม่ได้ คำตอบของ LLM ก็ไม่แน่นอนร้อยเปอร์เซ็นต์ อาจพูดเรื่องที่ไม่เหมาะกับวัย หรือพูดข้อมูลผิดอย่างมั่นใจ
ทางลดความเสี่ยง ตั้งเซิร์ฟเวอร์เองในบ้าน เลือก ASR และ TTS แบบรันในเครื่อง เขียน prompt จำกัดหัวข้อให้เหมาะกับวัย และอย่าออกแบบให้ของเล่นเป็นสิ่งเดียวที่เด็กคุยด้วยก่อนนอน
ไฟบอกไมค์และการดูแลของผู้ปกครอง
- ไฟบอกสถานะที่เห็นชัด: ใช้ไฟ RGB วงแหวนแสดงสามสถานะต่างสีกัน รอคำปลุก, กำลังฟังและส่งเสียง, กำลังพูดตอบ เด็กและผู้ใหญ่ควรดูออกจากระยะในห้อง
- รู้ข้อจำกัด: ไฟที่เฟิร์มแวร์คุม ปิดได้ด้วยเฟิร์มแวร์ ถ้าต้องการความมั่นใจสูงกว่านั้น ใส่สวิตช์ตัดไฟไมค์หรือสวิตช์ปิดเครื่องที่กดเห็นได้จากภายนอก
- ผู้ปกครองตั้งค่าเอง: การต่อ Wi-Fi การผูกบัญชี และการเปิดคำสั่ง MCP ให้ผู้ใหญ่ทำ ไม่ใช่เด็ก
- อยู่ด้วยตอนเล่น: โดยเฉพาะเด็กเล็ก และฟังว่าโมเดลตอบอะไร ถ้าเจอคำตอบไม่เหมาะ ปรับ prompt หรือหยุดใช้
- ฮาร์ดแวร์: ลำโพงใกล้หู ตั้งเสียงสูงสุดให้ไม่ดังเกินไป แบตลิเธียมต้องอยู่ในกล่องที่เด็กแกะไม่ได้ ชิ้นส่วนเล็กต้องยึดแน่น
ข้อผิดพลาดที่เจอบ่อย
- เข้าใจว่าคำปลุกบนบอร์ดแปลว่าทุกอย่างอยู่ในบอร์ด จริง ๆ ส่วนที่ฟังประโยคและตอบอยู่บนเซิร์ฟเวอร์ทั้งหมด
- ใช้ Wi-Fi 5 GHz หน้าตั้งค่ารองรับเฉพาะ 2.4 GHz
- build ด้วย ESP-IDF 5.x โค้ดรุ่นล่าสุดต้องใช้ 6.0 ขึ้นไป
- เปิดเซิร์ฟเวอร์ตั้งเองออกอินเทอร์เน็ต โดยไม่มีรหัสผ่านหรือ firewall
- ไม่มีไฟบอกสถานะ ผู้ใหญ่ในบ้านไม่รู้ว่าของเล่นกำลังส่งเสียงออกไป
บอร์ด ESP32 รุ่นไหนเหมาะกับงานอะไร ดูเลือกบอร์ด ESP32
แหล่งข้อมูล
คำถามที่พบบ่อย
ไม่มีเน็ต ของเล่นยังคุยได้ไหม
ไม่ได้ บอร์ดตรวจคำปลุกได้เองก็จริง แต่การฟังประโยค การคิดคำตอบ และการพูดกลับ ต้องผ่านเซิร์ฟเวอร์ ถ้าเน็ตหลุด ของเล่นจะได้ยินคำปลุกแต่ตอบไม่ได้
ตั้งเซิร์ฟเวอร์เองแล้ว เสียงจะไม่ออกนอกบ้านใช่ไหม
ขึ้นกับว่าเลือก ASR, LLM และ TTS แบบไหน xiaozhi-esp32-server มีตัวเลือกแบบรันในเครื่อง เช่น FunASR สำหรับแปลงเสียง แต่ถ้าเลือก LLM หรือ TTS ผ่าน API บนคลาวด์ ข้อความหรือเสียงก็ยังออกไปที่ผู้ให้บริการนั้น
บอร์ดแบบไหนใช้ได้
โปรเจกต์รองรับหลายชิป ทั้ง ESP32, C3, C5, C6, S3 และ P4 และมีโฟลเดอร์บอร์ดสำเร็จรูปกว่า 130 แบบ ถ้าเริ่มครั้งแรก เลือกบอร์ด ESP32-S3 ที่มีไมค์ ลำโพง และอยู่ในรายชื่อบอร์ดที่รองรับ จะไม่ต้องต่อวงจรเสียงเอง
วงจรและโค้ดในบทความทดสอบกับบอร์ดตัวอย่าง บอร์ดต่างรุ่นอาจใช้ขาต่างกัน ตรวจ pinout ของบอร์ดที่ใช้ก่อนต่อไฟเสมอ