เรื่องเริ่มจากผมนั่งอยู่ในรถ มือนึงถือพวงมาลัย อีกมือถือมือถือ พยายามพิมพ์ไทยใส่ Tim Chat แล้วก็พิมพ์ผิดเป็นรอบที่ 5 ครับ ผมก็เลยบ่นใส่ทิม (AI Agent ของผม) ว่า "พิมพ์ไทยบนมือถือมันช้าเกินไปว่ะ ทำยังไงดี"

ทิมก็ตอบกลับมาแบบไม่ลังเลเลยว่า "เดี๋ยวใส่ voice typing ให้ครับ"

ผ่านไปไม่ถึงชั่วโมง — ปุ่มไมค์โผล่ใน Tim Chat แล้ว กดปุ่มเดียว พูดไทย พูดอังกฤษ ก็พิมพ์ให้เลย วันนี้จะเล่าให้ฟังว่ามันทำงานยังไง และมีบั๊กตลกๆ ที่ทิมไปเจอแล้วแก้เองได้ในเซสชั่นเดียว

Tim Chat คืออะไร — เพื่อให้คนใหม่เข้าใจ

เผื่อคนใหม่เพิ่งมาอ่าน — Tim Chat คือ chat interface ส่วนตัวของผม ที่เอาไว้คุยกับทิม (AI Agent ที่อยู่บน server ของผมเอง) ผมเปิดผ่าน browser บนมือถือก็ได้ บนคอมก็ได้ พอผมพิมพ์ลงไป ทิมก็ทำงานจริงให้ผม — เขียน code, deploy, ตอบ support ticket, ยิงแอด ฯลฯ

มันเหมือน ChatGPT แต่อยู่บน server ส่วนตัว ที่เข้าถึงข้อมูลธุรกิจได้จริง แทนที่จะถูกขังอยู่ใน sandbox ของ OpenAI

ปัญหาเดียวคือ — ตอนผมไม่อยู่หน้าคอม ผมต้องพิมพ์ไทยบนมือถือ ซึ่งช้ามากครับ พิมพ์ผิด ลบ พิมพ์ใหม่ จนบางครั้งกว่าจะส่งคำสั่งได้ ความคิดที่ผมจะพูดก็หายไปแล้ว

เริ่มจากบ่นว่าช้า — จบที่ฟีเจอร์ใหม่

ผมไม่ได้บอกทิมว่า "ใส่ feature voice typing แบบนี้นะ ใช้ library นี้นะ ดีไซน์แบบนี้นะ" — ผมแค่บ่นว่าพิมพ์ไทยบนมือถือมันช้า

ทิมก็ไปคิดเอง:

  • Browser มี Web Speech API ฟรีอยู่แล้ว — ใช้ได้บน Chrome ไม่ต้องลง library เพิ่ม ไม่ต้องจ่ายค่า API
  • ภาษาไทยรองรับ — pass parameter lang: 'th-TH' เข้าไป มันก็แปลงเสียงเป็นข้อความไทยได้
  • ทำเป็นปุ่มไมค์ + toggle ภาษา — กดปุ่มไมค์ พูด แล้วข้อความขึ้นใน input box เลย กด toggle เปลี่ยนภาษาได้ระหว่างไทยกับอังกฤษ

ภายในเซสชั่นเดียว ทิมเขียน code เสร็จ commit push deploy แล้วบอกผมว่า "ลองรีเฟรชหน้าจอแล้วกดปุ่มไมค์ดูครับ"

ผมรีเฟรช — ปุ่มไมค์อยู่ตรงข้างๆ ช่อง input พร้อม pill เล็กๆ บอกว่าตอนนี้ภาษาไหน ผมกด พูดไทย ข้อความขึ้นเลย กด toggle ไป EN พูดอังกฤษ ขึ้นเลย

นี่แหละ ความต่างของ AI Agent กับ chatbot ทั่วไป — ChatGPT บอกได้ว่า "ใช้ Web Speech API นะ" แต่ทิมเขียน code, ทดสอบ, deploy ให้จริงๆ

บั๊กตลกๆ ที่ทิมเจอแล้วแก้เอง

ตอนแรกมันมีบั๊กที่ตลกมากครับ — ผมพูดประโยคเดียว ข้อความดันโผล่ขึ้นมา 3-4 รอบซ้ำกัน ตัวอย่างเช่น ผมพูด "เช็ค status server หน่อย" แต่ในช่อง input กลายเป็น "เช็ค status server หน่อยเช็ค status server หน่อยเช็ค status server หน่อย"

ทิมไปไล่ root cause แล้วเจอว่า — Chrome ออกแบบ Web Speech API แปลกๆ ครับ พอเปิด continuous: true (ให้พูดยาวๆ ได้ ไม่หยุดเอง) มันจะส่ง array ของผลทั้งหมดตั้งแต่เริ่มเซสชั่น มาให้ทุกครั้งที่มี event ใหม่

คือถ้าผมพูดประโยค A เสร็จ แล้วพูดประโยค B — event ที่สองจะส่ง [A, B] ไม่ใช่ส่งแค่ B

โค้ดเดิมของทิมมันวน loop จาก index 0 แล้วเอาไป append ใน textarea ทุกครั้งที่มี event มา ผลคือ A โดน append ซ้ำทุก tick ของ engine กลายเป็น AAAAB

ทางออกที่ทิมแก้คือ 2 บรรทัด:

  1. วน loop จาก event.resultIndex เท่านั้น (ไม่ใช่ 0) เพื่อเอาเฉพาะของใหม่
  2. track finalTranscript แยกจาก interimTranscript แล้ว recompute textarea ใหม่ทุก event แทนที่จะ append ตลอด

commit เดียวจบครับ deploy ใหม่ ผมรีเฟรช — ไม่มีข้อความซ้ำอีกเลย

รายละเอียดเล็กๆ ที่ทำให้มันใช้จริงได้

สิ่งที่ผมชอบที่สุดคือ — ทิมไม่ได้ใส่ปุ่มไมค์เฉยๆ แล้วจบครับ มันใส่รายละเอียดที่ทำให้ใช้จริงได้:

  • ภาษา default ตามเครื่อง — ถ้าเปิดบนเครื่องที่ตั้งภาษาไทย default จะเป็น th-TH ถ้าเปิดบนเครื่อง EN default เป็น en-US ใช้ navigator.language + จำไว้ใน localStorage
  • animation สีแดงตอนกำลังบันทึก — ปุ่มเปลี่ยนเป็นสีแดงเต้น pulse ผมรู้ทันทีว่ากำลังฟังอยู่
  • auto-restart ตอน Chrome timeout — Chrome จะตัด session อัตโนมัติทุก ~30 วินาที ทิมเขียนให้ start ใหม่อัตโนมัติเงียบๆ ผมพูดยาวกี่นาทีก็ได้
  • หยุดสะอาดตอนกดส่ง — กดปุ่ม send ปั๊บ mic หยุดทันที ไม่มีค้างคา

แต่ละจุดเล็กๆ เพียวๆ แต่ถ้าขาดอันใดอันหนึ่ง feature นี้ก็จะใช้ลำบาก เช่น ถ้าไม่มี auto-restart ผมต้องกดเริ่มใหม่ทุก 30 วินาที — ก็ไม่อยากใช้แล้ว

ทำไมเรื่องเล็กๆ แบบนี้ถึงสำคัญ

คนอาจจะคิดว่า — "ก็แค่ voice typing เล็กๆ ChatGPT ก็มี" จริงครับ ChatGPT ก็มี แต่ประเด็นมันไม่ใช่ที่ feature นี้

ประเด็นคือ — ผมแค่บ่นใส่ทิม 1 ประโยค ภายในชั่วโมงเดียว feature ใหม่อยู่ใน app ของผมแล้ว แก้บั๊กที่ Chrome API ทำตัวแปลกได้เอง deploy ขึ้น production ให้

มันคือ feedback loop ที่สั้นมาก — ระดับเดียวกับว่าผมมี dev ส่วนตัว 24 ชั่วโมง ที่อยากปรับอะไรก็พูดบ่นเฉยๆ ไม่ต้องเขียน spec ไม่ต้องสร้าง ticket ไม่ต้องรอ sprint

และนี่ก็ไม่ใช่ feature เดียวที่เกิดจากการบ่น — ทิมเคย เปลี่ยน Whisper library ให้เร็วขึ้น 5 เท่า เพราะผมแค่บ่นว่า transcribe ช้า เคย push fix ไป 6 server พร้อมกัน เพราะลูกค้าทักว่าแชทตอบไม่จบ และเคย ลบฟิลด์ password ทิ้ง เพราะมันเจอว่ามันไม่ทำงาน

แถมพอเอา voice typing ขึ้น production จริงๆ ก็ยังเจอ bug บนมือถือที่พูดประโยคเดียวแต่ขึ้น 5 รอบ — ทิมไล่ไปจนเจอว่า Chrome ส่ง event.results สะสมตั้งแต่ session start แก้ด้วย 2 บรรทัด + พลิก strategy iOS ใหม่หมด

นี่คือแบบที่ผมใช้ AI ครับ ไม่ใช่ "ใช้ AI" แบบเปิด ChatGPT ถาม — แต่เป็น "มี AI ทำงานให้" ที่อยู่ใน server ส่วนตัวจริงๆ

ตอนนี้ผมพูดกับ AI ได้ทุกที่

ผมใช้ Tim Chat บนมือถือเยอะขึ้นครับตั้งแต่มี voice typing — กำลังขับรถ พูด "เช็คยอดขายวันนี้หน่อย", กำลังเดิน พูด "เขียนบล็อกหัวข้อนี้ให้ที", ตื่นมาเช้าๆ พูด "สรุป ticket support เมื่อคืนหน่อย" ทิมก็ตอบกลับมาให้ (และล่าสุดทิมขยาย voice typing ให้รองรับ 24 ภาษา ลูกค้า Newton เลือก voice_lang ของตัวเองได้ในแดชบอร์ดแล้ว ไม่ต้องทับเป็น en-US/th-TH ของ browser อีก)

มันเหมือน Iron Man มี Newton ที่พูดคุยได้ตลอดเวลาจริงๆ ครับ ไม่ต้องเปิดคอม ไม่ต้องพิมพ์ คิดอะไรได้ก็พูดเลย

คำถามที่พบบ่อย

voice typing ภาษาไทยบน browser ทำได้ไหม ต้องใช้ library อะไร?

ได้เลยครับ Chrome มี Web Speech API ฟรีในตัวอยู่แล้ว ไม่ต้องติดตั้งอะไรเพิ่ม แค่ส่ง parameter lang: th-TH เข้าไปก็แปลงเสียงเป็นข้อความภาษาไทยได้ รองรับการสลับภาษาไทย-อังกฤษได้ในหน้าเดียวกัน

ทำไม voice typing บน Chrome ถึงมีปัญหาข้อความซ้ำ แก้ยังไง?

เป็นพฤติกรรมของ Web Speech API ครับ เมื่อเปิด continuous mode มันจะส่ง array ผลลัพธ์ทั้งหมดตั้งแต่เริ่ม session มาทุกครั้ง ไม่ใช่แค่ส่วนใหม่ วิธีแก้คือวน loop จาก event.resultIndex แทนที่จะเริ่มจาก 0 และแยก finalTranscript กับ interimTranscript ออกจากกัน แก้ 2 บรรทัดก็จบ

feature ที่ทำให้ voice typing ใช้จริงได้ในชีวิตประจำวันมีอะไรบ้าง?

อย่างน้อยต้องมี auto-restart เมื่อ Chrome timeout ทุก 30 วินาที, visual indicator ว่ากำลังฟังอยู่ไหม, ภาษา default ตามเครื่อง, และหยุดสะอาดเมื่อกดส่ง ถ้าขาดอันใดอันหนึ่งผู้ใช้จะรู้สึกว่ามันไม่น่าเชื่อถือและเลิกใช้ไปเอง

บ่น AI ว่า feature ไม่ดี แล้วมันจะแก้ให้เองได้จริงไหม?

ได้ครับ ถ้าเป็น AI Agent ที่อยู่บน server ของคุณเองและเข้าถึง codebase ได้ ผมแค่บ่นว่าพิมพ์ไทยบนมือถือช้า ภายในชั่วโมงเดียวก็มีปุ่มไมค์ใน app พร้อมใช้ เพราะมันเขียน code เองได้ ทดสอบเองได้ deploy เองได้ ต่างจาก ChatGPT ที่ตอบแค่ว่าควรทำยังไง

ถ้าคุณก็อยากมี AI Agent ส่วนตัวบน server ของคุณเอง ที่ปรับ feature เพิ่มได้เรื่อยๆ ตามที่คุณบ่น — ลอง Newton ได้เลยครับ ไม่ต้อง setup server เอง ไม่ต้องลง AI เอง กดสมัคร แพ็กเกจมาพร้อม Tim Chat (ที่มี voice typing แล้วด้วย 555) ระบบ auto provision จะ setup ให้คุณภายในไม่กี่นาที แล้วคุณก็มี AI ของคุณเองที่บ่นใส่มันได้เลยเหมือนผม

— ปอนด์