跳到主要内容

OpenThai-SystemOne v1.0 เดโมแรก: สั่งคอมพิวเตอร์ด้วยเสียงภาษาไทย ไม่แตะเมาส์เลยสักครั้ง

· 阅读需 6 分钟
Kobkrit Viriyayudhakorn
CEO, iApp Technology

ทำได้แล้ว! สั่งคอมพิวเตอร์ด้วย เสียงภาษาไทยล้วนๆ ไม่แตะเมาส์ ไม่แตะคีย์บอร์ดเลยสักครั้ง ค้นราคาทอง เปิด YouTube หาโรงพยาบาลใกล้บ้าน ไปจนถึงกดไลก์และคอมเมนต์ Facebook นี่คือเดโมแรกของ OpenThai-SystemOne v1.0 โมเดลโอเพนซอร์สขนาดไม่ถึง 1B ที่มองเห็นหน้าจอได้ ในคลิปผมพูดอย่างเดียว แล้วเครื่องก็ทำตาม

System 1 กับ System 2​

สมองมนุษย์มีระบบความคิดสองแบบ System 1 ตัดสินใจเร็วตามสัญชาตญาณ เช่น เห็นปุ่มแล้วรู้ทันทีว่าต้องกดตรงไหน ส่วน System 2 คิดช้าและเป็นขั้นตอน เช่น การเขียนบทความ ซึ่ง LLM ทั่วไปทำงานแบบหลัง คือค่อยๆ พิมพ์คำตอบทีละ token

โมเดลแนว System One ทำงานต่างออกไป มันไม่เขียนข้อความเลย แต่รับ "สถานการณ์" กับ "คำถามที่มีตัวเลือก" แล้วตอบเป็นความน่าจะเป็นของแต่ละตัวเลือกในรอบเดียว (one forward pass) ตัวอย่างในต่างประเทศคือ Jev ของ TypeSafe AI ส่วน OpenThai-SystemOne คือโมเดลแนวเดียวกันที่ทีมเราพัฒนาขึ้นเองอย่างอิสระ เน้นภาษาไทย และเปิดเป็นโอเพนซอร์ส งานที่เหมาะมาก ได้แก่ การจัดหมวดหมู่ Ticket คัดกรองข้อความ จับเจตนาของผู้ใช้ และเลือก action ให้ agent ที่ควบคุมคอมพิวเตอร์ (computer use)

จาก v0.3 สู่ v1.0​

v0.3 (ใช้ได้แล้ววันนี้)v1.0 (ในคลิปนี้ กำลังจะออก)
Inputข้อความหรือ JSON อย่างเดียวข้อความ + ภาพหน้าจอ
ขนาด0.8B พารามิเตอร์ไม่ถึง 1B
สถานะโอเพนซอร์ส Apache-2.0เดโมแรก

v0.3 ต่อยอดจาก Qwen3.5-0.8B-Base ที่ผ่านการ continued pretraining ภาษาไทยราว 5 พันล้าน token แล้วเปลี่ยนส่วนหัวที่ใช้สร้างข้อความเป็นส่วนหัวที่เลือกตัวเลือกได้สูงสุด 255 ตัวในรอบเดียว v1.0 เพิ่มความสามารถสำคัญคือมองเห็นภาพหน้าจอ ซึ่งทำให้ควบคุมคอมพิวเตอร์ได้จริง คนสั่งจะเป็นเราที่พูดหรือพิมพ์ก็ได้ หรือจะให้ agent อีกตัวสั่งผ่านมันก็ได้

เบื้องหลังเดโม​

  1. เสียงพูดแปลงเป็นข้อความ ด้วยระบบรู้จำเสียงภาษาไทย iApp ASR Realtime (Base model)
  2. OpenThai-SystemOne ดูคำสั่ง ภาพหน้าจอ และปุ่มต่างๆ บนจอ แล้วตัดสินใจว่าจะทำอะไร และกดตรงไหน
  3. ตัดสินใจจบในรอบเดียว ไม่ต้องรอพิมพ์คำตอบทีละคำเหมือน LLM ทั่วไป คำสั่งส่วนใหญ่จึงตอบสนองในเสี้ยววินาที

มุมขวาล่างของจอในคลิปจะเห็นกล่องสถานะที่บอกว่าระบบได้ยินคำสั่งว่าอะไร เลือก action ไหน และมั่นใจแค่ไหน เช่น SEARCH 97% เราจึงระบุได้ตรงๆ ว่าจะเอาลิงก์แรก ลิงก์ที่สอง หรือปุ่มที่มีคำว่าอะไร แล้วระบบก็ทำตาม

ในคลิปสั่งอะไรไปบ้าง​

เวลาคำสั่งเสียงสิ่งที่เกิดขึ้น
2:04"ค้นหาราคาทองวันนี้หน่อยซิ" → "เข้าลิงก์แรก" → "เลื่อนลงมา" → "ย้อนกลับ"ค้นหา เปิดผลลัพธ์แรก เลื่อนหน้า แล้วย้อนกลับ
2:41"YouTube" → "ค้นหาสวดมนต์ก่อนนอน" → "เล่นที่ลิงก์แรก"เปิด YouTube ค้นหา แล้วเล่นคลิปแรก
3:05"ช่วยค้นหาเนเน่ Royal ร้องเพลง" → "เลือกลิงก์แรก"ค้นและเล่นเพลง
3:35"อยากดูสภาพอากาศวันพรุ่งนี้" → "อยากหาโรงพยาบาลใกล้สุดแถวนี้"ค้นพยากรณ์อากาศ แล้วเปิด Google Maps แสดงโรงพยาบาลใกล้ที่สุด
4:13"เปิด Facebook" → "เลื่อนลง" → "กดไลก์" → "คอมเมนต์ว่าเจ๋งมากครับ" → "ออกจากโพสต์นี้"ใช้ Facebook ครบด้วยเสียงอย่างเดียว
4:42"เปิดเครื่องคิดเลข" → "เปิดเมล" → "ปิดเมล" → "ปิดโปรแกรม"เปิดและปิดโปรแกรม

ยังเป็นเดโมแรก จึงมีพลาดบ้าง เช่น ตอนสั่งหาโรงพยาบาล ระบบถอดเสียงคำว่า "โรงพยาบาล" ออกมาเป็น "เทศบาล" ผมต้องพูดซ้ำอีกสองรอบจึงได้ผลถูกต้อง และตอนนี้ยังมีกฎช่วยอยู่บางส่วน ทีมกำลังเทรนเวอร์ชันที่เข้าใจคำสั่งเสียงภาษาไทยได้โดยตรง

ทำไมผมถึงทำเรื่องนี้​

เพราะยังมีคนไทยอีกมากที่ใช้มือไม่สะดวก ทั้งผู้พิการ ผู้สูงอายุ หรือใครก็ตามที่พิมพ์ไม่คล่อง ลองนึกภาพว่าแขนหักอยู่แต่ยังต้องใช้คอมพิวเตอร์ ถ้าแค่ พูดภาษาไทย แล้วท่องเว็บ ดู YouTube หาข้อมูล หรือคุยกับเพื่อนบน Facebook ได้ด้วยตัวเอง ชีวิตจะง่ายขึ้นอีกเยอะ และทั้งหมดนี้ทำงานด้วยโมเดลขนาดเล็ก ภาษาไทย ที่เปิดให้ทุกคนเอาไปใช้ได้

ลองใช้ v0.3 (text-only) ได้แล้ววันนี้​

ติดตั้งด้วย pip แล้วถามได้หลายคำถามในครั้งเดียว:

pip install openthai-systemone
from openthai_systemone import SystemOneClient, Choice, Score, Noul

client = SystemOneClient("iapp/OpenThai-SystemOne")
resp = client.system_one(
state={"ticket": "ลูกค้าแจ้งว่าโดนหักเงินซ้ำสองครั้ง ขอเงินคืนด่วน โทรมาสามรอบแล้ว"},
questions={
"department": Choice(instructions="ทีมใดควรรับผิดชอบ", criteria={"billing": "การเงิน/ค่าบริการ", "technical": "ระบบใช้งานไม่ได้", "sales": None}),
"frustration": Score(instructions="ลูกค้าหงุดหงิดแค่ไหน", criteria=["ใจเย็น", "หงุดหงิดแต่สุภาพ", "โกรธมาก"]),
"refund_requested": Noul(instructions="ลูกค้าขอเงินคืนอย่างชัดเจนหรือไม่"),
},
)
print(resp.answers["department"].choice, resp.answers["department"].probabilities)

หรือรันบนเครื่องด้วย Ollama (เวอร์ชัน 0.35 ขึ้นไป) โดยไม่ต้องใช้ API key และข้อมูลไม่ออกจากเครื่อง:

ollama pull iapp/openthai-systemone

ตัวเลขจาก model card ที่น่าสนใจ:

  • Benchmark สาธารณะ 13 ชุด: ค่าเฉลี่ย 74.3 ใกล้เคียง Nimble-9B (74.8) และ Jev 1.13.0 (76.0) ทั้งที่มีขนาดเพียง 0.8B
  • ชุดทดสอบภาษาไทยที่ไม่เคยเห็นตอนเทรน: จับเจตนาผู้ใช้ MASSIVE-th (60 ตัวเลือก) ถูก 90.0% และจัดหมวดข่าว Prachathai ถูก 98.1%
  • ความเร็ว: ราว 40 มิลลิวินาทีบน H100 และ 154 มิลลิวินาทีบน MacBook M3 Max สำหรับ Ticket ภาษาไทยที่ถาม 3 คำถาม

ข้อจำกัดที่ควรรู้: v0.3 รับข้อความอย่างเดียว ไม่ใช่โมเดล reasoning จึงไม่เหมาะกับงานคิดหลายขั้นหรือคำนวณ และควรใช้ค่า confidence ส่งเคสที่ไม่มั่นใจต่อให้โมเดลที่ใหญ่กว่าหรือคน

ลิงก์ที่เกี่ยวข้อง: โมเดลบน Hugging Face · โค้ดบน GitHub · Ollama

ใครอยากให้ลองสั่งคำสั่งเสียงอะไรต่อ คอมเมนต์ไว้ใต้คลิปได้เลยครับ เดี๋ยวผมเลือกไปทดสอบให้ดู ทุกฟีดแบ็กเป็นกำลังใจให้ทีมพัฒนาโมเดลมาก