VELA · ผู้ช่วยขายทางโทรศัพท์ภาษาไทย

ตั้งแต่ประชุมครั้งก่อน
เราทำอะไรเพิ่มไปบ้าง

27 ต.ค. → 9 พ.ย. 2569 · ทุกตัวเลขในหน้านี้วัดจากระบบจริงบนเครื่อง r1 · มีทั้งที่ดีขึ้นและที่ยังไม่ดี — บอกตรงๆ ทั้งสองแบบ

0เสียงให้เลือก
คนจริง 7 + AI 100
0/42 สายทดสอบผ่าน
13 บท × 3 รอบ อัตโนมัติ
0วินาที
เวลาตอบกลางของบอท
0พี่เปาอ่านผิด
จาก 12.3% ก่อนแก้
เลื่อนลง ↓

8 เรื่องในรอบนี้

01

ฟังสายจริง: บอทจำลูกค้าได้ข้ามสาย

สายทดสอบจากชุดเทสอัตโนมัติ (บท S01) · ลูกค้าเป็นเสียงสมมติ ที่ AI สร้าง พูดใส่ระบบจริงทุกชั้น: หูถอดเสียง → สมองคิด → ตะกร้า → เสียงตอบ · สายที่สองโทรมาวันเดียวกัน บอทเปิดความจำแล้วรู้ว่า "ของเดิม" คืออะไร

สายที่ 1 · สั่งซื้อครั้งแรก0:00
🛒 ตะกร้าว่าง

ไม่ใช่วิดีโอ — หน้าเว็บเล่นซ้ำผลเทสจริงวันที่ 8 พ.ย.: ข้อความ คำตอบบอท ตะกร้า ความจำ และเวลาตอบ มาจากระบบจริงทั้งหมด · ซ้าย = ลูกค้า (เสียงที่ AI สร้าง) · ขวา = บอท (เสียงเปรมวดี สังเคราะห์ใหม่จากคำตอบเดิม เพราะชุดเทสไม่ได้อัดเสียงบอทไว้)

🧠 สิ่งที่บอทจดไว้หลังวางสาย

  • กดฟังสายแรกให้จบ ความจำจะขึ้นตรงนี้

จดเองหลังวางสาย: สมองตัวใหญ่ (30B) แตกเป็นข้อ ทุกข้อต้องมีประโยคจริงจากสายเป็นหลักฐาน ไม่มีหลักฐาน = ทิ้ง · ของที่สั่งจดจากระบบตะกร้าตรงๆ ไม่ผ่านโมเดล

⏱ ทุกเทิร์นในสายนี้

เวลาตั้งแต่ลูกค้าพูดจบจนบอทเริ่มพูด

02

ความจำ + ด่านกันพลาด

สมองที่ใช้คุยในสายเป็นโมเดลเล็ก (4B) เพื่อให้ตอบไว · สั่งในพรอมต์อย่างเดียวมันทำตามไม่ครบ เราจึงวัดเป็นตัวเลขก่อน แล้วย้ายเรื่องที่พลาดบ่อยมาเป็นโค้ดรอบโมเดล

ถาม "เคยซื้ออะไรไป"

0/10→9/10

ตอบถูกจากความจำ

เดิมโมเดลตอบ "ไม่มีข้อมูล" ทั้งที่มี · ตอนนี้ด่านตอบจากความจำแทน: "ครั้งก่อนรับ Glow Serum 2 ชิ้นค่ะ ใช้แล้วเป็นยังไงบ้างคะ"

"เอาแบบเดิม"

0/10→ใส่ตะกร้าเอง

สั่งซ้ำจากความจำ

โมเดลไม่เคยปล่อยคำสั่งใส่ตะกร้าเลย (0/10) · ตอนนี้ด่านอ่านความจำ ใส่ตะกร้าให้ และพูดยืนยันชื่อของกับจำนวน

ส่งลิงก์ผิดช่องทาง

5/10→0/10

ผิดน้อยลง

ลูกค้าเลือก "แชท" ไว้ แต่โมเดลลอกคำถามจาก FAQ "แชทหรือ SMS" · แก้ข้อความ FAQ ตามความจำก่อนถึงโมเดล

ถามลูกค้าใหม่ "ใช้แล้วเป็นไง"

5/6→0/10

ไม่ถามผิดคนแล้ว

โมเดลลอกตัวอย่างในพรอมต์ไปถามคนที่ไม่เคยซื้อ · สลับตัวอย่างตามสถานะลูกค้า

เสนอโปรซ้ำวนๆ

8/8→4/8

ดีขึ้นครึ่งเดียว

เสนอแล้วตัดข้อมูลโปรออกจากพรอมต์ · ยังซ้ำครึ่งหนึ่งเพราะประวัติในสายยังล่อ — ยังไม่จบ

"โอนแล้วค่ะ"

รับทราบ ไม่วางสาย

บอกจ่ายแล้วแต่ยังคุยต่อ

เดิมโมเดลขอบคุณแล้ววางสายทันที · ตอนนี้รับทราบแล้วถามต่อ · ถ้าบอกจ่ายทั้งที่ไม่มีของค้าง บอทบอกตรงๆ ว่าไม่มีรายการรอชำระ

35–60 มิลลิวินาทีค้นความจำตอนเริ่มสาย (Hindsight บนเครื่องเรา)
ไม่ใส่ชื่อจดแต่ข้อเท็จจริงที่ลูกค้าพูด · ของที่ลูกค้าอ้าง = "ลูกค้าบอกว่า…"
หน้าดูความจำmemory-demo: เห็นว่าบอทจำอะไรจากสายจริง
03

เสียงคนจริงที่เราเทรน · 7 เสียง

เทรนจากเสียงคนจริง ใส่ทุกเสียงที่มี ทั้งดีและไม่ดี · ทุกเสียงอ่านประโยคขายชุดเดียวกัน 6 ประโยค × 2 รอบ แล้วให้หูของระบบฟังทวน (ตัวเลข = อ่านผิดกี่ % ยิ่งต่ำยิ่งดี · ประโยคชุดนี้มีตัวเลขและคำอังกฤษ ตัวเลขจึงสูงกว่าในสายทดสอบ) · เลื่อนลงเพื่อเลื่อนการ์ดไปทางขวา →

04

พี่เปาอ่านคำขายชัดขึ้น

เสียงผู้ชายอ่านคำขายบางคำเพี้ยน เช่น "สนใจ" → "สไลด์" · เราลองทั้งเทรนเพิ่ม และเปลี่ยนวิธีเขียนก่อนส่งให้เสียงอ่าน (บนจอยังเห็นคำเดิม) แล้ววัดเทียบกัน

9 คำที่แก้แล้ว · หูของระบบได้ยินถูกกี่ %

อ่านผิดทั้งสาย (ในชุดเทสอัตโนมัติ)

12.3%ก่อน
5.0%เปลี่ยนประโยครับสาย
3.0%+ คำแทน 9 คำ

ลองเทรนเพิ่ม (r1q) — ไม่ผ่าน

ให้พี่เปาพูดคำยากแล้วคัดรอบที่ถูกมาเทรนต่อ · คำยากดีขึ้นนิดเดียว (61 vs 58 จาก 90) แต่ประโยคทั่วไปแย่ลง (ผิด 12.1% vs 9.9%) และชื่อร้าน "เวลาบิวตี้" ถูกแค่ 1/3 · จึงไม่ใช้ และหันมาแก้ที่ข้อความแทน

พูดคำอังกฤษ

พี่เปารุ่น r1p พูดคำอังกฤษในประโยคขายได้ถูก 86% (เดิม 65%) · "Glow Serum" 6/9 (เดิม 0/9)

05

เสียง AI 100 เสียง · ตัวเลือกเพิ่ม

ไม่ใช่เสียงคนจริง — สร้างจากคำบรรยายอย่างเดียว เช่น "ผู้หญิงวัย 30 เสียงขึ้นจมูก" (โมเดล VoxCPM2) · ไม่มีเจ้าของเสียง จึงไม่ต้องขออนุญาตใคร · ยังไม่ได้เทรนเข้าระบบโทร เป็นตัวเลือกให้ทีมเลือกไปทำต่อ · ตัวเลขมุมการ์ด = หูของระบบอ่านผิดกี่ %

ทำให้ฟังเหมือนคนคุยจริง ไม่ใช่นักพากย์

ลอง 4 แบบกับเสียงเดียวกัน: A ประโยคเขียน · B ภาษาพูด มี เออ/อ่ะ/แหละ · C B + บอกโมเดลว่า "คนธรรมดาคุยโทรศัพท์" · D C แต่ปล่อยให้โมเดลพูดอิสระขึ้น

30 ประโยคภาษาพูดแบบลูกค้าจริง (แบบ C)

06

ชุดเทสทั้งสายอัตโนมัติ

13 บทสนทนา 36 เทิร์น · ลูกค้าเป็นเสียงสมมติ 13 คน (คนละอายุ คนละสำเนียง มีเสียงซ่า) โทรเข้าระบบจริงผ่านทางเดียวกับลูกค้า · ตรวจทั้งคำตอบ ตะกร้า การวางสาย ความจำ และเสียงที่บอทพูดออกมา · ใช้ทุกครั้งที่เปลี่ยนโมเดลหรือแก้โค้ด

0/42 ผ่าน (3 รอบ)
0วิ เวลาตอบกลาง
0เสียงหญิงอ่านผิด

รอบล่าสุด (9 พ.ย.) ผ่าน 27/28 — 1 สายบอทพูดประโยคเดิมซ้ำ รันบทนั้นซ้ำ 8 ครั้งผ่านหมด · ยังไม่ได้แก้

07

รับหลายสายพร้อมกัน (load test)

ประชุมครั้งก่อนบอกว่ากำลังทดสอบ — ผลออกแล้ว · เปลี่ยนตัวรันโมเดลเป็น vLLM (ประมวลผลหลายสายเป็นชุดเดียว) โมเดลเดิม คุณภาพเดิม · ลูกค้าจำลองโทรผ่านเว็บจริง (WebRTC) เข้าทีละ 1.5 วิ

0สายพร้อมกัน
ตอบใน 2.1 วิ — เร็วเท่าตอนมีสายเดียว

เวลาตอบกลาง (ลูกค้าพูดจบ → ได้ยินบอท)

ตัวรันเดิม (llama.cpp) · ตัวรันใหม่ (vLLM) · ตัวเดิมที่ 32 สาย รับได้แค่ 20–26 สาย

3 → 32+สายพร้อมกันที่ตอบได้ทันใจ (เครื่องเก่ารับได้ 3 สาย)
46/48ที่ 48 สาย ยังตอบ 2.4 วิ · 2 สายไม่ได้ยินคำทักตอนเครื่องโดนทีมอื่นใช้หนัก
4.7 วิจำลอง 100 คนโทรเข้าใน 20 วิ · รอเสียงตอบกลาง 4.7 วิ (95% ไม่เกิน 6.4 วิ)
~42 GBการ์ดจอที่เราใช้ จาก 256 GB · เครื่องแชร์กับทีมอื่น

วัด 26 ต.ค. บน r1 · ทุกสายพูดประโยคเดียวกัน · ตัวจำลอง 100 คนโหดกว่าจริง (ทุกคนพูดจบพร้อมกัน) · คอขวดถัดไปคือ "หู" เมื่อเกิน 48 สาย · ยังไม่ได้วัดซ้ำหลังเพิ่มความจำและด่านกันพลาด

08

หูไม่มั่ว · วางสายถูกจังหวะ

🔇

เสียงซ่า ≠ "สวัสดีครับ"

หูถอดเสียงชอบแต่งคำจากเสียงรบกวน (เสียงซ่าล้วน → "สวัสดีครับ" 12 ใน 12 ครั้ง) · เพิ่มหูตัวที่สองเช็กว่ามีคนพูดจริงไหม ไม่มี = ทิ้ง

🔁

ฟังไม่ชัด → ขอพูดใหม่

ประโยคสั้นที่หูสองตัวได้ยินไม่ตรงกัน บอทขอให้พูดอีกครั้ง แทนที่จะเดาแล้วตอบผิด

📴

ยามวางสาย

บอทวางเมื่อลูกค้าลาเท่านั้น ("แค่นี้" "ไว้ก่อน" "ไม่สะดวก") · ถ้าลูกค้ายังไม่ลา ตัดคำลาของบอทออกแล้วถาม "มีอะไรให้ช่วยเพิ่มเติมไหมคะ"

🔀

ขอเสียงผู้ชายกลางสาย

"ขอคุยกับผู้ชายได้ไหม" → สลับเป็นพี่เปาทันทีในสายเดิม คำลงท้ายเปลี่ยนเป็น ครับ

09

Lab ใหม่: แยกว่าใครพูด (VibeVoice)

โมเดลฟรีจาก Microsoft ฟังคลิปยาวถึง 60 นาทีรวดเดียว แล้วบอกว่าช่วงไหนใครพูด · เหมาะกับถอดสายย้อนหลัง/ประชุม · เราทำหน้า lab ให้วางลิงก์ YouTube แล้วฟังผลได้

ถอดข้อความไทย · อ่านผิดกี่ % (คลิปทีม 100 คลิป)

ข้อความไทยยังสู้ตัวที่ใช้ในสายไม่ได้ · ตัวถอดสดของ VibeVoice ไทยใช้ไม่ได้เลย · ใช้ในสายต่อด้วย Typhoon · VibeVoice เก่งเรื่องแยกคน

5 คลิปคุยกันจาก YouTube · คลิปละ 10 นาที

แต่ละสี = คนที่โมเดลแยกได้ · ยังไม่ได้ฟังตัดสินทุกคลิป ว่าแยกถูกไหม · 1 คลิปพัง: โมเดลวนพูดคำเดิมซ้ำ 17 นาที

เปิด lab ลองลิงก์เอง →
10

เบื้องหลัง

📱ลูกค้าเบราว์เซอร์ / มือถือ
👂หูTyphoon whisper + ตัวเช็กเสียงพูด
🧠สมอง 4B+ ด่านกันพลาด + ความจำ
🗣️เสียง7 เสียง · คำแทนต่อเสียง

ลิงก์เดียว ทุกเสียง

ย้ายทุกอย่างจากเครื่องเก่ามาเครื่อง r1 (GB300) · หน้า lab โทรได้ทุกเสียงจากลิงก์เดียว ไม่ต้องใช้รหัส

หลับเอง ตื่นเอง

เครื่องใช้ร่วมกับทีมอื่น · เสียงที่ไม่มีคนใช้ 10–15 นาทีปิดเองคืนการ์ดจอ · กดโทรแล้วปลุกให้

เอกสารส่งต่อ

KNOWLEDGE.md สรุปสถาปัตยกรรม การเทรนเสียง และวิธีรัน สำหรับทีมที่จะ deploy เอง

11

ที่ยังไม่ดี — บอกตรงๆ

  • เสียงวิว กรุณา เฟิร์น ดุจดาว เจ้าของเสียงยังไม่อนุญาตใช้เชิงพาณิชย์ ใช้ได้แค่ทดลอง
  • พี่เปาใช้คำแทน 3 คำที่ความหมายเปลี่ยนเล็กน้อย (อ่อนโยน→ไม่แรง · ระคายเคือง→แพ้ · ไนท์ครีม→ครีมกลางคืน) เสียงกับข้อความบนจอจึงไม่ตรงกันในคำเหล่านี้
  • บอทยังเสนอโปรซ้ำได้ครึ่งหนึ่งของสายที่คุยวน และพูดประโยคเดิมซ้ำเป็นครั้งคราว (1 ใน 10 สายในบทหนึ่ง)
  • ความจำข้ามสายเป็นระบบทดลอง ยังไม่เคยใช้กับลูกค้าจริง
  • เสียง AI 100 เสียงยังไม่ได้เทรนเข้าระบบโทร · VibeVoice ยังไม่ได้ตัดสินว่าแยกคนถูกแค่ไหน