AI Hardware • Cellular IoT • Voice • LLM • Fact Checking
Truth Machine: Fact Checker แบบ Push-to-Talk ที่ให้ LLM 3 ตัวตรวจคำกล่าวอ้าง
ถ้ามีอุปกรณ์ที่ให้เรากดปุ่ม พูดหนึ่งประโยค แล้วปล่อยให้ AI 3 ตัว ไปค้นเว็บและโหวตกันว่าเรื่องนั้นจริงหรือไม่ จะหน้าตาเป็นยังไง? นั่นคือแนวคิดของ The Truth Machine อุปกรณ์ Push-to-Talk ที่เอา Microcontroller, Cellular IoT, Speech-to-Text และ LLM หลายตัวมารวมกันเป็น Fact Checker แบบจับต้องได้
จุดที่น่าสนใจไม่ใช่แค่การให้ Claude, GPT และ Grok ตอบคำถามเดียวกัน แต่คือ Pipeline เบื้องหลัง: เสียงถูกบีบอัดบน MCU, ส่งผ่าน Cellular ระหว่างที่เรายังพูด, ประกอบใหม่บน Cloud, แปลงเป็นข้อความ, ให้ Judge ทั้งสามตรวจสอบ แล้วส่ง Verdict กลับมายัง LED และหน้าจอ
- Truth Machine เป็น Fact / Claim Checker ไม่ใช่เครื่องจับโกหก เพราะระบบไม่รู้ Intent ของผู้พูด
- Hardware หลักใช้ Blues Swan, Cellular Notecard, PDM Microphone, ILI9341 TFT, LED 3 สี และ Push Button
- Audio เริ่มจาก PDM 1-bit 3 MHz แล้วผ่าน DFSDM, High-pass Filter และ Codec 2 @ 2400 bps
- Raw Audio ประมาณ 16 KB/s ถูกบีบเหลือประมาณ 300 bytes/s ตามการทดสอบของผู้สร้าง
- Audio ถูกแบ่งเป็น 1 KB Chunks และส่งขึ้น Cellular ระหว่างที่ผู้ใช้ยังพูดอยู่
- Cloud Service แปลงเสียงเป็นข้อความ แล้วให้ LLM 3 ตัวตรวจ Claim แบบขนาน
- Verdict หลักมี TRUE, FALSE, UNCERTAIN และ NO_CLAIM พร้อมสถานะ DISAGREE และ ERROR
- Majority Vote ไม่ได้เท่ากับ Ground Truth เพราะ LLM อาจมีแหล่งข้อมูลและ Blind Spot ที่ทับซ้อนกัน
- ผลทดสอบของผู้สร้างส่วนใหญ่กลับมาประมาณ 5–15 วินาทีหลังปล่อยปุ่ม แต่ไม่ใช่ Latency ที่รับประกัน
Truth Machine คืออะไร?
The Truth Machine ของ Rob Lauer เป็น Connected Hardware Project ที่ให้ผู้ใช้กดปุ่มค้างแล้วพูด Claim หนึ่งประโยค เมื่อปล่อยปุ่ม ระบบจะนำข้อความนั้นไปให้ LLM Panel สามตัวช่วยตรวจสอบ
Default Panel ใน Project ใช้:
- Claude
- GPT
- Grok
Judge แต่ละตัวได้รับ Instruction ชุดเดียวกัน และสามารถใช้ Web Search เมื่อเห็นว่าจำเป็นต่อการตรวจ Claim
หลังได้คำตอบ ระบบทำ Majority Vote แล้วส่งผลกลับมายังอุปกรณ์ เพื่อแสดงผ่าน LED สีเขียว เหลือง แดง และหน้าจอ TFT
มันไม่ใช่ Lie Detector แล้วมันตรวจอะไร?
ผู้สร้างย้ำชัดว่า Truth Machine ไม่ใช่เครื่องจับโกหก
เหตุผลคือ “โกหก” ต้องมีเรื่องของ Intent หรือเจตนาของคนพูดเข้ามาเกี่ยวข้อง แต่ระบบนี้ไม่ได้รู้ว่าคนพูดเชื่ออะไร หรือกำลังตั้งใจหลอกใครหรือไม่
เช่น Claim เกี่ยวกับเหตุการณ์ในอดีต อาจให้ Verdict TRUE หรือ FALSE ได้ ขณะที่ Prediction อย่าง “พรุ่งนี้ฝนจะตก” ถูกออกแบบให้ไปทาง UNCERTAIN มากกว่าการเดาอนาคต
ทำไมต้องมี AI 3 ตัว และ Minority Report?
ถาม LLM ตัวเดียว ปัญหาคือเราอาจได้คำตอบจาก Reasoning Path หรือ Knowledge Gap ของ Model ตัวเดียว
Project นี้จึงสร้าง Panel 3 ช่อง แล้วให้ Judge แต่ละตัวตัดสินแบบขนาน ก่อนใช้ Majority Vote
ถ้าไม่มี Majority ระบบจะให้สถานะ:
DISAGREE
และหน้าจอจะแสดง Verdict กับเหตุผลของแต่ละ Judge ซึ่งผู้สร้างเรียกว่า “Minority Report”
Hardware ใช้อะไรบ้าง?
| Hardware | หน้าที่ใน Project |
|---|---|
| Blues Swan | STM32-based MCU สำหรับรับเสียง, Processing และควบคุม Device |
| Blues Notecarrier X | Carrier สำหรับระบบ Notecard / Swan |
| Blues Cellular Notecard | ส่ง Audio ขึ้น Cloud และรับ Verdict กลับ |
| Adafruit PDM MEMS Microphone | รับเสียงผู้ใช้ |
| ILI9341 SPI TFT | 2.4 นิ้ว, 240×320 สำหรับแสดง Transcript / Verdict / Judge Status |
| LED 10 mm ×3 | Green / Yellow / Red สำหรับแสดงผลแบบมองเร็ว |
| Momentary Push Button | กดค้างเพื่อพูดและปล่อยเพื่อจบ Recording |
| Single-cell LiPo ×2 | แหล่งพลังงานแยกตาม Board ของ Build นี้ |
| ST-Link | Flashing และ Serial Logs |
เสียงหนึ่งประโยคเดินทางจากปุ่มไปถึง AI ยังไง?
ผู้ใช้กดและพูด Claim
Capture + Filter + Compress Audio
Stream 1 KB Audio Chunks
Forward HTTP Route ไปยัง Cloud Service
Reassemble → Decode → Speech-to-Text
ตรวจ Claim + Web Search
สร้าง Final Verdict
แสดงผลกลับที่ Device
Audio Pipeline: จาก PDM 3 MHz ไปถึง Codec 2
ส่วน Technical ที่น่าสนใจที่สุดส่วนหนึ่ง คือ Swan ไม่ได้ส่งเสียงดิบขึ้น Cloud แต่ประมวลผลเสียงหลายขั้น ก่อน Upload
1-bit, 3 MHz
แปลงเป็น 8 kHz PCM
16-bit Samples
6 bytes ต่อ 20 ms
ส่งผ่าน Cellular
ผู้สร้างเลือก Swan เพราะ DFSDM Peripheral สามารถจัดการ PDM Input ใน Hardware และใช้ DMA เขียน Audio ลง Memory ได้โดยไม่ต้องให้ CPU Decode PDM Stream ทั้งหมดเอง
ในการทดสอบของผู้สร้าง Codec 2 ใช้ CPU ประมาณ 60% ของ Core ระหว่างการพูด จึงยิ่งเห็นว่าการใช้ Hardware Peripheral ช่วยรับภาระ Audio Front-end มีความสำคัญ
จาก 16 KB/s เหลือประมาณ 300 bytes/s
Raw 8 kHz 16-bit Audio มีข้อมูลประมาณ:
16 KB ต่อวินาที
เมื่อผ่าน Codec 2 ที่ 2400 bps ผู้สร้างระบุว่าลดเหลือประมาณ:
300 bytes ต่อวินาที
หรือเล็กลงประมาณ 50 เท่า ในบริบทของ Build นี้
Codec 2 เป็น Parametric Speech Codec จึงไม่ได้รักษา Waveform แบบ Audio Fidelity สูง แต่เน้นเก็บข้อมูลที่จำเป็นต่อ Speech
ผู้สร้างบอกว่าเสียงที่ได้ ฟังคล้ายโทรศัพท์คุณภาพต่ำ/เสียงหุ่นยนต์ แต่ Speech-to-Text ยังสามารถอ่าน Content Word ในชุดทดสอบของเขาได้ดี
ทำไม Audio ถูก Upload ตั้งแต่เรายังพูดไม่จบ?
ถ้ารอให้ผู้ใช้พูดจบก่อน แล้วค่อย Upload Audio ทั้งก้อน Latency หลังปล่อยปุ่มจะเพิ่มขึ้น
Project นี้จึงใช้วิธี Stream เป็น Chunk ระหว่างที่กำลังพูด
เมื่อมี Compressed Audio ครบประมาณ:
1 KB หรือประมาณ 3 วินาทีของ Speech
Chunk จะถูกส่งขึ้น Notecard ทันที
Upload หนึ่ง Chunk Block Main Loop ประมาณ 1 วินาที แต่ DMA ยังเก็บ Audio ต่อ ใน Buffer ขนาดประมาณ 4 วินาที
Notecard และ Notehub ทำหน้าที่อะไร?
Cellular Notecard ช่วยย้ายรายละเอียด Cellular Modem ออกจาก Application Firmware หลัก
ใน Truth Machine มันทำงานหลักสองทาง:
- ส่ง Compressed Audio ขึ้น Cloud
- รับ Verdict กลับลง Device
Firmware คุยกับ Notecard ผ่าน Request แบบ JSON และ Notehub เป็น Cloud Routing Layer ที่รับข้อมูลจาก Device แล้ว Forward ไปยัง Go Service
ตัวอย่างการส่ง Audio Chunk
Main Source มีตัวอย่าง note.add สำหรับ Binary Audio Chunk จริง
{
"req": "note.add",
"file": "request-v1.qo",
"body": {
"v": 1,
"id": 1790701258001,
"offset": 1024,
"last": false,
"content": "audio/codec2-2400;rate=8000"
},
"binary": true,
"live": true,
"sync": true
}
Metadata อย่าง id, offset และ last ช่วยให้ Cloud Service สามารถประกอบ Audio Chunks กลับตามลำดับได้
Go Service บน Cloud ทำอะไร?
เมื่อ HTTP Route จาก Notehub ส่ง Audio Chunk มาถึง Service ระบบไม่ได้ให้ LLM ตัดสินทันที
Cloud Pipeline ต้องทำหลายขั้น:
- รับ Audio Chunks
- เรียง Chunk ตามลำดับ
- ประกอบ Audio กลับ
- Decode Codec 2
- Speech-to-Text
- ส่ง Transcript ให้ Judge 3 ตัวแบบ Parallel
- Aggregate Vote
- ส่ง Verdict กลับผ่าน Notehub API
Source ณ เวลาที่เผยแพร่ ระบุว่า Speech-to-Text ใช้ OpenAI gpt-4o-mini-transcribe
Judge ทั้ง 3 ตัดสินอะไรได้บ้าง?
Judge แต่ละตัวถูกบังคับ ให้ตอบ Verdict ใน Category เดียวกัน เพื่อให้ Aggregate ได้ง่าย
| Verdict | ความหมาย | การแสดงผล |
|---|---|---|
| TRUE | Majority เห็นว่า Claim ตรวจสอบได้ว่าถูก | ไฟเขียว |
| FALSE | Majority เห็นว่า Claim ตรวจสอบได้ว่าไม่ถูก | ไฟแดง |
| UNCERTAIN | เป็น Claim จริง แต่ยัง Resolve ไม่ได้ เช่น Prediction หรือข้อมูลใหม่เกินไป | ไฟเหลือง |
| NO_CLAIM | ไม่มีข้อเท็จจริงที่ตรวจสอบได้ เช่น Opinion หรือ Question | LED ทั้งสาม Pulse |
| DISAGREE | ไม่มี Strict Majority | ไฟเหลือง Blink + แสดง Minority Report |
| ERROR | Judge ตอบใช้งานได้น้อยกว่า 2 ตัว หรือ Pipeline ล้มเหลว | LED ทั้งสาม Blink |
Majority Vote ทำงานยังไง?
หลัง Judge ทั้งสามตอบ Cloud Service จะนับ Verdict และใช้ Strict Majority
Official Source มี Aggregate Function ที่แสดง Logic นี้โดยตรง
func Aggregate(votes []Vote) string {
counts := map[string]int{}
usable, searchable := 0, false
for _, v := range votes {
if v.Verdict == Unavailable {
continue
}
usable++
counts[v.Verdict]++
searchable = searchable || v.Searched || v.CanSearch
}
if usable < 2 {
return Error
}
for verdict, n := range counts {
if n*2 > usable {
if (verdict == True || verdict == False) && !searchable {
return Uncertain
}
return verdict
}
}
return Disagree
}
จุดสำคัญคือ System ไม่ได้แค่ Count TRUE / FALSE แต่ยังตรวจว่า Panel มี Judge ที่มี Search Capability สำหรับ Verdict ประเภท TRUE / FALSE ด้วย
Bug “The sky is blue” สอนอะไรเรื่อง AI Logic?
ผู้สร้างเจอ Bug ที่น่าสนใจมาก ตอนพูดว่า:
“The sky is blue.”
Judge ทั้งสามตอบ TRUE แต่ระบบกลับขึ้น:
UNCERTAIN
ปัญหาเกิดจาก Rule รุ่นแรก บังคับว่า TRUE หรือ FALSE จะใช้ได้ก็ต่อเมื่อ Judge อย่างน้อยหนึ่งตัว “Search เว็บจริง”
แต่ Claim ง่าย ๆ แบบนี้ ไม่มี Model ตัวไหนเห็นความจำเป็นต้อง Search
หน้าจอยังสามารถ Mark Judge ที่ตอบจาก Model Knowledge ว่าเป็นคำตอบ from memory เพื่อไม่ให้ผู้ใช้เข้าใจว่า ทุก Verdict มาจาก Web Search
ทำไม 3–0 ยังไม่ใช่ Ground Truth?
มี AI สามตัวโหวตเหมือนกัน ฟังดูเหมือน Independent Verification สามแหล่ง
แต่ผู้สร้างเตือนเองว่า Model เหล่านี้ถูก Train จาก Internet ที่มีข้อมูลทับซ้อนกัน จึงสามารถมี Blind Spot หรือความเข้าใจผิดชุดเดียวกันได้
จุดแข็งของ Project จึงอยู่ที่การทำให้ความไม่แน่นอน และความเห็นต่าง “มองเห็นได้” มากกว่าการประกาศว่า Hardware กล่องนี้เป็นผู้ตัดสินความจริง
Verdict กลับลง Device ยังไง?
หลัง Cloud Service ได้ Final Verdict มันจะสร้าง Inbound Note แล้วส่งผ่าน Notehub API กลับไปยัง Notecard
Device จากนั้น Poll Verdict Note แล้วนำข้อมูลไปแสดงบน:
- TFT
- Green LED
- Yellow LED
- Red LED
ระหว่างรอ LED จะวิ่ง Green → Yellow → Red และหน้าจอแสดง Animation เพื่อบอกว่าระบบยังประมวลผลอยู่
เมื่อ Device Idle หน้าจอจะ Sleep เพื่อลดการใช้พลังงาน และสามารถแตะปุ่มสั้น ๆ เพื่อ Wake ได้โดยไม่ส่ง Claim
ทำไมผลใช้เวลาประมาณ 5–15 วินาที?
ในการทดสอบของผู้สร้าง Verdict ส่วนใหญ่มาถึงประมาณ:
5–15 วินาทีหลังปล่อยปุ่ม
และ Test ที่ช้าที่สุด ที่ผู้สร้างรายงาน อยู่ประมาณ:
25 วินาที
Claim ที่เกี่ยวกับ Current Events มักใช้เวลามากกว่า เพราะ Judge ต้องทำ Web Research เพิ่มเติม
API Keys และ Prompt Injection ถูกคิดไว้ยังไง?
API Keys ไม่ถูก Hardcode ลง Firmware
Source ระบุว่า Key ของ:
- Speech-to-Text
- Judge 1
- Judge 2
- Judge 3
ถูกเก็บใน Notehub Project Secrets แล้ว Inject ลง HTTP Request ผ่าน Header ตอน Route ทำงาน
Transcript ถูก Treat เป็น Data
Prompt ของ Judge ถูกออกแบบให้แยก Transcript ออกจาก System Instruction เพราะผู้สร้างคาดไว้ว่า มีคนอาจพูดข้อความแนว “ignore your instructions”
นี่เป็นตัวอย่างของ Prompt Injection Handling ใน Application ที่รับข้อความจาก User แล้วส่งต่อให้ LLM
Privacy: เสียงของเราไปที่ไหน?
Truth Machine ไม่ใช่ระบบที่ประมวลผลทุกอย่างบน Device
เสียงถูกส่งผ่าน Cellular ไปยัง Cloud แล้วถูก:
- Decode
- Transcribe
- ส่ง Claim ไปยัง LLM Providers
- ใช้ Web Search ตามที่ Judge เห็นว่าจำเป็น
Official Repository ปัจจุบัน ยังอธิบาย Privacy Handling เพิ่มเติมสำหรับ Service แต่ Policy ของ Provider และ Implementation สามารถเปลี่ยนได้ จึงควรตรวจ Source ล่าสุด ก่อนนำ Architecture นี้ไปใช้จริง
ดู Truth Machine ทำงานจริง
Video ช่วยให้เห็น Flow ตั้งแต่การกดปุ่มพูด ไปจนถึงการรอ Cloud และการแสดง Verdict บน Hardware จริง
โปรเจกต์นี้มีหลายขั้น แนะนำอ่านต้นฉบับควบคู่กัน
Truth Machine มีทั้ง Firmware, Audio Compression, Cellular, Cloud Service, LLM API และ Vote Logic จึงควรดู Source Code และ Build Story ต้นฉบับ ควบคู่กันหากต้องการสร้างระบบลักษณะเดียวกัน
FAQ: คำถามที่พบบ่อย
1. Truth Machine คือเครื่องจับโกหกหรือไม่?
ไม่ ผู้สร้างย้ำว่าเป็น Fact / Claim Checker เพราะระบบไม่ได้รู้ Intent ของผู้พูด
2. ใช้ AI กี่ตัว?
Project ใช้ Judge 3 Slot โดย Default Panel ใน Source คือ Claude, GPT และ Grok
3. Judge 3 ตัวต้องค้นเว็บทุกครั้งไหม?
ไม่ แต่ละ Judge ตัดสินเองว่า Claim ต้องใช้ Web Search หรือไม่ และ UI สามารถระบุได้ว่า Judge ตอบจาก Memory
4. ถ้า AI ทั้งสามตอบ TRUE แปลว่าจริง 100% ไหม?
ไม่ ผู้สร้างเตือนว่า Model อาจมี Training Data และ Blind Spot ที่ทับซ้อนกัน Majority Vote จึงไม่ใช่ Ground Truth
5. UNCERTAIN ต่างจาก FALSE ยังไง?
FALSE คือ Majority เห็นว่า Claim ตรวจสอบได้ว่าไม่ถูก ส่วน UNCERTAIN คือเป็น Claim จริงแต่ข้อมูลหรือ Context ยังไม่พอให้ Resolve
6. NO_CLAIM คืออะไร?
ใช้เมื่อข้อความไม่ได้มีข้อเท็จจริงที่ตรวจสอบได้ เช่น Opinion หรือ Question
7. DISAGREE คืออะไร?
คือกรณีที่ไม่มี Strict Majority และระบบจะแสดงความเห็นของแต่ละ Judge เป็น Minority Report
8. ใช้ Microcontroller อะไร?
ใช้ Blues Swan ซึ่งใช้ STM32L4R5
9. จอใช้รุ่นอะไร?
Main Source ระบุ ILI9341 SPI TFT ขนาด 2.4 นิ้ว ความละเอียด 240×320
10. เสียงถูกบีบอัดด้วยอะไร?
ใช้ Codec 2 ที่ 2400 bps หลัง PDM Audio ผ่าน DFSDM และ High-pass Filter
11. Audio หลังบีบอัดมีขนาดเท่าไร?
ผู้สร้างระบุประมาณ 300 bytes/s และเสียงพูด 20 วินาทีประมาณ 6 KB
12. Audio ถูกส่งหลังพูดจบหรือไม่?
ไม่ ระบบส่ง 1 KB Chunks ระหว่างที่ผู้ใช้ยังพูดอยู่
13. ใช้ Cellular ทำไม?
Notecard ใช้ส่ง Compressed Audio ขึ้น Cloud และรับ Verdict กลับลง Device
14. ผลใช้เวลานานแค่ไหน?
ในการทดสอบของผู้สร้าง ส่วนใหญ่อยู่ประมาณ 5–15 วินาทีหลังปล่อยปุ่ม และมี Test ที่ช้าราว 25 วินาที แต่ไม่ใช่ Latency ที่รับประกัน
15. Battery ใช้ได้นานกี่ชั่วโมง?
Source ไม่ได้ระบุ Battery Capacity หรือ Runtime จึงไม่สามารถคำนวณได้
16. API Key อยู่บนอุปกรณ์หรือไม่?
Source ใช้ Notehub Project Secrets และ Inject Key เข้า Request ฝั่ง Cloud Route แทนการ Hardcode Key ลง Firmware
17. เสียงถูกส่งออก Cloud หรือไม่?
ใช่ Audio ถูกส่งผ่าน Cellular เพื่อ Decode, Transcribe และส่ง Claim ให้ LLM Judges
18. เปลี่ยน LLM Judge ได้ไหม?
Official GitHub ระบุว่า Judge Slots สามารถ Configure ได้ จึงไม่จำเป็นต้องผูกกับ Panel เดิมตลอดไป
19. ระบบป้องกัน Prompt Injection หรือไม่?
Source ระบุว่า Transcript ถูกแยกและ Treat เป็น Data ไม่ใช่ Instruction เพื่อลดปัญหาจากข้อความที่พยายามสั่ง Judge
20. มี Source Code หรือไม่?
มี Firmware และ Go Cloud Service เปิดอยู่ใน GitHub Repository ของ Project
References / แหล่งข้อมูลต้นฉบับ
AI Hardware ไม่จำเป็นต้องเอา Model ใหญ่ ๆ มารันบนบอร์ดเสมอไป
Truth Machine แสดงอีกแนวทางหนึ่ง: ให้ Microcontroller จัดการงานที่เหมาะกับ Edge เช่น Audio Capture, Compression และ UI แล้วส่งงานที่หนักกว่าอย่าง Speech-to-Text, Web Search และ LLM Reasoning ไปยัง Cloud
หากกำลังทำ IoT, Voice Interface, Sensor หรือ Connected Hardware Project สามารถสอบถามทีม Globalbyte เรื่อง Development Board, Display, Sensor และ Module ที่เหมาะกับ Project ได้