Oído — ถอดเสียงพูดภาษาอังกฤษแบบพูดอะไรก็ได้บนชิป ESP32-S3 ราคา $5 โดยไม่ใช้ cloud และไม่ต้องมี NPU — WER 3.7% ดีกว่า Whisper tiny แต่ความเร็วยังเป็นตัวเลขประเมินจาก emulator
30 ก.ย. 2026 Lokutor (Hashing Works, S.L.L. จากมาดริด) เปิดซอร์ส Oído เอนจินถอดเสียงพูดภาษาอังกฤษที่รันบน ESP32-S3 ทั้งหมด ชิปตัวนี้เป็น CPU Xtensa สองคอร์ 240 MHz ที่มี PSRAM 8 MB, flash 16 MB และไม่มีตัวเร่ง neural โดยไม่พึ่ง cloud และไม่จำกัดว่าต้องเป็นคำสั่งจากรายการที่กำหนดไว้ ชื่อมาจากคำที่พ่อครัวในครัวสเปนตะโกนรับออร์เดอร์ (“¡Oído!” แปลว่า ได้ยินแล้ว) โพสต์นี้ขึ้นไปติดอันดับต้น ๆ ของ r/LocalLLaMA
ตัวโมเดลไม่ได้เป็นของใหม่ Oído ใช้ stt_en_conformer_ctc_small ของ NVIDIA NeMo (ราว 13M พารามิเตอร์ ไลเซนส์ CC-BY-4.0) งานจริงอยู่ที่ตัวเอนจิน ซึ่งเป็นโค้ด C ที่เขียนขึ้นใหม่ให้ข้อจำกัดของชิป $5 รับโมเดลขนาด 14 MB ได้ ทั้งที่หน่วยความจำภายในที่เร็วมีแค่ 512 KB และน้ำหนักต้องอ่านจาก flash ด้วยความเร็วระดับไม่กี่สิบ MB/s
ตัวเลขความแม่นยำ
WER (%) บน LibriSpeech จาก README (ใช้การ normalize ข้อความแบบเดียวกันทุกระบบ):
| ระบบ | รันบน | test-clean | test-other | ขนาด |
|---|---|---|---|---|
| Oído int8, greedy | ESP32-S3 | 3.7 | 8.2 | 14.0 MB |
| Oído int4 (QAT) | ESP32-S3 | 4.6 | 10.0 | 8.3 MB |
| Oído int8 + LM (beam search บนชิป) | ESP32-S3 | 3.3 | 7.2 | 15.3 MB |
| Espressif MultiNet7 (ต้องกำหนดรายการคำสั่ง) | ESP32-S3 | 8.5 | 21.3 | 2.7 MB |
| Moonshine tiny, fp32 | แล็ปท็อป | 5.0 | 12.1 | 27M params |
| Whisper tiny.en, fp32 | แล็ปท็อป | 6.3 | 15.9 | 39M params |
เวอร์ชัน int8 แม่นห่างจากโมเดล fp32 ต้นฉบับไม่ถึง 0.1 จุด (3.70/8.23 เทียบกับ 3.68/8.11) ส่วน language model เป็น GRU 1.3M พารามิเตอร์ที่เทรนจากหนังสือสาธารณสมบัติเท่านั้น และจะใช้หรือไม่ใช้ก็ได้ ในการทดสอบกับเสียงรบกวนจริง 14 สภาพ (รถ ครัว โรงอาหาร เสียงคนคุยพร้อมกัน ห้องก้อง) Oído int8 ได้ WER เฉลี่ย 8.4% ส่วน Whisper tiny.en ได้ 12.1%
จุดที่ต้องอ่านให้ละเอียด
- ความเร็วยังไม่ได้วัดบนบอร์ดจริง README เขียนไว้ชัดว่า transcript ทุกบรรทัดมาจาก host build ที่ “bit-identical” กับ firmware และตรงกับผลใน QEMU ของ Espressif ทุกคำ แต่ real-time factor 0.7–0.95 เป็นค่าประเมิน ที่คำนวณจากจำนวนคำสั่งใน emulator (ราว 225M คำสั่งต่อวินาทีเสียง) ผู้พัฒนาบอกว่าจะวัดบนบอร์ดจริงแล้วเพิ่มผล “ในอีกไม่กี่วัน” ถ้า RTF จริงเกิน 1 ก็จะตามเสียงพูดไม่ทัน
- ชุดทดสอบไม่เท่ากัน แถวที่รันบนชิปใช้ test set เต็ม แต่ baseline บนแล็ปท็อป (Whisper, Moonshine, Vosk) ใช้แค่ 500 ประโยคต่อชุด ส่วนตัวเลข MultiNet7 ยกมาจากหน้า benchmark ของ Espressif
- ไม่ใช่ streaming ข้อความจะขึ้นหลังจบประโยค (หยุดพูด 0.8 วินาทีแล้วค่อยประมวลผล) คำสั่งยาว 2–4 วินาทีจะใช้เวลาราว 3 วินาทีกว่าจะได้ข้อความ
- ต้องใช้บอร์ดรุ่น N16R8 (flash 16 MB + octal PSRAM 8 MB) และรองรับเฉพาะภาษาอังกฤษ
- ไลเซนส์สองชั้น โค้ดเป็น GPLv3 ถ้าใส่ในอุปกรณ์สำหรับผู้บริโภค ต้องเปิดซอร์สและให้ผู้ใช้ลง firmware ที่แก้เองได้ ถ้าทำไม่ได้ Lokutor ขายไลเซนส์เชิงพาณิชย์แบบคิดต่ออุปกรณ์หรือรายปี ส่วนน้ำหนัก int8 เป็น CC-BY-4.0 และ int4 เป็น CC-BY-SA-4.0 เพราะเทรนต่อด้วยข้อมูลที่มีเงื่อนไข share-alike ส่วนโมเดล Transducer ที่แม่นที่สุด (3.0/6.7) ไม่ได้แจกน้ำหนักมาด้วย ต้องดึงจาก NGC ของ NVIDIA และแปลงเอง
ลองได้โดยไม่ต้องมีบอร์ด: cd esp32/host && make แล้วรัน ./tasr_cli ../../models/nemo8.tnm recording.wav ซึ่งใช้การคำนวณแบบเดียวกับบนชิปทุกบิต หรือรัน firmware จริงใน QEMU ด้วย esp32/tools/emulate.sh
มุมมอง AI Curator
Oído แสดงให้เห็นว่าคอขวดของ edge AI ไม่ได้อยู่ที่ “โมเดลเล็กพอหรือยัง” มาสักพักแล้ว โมเดล 13M ของ NVIDIA ที่แม่นระดับนี้มีมานานแล้ว ที่ยังขาดคือเอนจินที่จัดการแบนด์วิดท์หน่วยความจำของชิปราคาถูกได้ Oído จัด tiling ให้น้ำหนักแต่ละตัวถูกอ่านจาก flash แค่ครั้งเดียวทุก 64 เฟรม ซึ่งลดทราฟฟิกจาก 18 เหลือ 7.5 MB/s แนวคิดนี้เป็นแนวเดียวกับเอนจิน LLM ที่ stream น้ำหนักจาก SSD บนพีซี แค่ย่อลงมาเหลือระดับไมโครคอนโทรลเลอร์
สำหรับไทย ESP32 คือบอร์ดที่ maker และโรงงาน IoT ใช้กันมากที่สุด การสั่งงานด้วยเสียงแบบพูดอะไรก็ได้ โดยไม่ต้องส่งเสียงขึ้น cloud (ซึ่งเกี่ยวกับ PDPA โดยตรง) จึงน่าสนใจมาก แต่มีข้อจำกัดใหญ่สองข้อ ข้อแรกคือยังไม่รองรับภาษาไทย Lokutor มีภาษาสเปน คาตาลัน บาสก์ และกาลิเซีย แต่เป็นรุ่นเชิงพาณิชย์ ข้อสองคือ GPLv3 ไม่เหมาะกับสินค้าแบบปิดเกือบทุกชนิด ทีมที่จะทำสินค้าจริงควรรอผลวัดบนบอร์ดก่อน ถ้า RTF จริงต่ำกว่า 1 ได้ ก็คุ้มที่จะคุยเรื่องไลเซนส์หรือลองเทรนโมเดลภาษาไทยขนาดเล็กใส่เอนจินนี้เอง ซึ่งทำได้ถ้ายอมเปิดซอร์ส firmware ตาม GPL
แหล่งข่าว
อ่านเพิ่มในหมวด เครื่องมือนักพัฒนา
Betelgeuse รัน Qwen3.8 Flash Next ขนาด 68GB บน RTX 3060 กับแรม 16GB ส่วน Basalt วัดให้เห็นว่าเอนจินที่เร่งด้วยแฟล็กลัดทำให้โมเดลลืมของ
Betelgeuse ฟอร์ก llama.cpp ที่เปิดเมื่อ 31 ต.ค. ดึง expert จาก NVMe เข้า VRAM ตามต้องการ อ้าง 22 tok/s แบบไม่ทิ้ง expert แต่ README เตือนเองว่ายังทดลองและตัวเลขมาจากคนละรอบ วันเดียวกันผู้พัฒนา Basalt เผยผลวัดว่าแฟล็กเร่งความเร็วทำคุณภาพ Q8 ตกไปใกล้ Q2
กฎห้ามโคลนเกมของ Claude Code เริ่มกระทบงานจริง บริษัทรับทำเกมกระดานร้องงานลูกค้าหยุด แต่รายงานหลายชิ้นปนกับตัวกรองไซเบอร์คนละเรื่อง
ต่อจากที่เราพบกฎนี้ในไบนารี Claude Code ผู้ใช้เริ่มรายงานว่างานเชิงพาณิชย์ถูกปฏิเสธ และ Tom's Hardware กับ Mashable หยิบไปรายงาน แต่เมื่อไล่ issue ที่อ้างถึง พบว่าหลายรายการเกิดก่อนกฎจะมา จึงน่าจะเป็นตัวกรองด้านไซเบอร์ ส่วน Anthropic ยังไม่ชี้แจง
Claude Code ส่ง transcript ของ background agent ให้โมเดลทุก ~30 วินาทีเพื่อเขียนสถานะ 3–5 คำ ผู้วัดรายงานกินราว 16% และยังปิดแบบทางการไม่ได้
รายงานอิสระพบว่าฟีเจอร์ agent_summary ของ Claude Code ส่ง transcript เต็มของ background agent ไปถามสถานะทุก ~30 วินาที คิดเป็น 16.4% ของค่าใช้จ่ายในระบบของผู้วัด Issue เปิดมาตั้งแต่ ส.ค. ยังไม่มีสวิตช์ปิดที่รองรับ เราตรวจพบโค้ดนี้ใน 2.1.314 และพบกฎใหม่เรื่องเกมที่ไม่อยู่ใน changelog