เรื่องนี้ต่อจากบทความก่อนหน้าที่เล่าวิธีเปลี่ยนเสียงพูดเป็นบันทึกความรู้โดยไม่ให้ AI กุเรื่อง คราวนั้นพูดถึงหลักการเป็นหลัก คราวนี้ขอลงลึกถึงเบื้องหลังจริง ๆ ว่าขั้นถอดเสียงที่ดูเหมือนง่ายที่สุด กลับเป็นขั้นที่กินเวลามากที่สุด และทางออกที่เจอก็ไม่ใช่เครื่องแรงขึ้น แต่เป็นการเลือกโมเดลที่ออกแบบมาคนละแบบ
ตั้งต้นจากปัญหาง่าย ๆ มีเลคเชอร์ภาษาไทยชุดยาวที่อยากถอดเป็นตัวหนังสือเก็บไว้ คลิปส่วนใหญ่โยนเข้า NotebookLM ก็จบ แต่บางคลิป NotebookLM ไม่รับไฟล์ เลยต้องถอดเองในเครื่อง ของฟรีที่นึกถึงก่อนคือ Whisper โมเดลถอดเสียงโอเพนซอร์สของ OpenAI ที่คนใช้กันทั่วโลก กับรุ่นที่ทีมไทยเอาไปต่อยอดให้รองรับภาษาไทยได้ดีขึ้น ทั้ง Pathumma (ของ NECTEC) และ Typhoon Whisper (ของ SCB10X ในเครือ SCBX) พอลงมือถึงได้เจอกำแพง
คลิปเดียวยาวประมาณ 10 นาที ถอดไป 1 คลิปใช้เวลาเกือบ 1 ชั่วโมง ทั้งงานมีหลายสิบคลิป รวมแล้วประมาณ 7 ชั่วโมง ตอนนั้นคิดว่าเครื่องไม่แรงพอ แต่พอไปขุดดูจริง ๆ ถึงรู้ว่าเข้าใจปัญหาผิดมาตลอด
ช่วงที่ 1กำแพง 7 ชั่วโมง กับการแก้ผิดจุด
สิ่งแรกที่ทุกคนทำเวลาถอดเสียงช้าคือไปยุ่งกับเครื่องมือรอบ ๆ ตัวโมเดล ตัดคลิปให้สั้นลง เพิ่มขนาดที่ป้อนเข้าไปต่อรอบ ย้ายไปรันบนการ์ดจอ ลองรุ่นที่เล็กลง ทุกอย่างนี้ช่วยได้นิดหน่อย แต่ไม่เคยแก้ที่ต้นเหตุ
ลองดูตัวเลขที่วัดเองจะเห็นภาพ เอา Pathumma ซึ่งเป็น Whisper รุ่น large-v3 สำหรับภาษาไทยมารันบนการ์ดจอของ Mac เสียงแค่ 2 นาที ใช้เวลาถอด 317 วินาที คิดเป็น 0.38 เท่าของเวลาจริง แปลว่าถอดช้ากว่าเวลาที่คนพูดเสียอีก ส่วนคลิป 10 นาทีเต็มที่ลากไปเกือบ 1 ชั่วโมงต่อคลิปตอนต้นนั้น มาจากการดันทั้งคลิปยาวเข้าไปถอดรวดเดียว ยิ่งช้าทวีคูณเข้าไปอีก
ตรงนี้มีกับดักทางความคิดอยู่ พอเห็นว่า "คลิปสั้นเร็ว คลิปยาวช้าแบบทวีคูณ" เราเลยไปสรุปว่าทางแก้คือหั่นคลิปยาวให้เป็นชิ้นสั้น ๆ แล้วถอดทีละชิ้น ซึ่งก็ช่วยได้จริง แต่เป็นแค่การประคองอาการ ไม่ใช่การรักษา เพราะตัวที่ช้าคือ วิธีที่โมเดลคิด ไม่ใช่ความยาวของไฟล์
ตัวที่ต้องแก้จริง ๆ ไม่ได้อยู่ที่ขนาดคลิป ไม่ได้อยู่ที่การ์ดจอ และไม่ได้อยู่ที่การจูนค่าต่าง ๆ ของ Whisper แต่อยู่ลึกกว่านั้น คืออยู่ที่ว่าโมเดลถอดเสียงออกมาเป็นตัวหนังสือ "ด้วยวิธีไหน" ต่างหาก
ช่วงที่ 2ตัวแปรที่แท้จริงคือสถาปัตยกรรม ไม่ใช่การจูน
ทำไม Whisper ถึงช้าโดยธรรมชาติ
Whisper เป็นโมเดลแบบที่เรียกว่า autoregressive แปลตรงตัวคือถอดเสียงออกมา ทีละคำต่อกันไปเรื่อย ๆ คำถัดไปต้องรอให้คำก่อนหน้าออกมาก่อน เพราะต้องเอาคำที่เพิ่งถอดได้มาเป็นตัวตั้งของคำต่อไป งานส่วนใหญ่เลยเป็นการเดาคำถัดไป วนเป็นพัน ๆ รอบต่อเสียงแค่นาทีเดียว
ลักษณะนี้เลยทำงานพร้อมกันหลายส่วนไม่ได้ ต่อให้การ์ดจอแรงแค่ไหน ก็ยังต้องเดินทีละก้าวตามลำดับอยู่ดี ยิ่งบนเครื่องที่ใช้แต่ซีพียู ยิ่งช้าเข้าไปอีก นี่คือเหตุผลที่ความพยายามก่อนหน้าทั้งหมด ทั้ง faster-whisper, Pathumma, Typhoon Whisper Turbo ล้วนช้าเหมือนกัน เพราะล้วนเป็น Whisper ที่ถอดทีละคำ การหั่นคลิปเลยเป็นได้แค่ผ้าพันแผล
อีกวิธีหนึ่งของการถอดเสียง
โมเดลถอดเสียงอีกตระกูลหนึ่งทำงานคนละแบบ คือพวก transducer กับ CTC ซึ่งเป็นแบบ non-autoregressive แทนที่จะเดาคำถัดไปทีละคำ ก็ถอดออกมา ทีละหลายช่วงเสียงสั้น ๆ พร้อมกัน ช่วงเสียงแต่ละช่วงไม่ต้องรอช่วงอื่น เลยใช้ฮาร์ดแวร์ได้เต็มที่กว่ามาก นี่เป็นเหตุผลหนึ่งที่บริการถอดเสียงบนคลาวด์เจ้าใหญ่ ๆ ถึงเร็วผิดหูผิดตา เบื้องหลังหลายเจ้าใช้โมเดลตระกูลนี้ ไม่ใช่ Whisper
ของแบบนี้ไม่ได้มีแต่บนคลาวด์ โมเดลภาษาไทยที่เป็น transducer ก็มีให้ใช้ฟรี ตัวที่ลองคือ Typhoon ASR Real-time ของ SCB10X ซึ่งเป็นโมเดลตระกูล FastConformer-Transducer (NeMo RNN-Transducer ยืนยันได้จาก log ตอนรันเอง) พอเอามารันถึงได้เห็นว่าตัวเลขมันคนละโลกกับ Whisper
| โมเดล | สถาปัตยกรรม | รันบน | ความเร็ว |
|---|---|---|---|
| Pathumma (Whisper large-v3) | autoregressive (ถอดทีละคำ) | การ์ดจอ Mac | 0.38 เท่า |
| Typhoon ASR Real-time | transducer (ถอดขนาน) | ซีพียูล้วน | 80 เท่า |
อ่านตารางนี้ช้า ๆ เพราะสวนสัญชาตญาณ ตัวที่ช้า (0.38 เท่า) รันอยู่บนการ์ดจอ ส่วนตัวที่เร็ว (80 เท่า) รันอยู่บนซีพียูธรรมดา ต่างกันราว 200 เท่า และตัวที่เร็วกว่ายังใช้ฮาร์ดแวร์ด้อยกว่าด้วยซ้ำ ฮาร์ดแวร์ไม่ได้ช่วย Whisper เลย ตัวที่ช่วยคือสถาปัตยกรรมต่างหาก
เลคเชอร์ 5 นาทีที่ Whisper ต้องใช้เวลาเป็นนาที ตัว transducer ถอดจบใน 3.8 วินาที บนเครื่องเดียวกัน นี่ไม่ใช่การจูนให้ดีขึ้น แต่คือการเปลี่ยนวิธีที่โมเดลทำงานเลย
บทเรียนที่ติดตัวมาจากเรื่องนี้ใช้ได้กับงานสร้างของกับ AI แทบทุกอย่าง ก่อนจะไปขัดเกลาของที่อยู่ตรงหน้า ให้ถอยมาถามก่อนว่ากำลังจูนของที่ถูกตัวหรือเปล่า เพราะการจูน Whisper ให้เร็วขึ้นทีละนิด ต่อให้ทำได้ดีแค่ไหน ก็ไม่มีวันชนะการเปลี่ยนไปใช้โมเดลที่ออกแบบมาให้เร็วตั้งแต่ต้น
ช่วงที่ 3โครงสร้างที่ห่อมันไว้ และวิธีเริ่มของคุณ
ความเร็วเป็นแค่ครึ่งเดียวของเรื่อง เพราะตัวหนังสือที่ถอดออกมาเร็ว ๆ นั้นยัง เชื่อทั้งหมดไม่ได้ โมเดลถอดเสียงไม่ว่าจะเร็วหรือช้าก็สะกดคำเพี้ยน ฟังคำอังกฤษเป็นไทยมั่ว และที่อันตรายกว่าคือพอเอาไปให้ AI สรุปต่อ ก็จะเติมสิ่งที่ฟังดูเข้าท่าแต่ไม่มีใครพูดเข้ามา
ตรงนี้แหละที่ความเร็วกับความเชื่อถือได้ต้องมาอยู่ด้วยกัน เราเลยห่อขั้นตอนทั้งหมดไว้เป็น skill ที่ทำงานเป็นสายพานเดียว ตั้งแต่ตัดเสียง ถอดด้วยโมเดล transducer ไปจนถึงด่านตรวจที่บังคับว่าทุกประเด็นต้องชี้กลับไปหาหลักฐานในเสียงจริงได้ ก่อนจะนับเป็นความรู้
หัวใจคือด่านตรวจ ไม่ใช่ตัวถอดเสียง
โครงของ skill แยกหน้าที่ชัดเจนเป็นชั้น ๆ
- ชั้นรับวัตถุดิบ เสียบแหล่งเสียงได้หลายทาง คลิปไหนที่ NotebookLM รับก็ให้มันถอดและให้คำตอบพร้อมอ้างอิงมาเลย คลิปไหนไม่รับ ค่อยตกมาที่ตัวถอดเสียงในเครื่อง ตรงนี้เองที่ transducer เข้ามาแทน Whisper ในฐานะตัวสำรอง
- ชั้นสังเคราะห์ สรุปเฉพาะจากไฟล์ที่ป้อน ห้ามดึงความรู้ข้างนอกมาปน เก็บแก่นพอ ไม่ลอกคำต่อคำ
- ชั้นด่านตรวจหลักฐาน ตัวที่ทำให้ทั้งหมดเชื่อได้ มีตัวตรวจอีกตัวที่หน้าที่เดียวคือไล่หาว่าทุกประเด็น ทุกตัวเลข ทุกชื่อ พูดในเสียงจริงตรงไหน อันไหนหาที่มาไม่เจอคือตัดทิ้ง ไม่มีเก็บไว้ก่อน
- ชั้นติดป้ายความเชื่อถือ โน้ตที่มาจากเสียงถอดเองจะถูกตีตราว่ายังไม่ผ่านด่าน และจัดอันดับความน่าเชื่อต่ำกว่าโน้ตที่มีอ้างอิงในตัว จนกว่าจะตรวจผ่าน ป้ายนี้ทำให้รู้ได้ทันทีว่าโน้ตไหนเชื่อได้แค่ไหน
จุดที่อยากเน้นคือ ด่านตรวจสำคัญกว่าตัวถอดเสียงเสียอีก เพราะตัวหนังสือที่ถอดมาเป็นข้อความเปล่า ไม่มีแหล่งอ้างอิงกำกับเหมือนคำตอบจาก NotebookLM ข้อความที่ไม่มีอะไรรองรับ คือข้อความที่ AI เติมเรื่องเข้ามาได้ง่ายที่สุด ความผิดพลาดที่ต้องกลัวไม่ใช่การมั่วแบบสุ่ม แต่เป็นการเดาที่ฟังดูเข้าท่าจนแยกไม่ออกต่างหาก
ส่วนที่ขอเก็บไว้
หลักการทั้งหมดในบทความนี้เปิดหมด เลือกโมเดล transducer แทน Whisper ตั้งด่านตรวจหลักฐาน ติดป้ายความเชื่อถือ ใครก็ทำตามได้ ส่วนที่ลงแรงทำต่อคือรายละเอียดปลีกย่อยที่ทำให้ลื่นในงานสเกลใหญ่ ทั้งวิธีตัดเสียง ค่าตั้งของโมเดล และตัวประกอบที่ร้อยทุกขั้นเข้าด้วยกันให้ทำงานเองได้ วางให้ส่วนที่เรียกใช้งานคงรูปแบบเดิม ส่วนเครื่องยนต์ข้างในสลับเปลี่ยนรุ่นได้ และค่าต่าง ๆ ก็ปรับไปตามวัตถุดิบของแต่ละคน ไม่มีเลขวิเศษตัวเดียวที่ใช้ได้กับทุกงาน
ถ้าจะลองเอง เริ่มจากตรงนี้
- อย่าเพิ่งจูน Whisper ถ้างานคุณคือถอดเสียงเป็นกอง แล้วความเร็วคือคอขวด ให้ลองโมเดลตระกูล transducer ก่อน ภาษาไทยลองตัวของ SCB10X ภาษาอื่นมีให้เลือกหลายตัวในชุดเครื่องมือ NVIDIA NeMo ที่รวมโมเดล Conformer-Transducer ไว้หลายภาษา
- วัดด้วยตัวเลขเท่าของเวลาจริง จับเวลาถอดเทียบกับความยาวเสียง อย่าเดาว่าตัวไหนเร็ว วัดบนเครื่องและเสียงของคุณเอง
- อย่าเชื่อตัวหนังสือที่ถอดมาทันที ไม่ว่าโมเดลจะเร็วแค่ไหน ก่อนเอาผลไปสรุปต่อ ตั้งด่านตรวจว่าทุกประเด็นชี้กลับไปหาเสียงจริงได้ หาที่มาไม่เจอคือตัด
- เก็บเสียงและตัวหนังสือต้นทางไว้ มันคือหลักฐานที่บันทึกอ้างกลับ อย่าลบทิ้งหลังสรุปเสร็จ
ลองกับคลิปเดียวก่อนจะเห็นเองว่า แค่เปลี่ยนสถาปัตยกรรมโมเดล จากรอเป็นชั่วโมงเหลือไม่กี่วินาที เปลี่ยนงานที่เคยขี้เกียจทำ ให้กลายเป็นงานที่ทำได้สบาย ๆ ทุกวัน
ส่วนพอได้ตัวหนังสือมาแล้ว ไม่ว่าจะจาก NotebookLM หรือถอดเอง จะสั่งงานต่อยังไงให้กลายเป็นบันทึกที่ใช้จริง ทั้งหลักการตั้ง prompt และ skill ที่ตั้งไว้ให้ทำงานเองได้ ขอเก็บไว้เล่าในบทความต่อ ๆ ไป
- ตัวเลขความเร็วทั้งหมดในบทความนี้ วัดเองบนเครื่องเดียวกัน จาก log การรันจริง (มิ.ย. 2026) ไม่ใช่ตัวเลขที่ยกมาจากที่อื่น
- สถาปัตยกรรม Whisper (encoder-decoder ที่ถอดทีละโทเคน) Radford et al., Robust Speech Recognition via Large-Scale Weak Supervision
- RNN-Transducer Graves, Sequence Transduction with Recurrent Neural Networks
- Conformer Gulati et al., Conformer: Convolution-augmented Transformer for Speech Recognition
- ASR บนคลาวด์ที่ใช้โมเดลตระกูล non-autoregressive Zhang et al., Google USM
- โมเดลที่ใช้ทดสอบ scb10x/typhoon-asr-realtime บน Hugging Face
- โมเดล Whisper ภาษาไทยที่ใช้เทียบ Pathumma-whisper ของ NECTEC
- เริ่มที่หลักการ คู่มือสร้างคลังความรู้ที่เชื่อถือได้ ภาพรวมทั้งกระบวนการตั้งแต่เสียงถึงโน้ต
- ที่มาของด่านตรวจ เปลี่ยนเสียงพูดเป็นบันทึกที่เชื่อถือได้ โดยไม่ให้ AI กุเรื่อง
- เปิดให้ AI คุยผ่าน Discord อย่างปลอดภัยด้วยด่านตรวจสิทธิ์ ฝั่ง access ของซีรีส์
- เรื่องการมอบหมายงานให้ AI ไม่ใช่ทุกการกระทำที่ต้องรอคน โมเดล 3 ระดับของการคุมลูป
- ดูทั้งชุดที่ หน้ารวมบทความ