สายการผลิตคลิปสั้นประจำวันของเรามีขั้นตอนหนึ่งที่เงียบๆ แต่สำคัญมาก — การถอดเสียงพูดเป็นข้อความ (ASR) ก่อนจะตัดต่อ ใส่คำบรรยาย และตรวจคุณภาพ บทความนี้บันทึกการเปลี่ยนแปลงเล็กๆ ที่มีผลใหญ่: การสลับลำดับของระบบถอดเสียงสำรอง 3 ชั้น ให้เครื่องที่ตอบเร็วที่สุดทำงานก่อน
ปัญหา: ASR คือคอขวดที่มองไม่เห็น
ทุกครั้งที่คลิปเข้าระบบ หากตัวถอดเสียงหลักช้าหรือคิวยาว งานทั้งวันจะถูกดึงช้าลงตามไปด้วย เราเคยวางลำดับให้เครื่องเรนเดอร์ GPU ทำงานชั้นแรกเสมอ เพราะเข้าใจว่า GPU ต้องเร็วกว่าเสมอ แต่ตัวเลขจริงบอกเรื่องอื่น — ช่วงเวลาที่ GPU กำลังรีบเรนเดอร์วิดีโอ คิว ASR จะถูกเบียด ทำให้งานถอดเสียงรอนานเกินจำเป็น
สถาปัตยกรรม 3 ชั้นแบบใหม่
หลักคิดง่ายๆ: ให้เครื่องที่ว่างและเร็วทำงานก่อน แล้วสำรองเป็นชั้นๆ อัตโนมัติ
| ชั้น | เครื่อง | บทบาท | เวลาตอบสุดท้ายก่อนสลับ |
|---|---|---|---|
| 1 | Mac Mini (MLX) | ตัวหลัก ตอบเร็ว ไม่แย่ง GPU กับงานเรนเดอร์ | ~3.4 วินาที |
| 2 | เซิร์ฟเวอร์ GPU | ตัวสำรองชั้นแรก | timeout 90 วินาที |
| 3 | CPU บนเครื่องหลัก | ตัวสำรองชั้นสุดท้าย | timeout 300 วินาที |
จุดสำคัญไม่ใช่แค่ความเร็ว แต่คือ การแยกภาระงาน — ชั้นที่ 1 ไม่กินทรัพยากรชุดเดียวกับงานเรนเดอร์ ทำให้คิวทั้งสองฝั่งเดินพร้อมกันได้
ผลลัพธ์ที่วัดได้จริง
หลังสลับลำดับ (การแก้ไขเพียงตำแหน่งในไฟล์ config เดียว) ตัวเลขที่ระบบรายงานกลับมาคือ:
- ความคล้ายข้อความเทียบต้นฉบับ (similarity) อยู่ที่ 0.9956 — เท่ากับก่อนสลับลำดับ แปลว่าคุณภาพไม่ถูกแลกกับความเร็ว
- ประตูตรวจคำเสริม (filler-gate) ผ่านทั้งชุด
- การตรวจสอบ end-to-end ครบทั้งชุดคำสั่ง
บทเรียนจากการสลับลำดับ
สิ่งที่ได้เรียนรู้จากงานชิ้นนี้สาม shortcut ให้ทีมอื่น:
- วัดก่อนเชื่อ — "GPU เร็วกว่า" เป็นจริงเฉพาะเมื่อ GPU ว่าง ตัวเลขจากระบบจริงสำคัญกว่าสมมติฐาน
- แยกภาระ อย่าแย่งกัน — งานเรนเดอร์กับงานถอดเสียงไม่ควรอยู่บนคิวเดียวกัน
- สำรองเป็นชั้นๆ และตั้งเวลาตัดใจ — timeout ที่ชัดเจนทำให้ระบบฟื้นเองได้ โดยไม่ต้องมีคนเฝ้า
ระบบถอดเสียงชุดนี้ทำงานร่วมกับ gateway โมเดลกลางของทีม ซึ่งดูแลเรื่องคิวและสิทธิ์การเรียกใช้ทั้งหมด
ขั้นตอนถัดไป
ชุดถัดไปของงานนี้คือการตรวจสอบอัตโนมัติคุณภาพเสียงก่อนเข้าถอดข้อความ (เช็คสัญญาณรบกวนและระดับเสียง) เพื่อลดงานที่เข้าคิวแล้วต้องยกเลิก ตั้งแต่ขั้นแรก — จะบันทึกผลไว้ในบล็อกนี้ต่อ