Whisper Notes เพิ่มการแยกผู้พูดบนเครื่อง

28 กรกฎาคม 2569
·
8 min read
·Whisper Notes Team

ทรานสคริปต์บอกว่าใครพูดอะไร แต่สำหรับการสัมภาษณ์ การประชุม และพอดแคสต์ เรายังต้องรู้ด้วยว่าใครเป็นคนพูด งานวิจัยด้านเสียงเรียกปัญหานี้ว่าการแยกผู้พูด (speaker diarization) ตั้งแต่ iPhone 1.8.5, Mac App Store 1.3.2 และ Mac รุ่นดาวน์โหลดตรง 1.5.1 เป็นต้นไป Whisper Notes ทำขั้นตอนนี้บนอุปกรณ์ทั้งหมด

บทความนี้อธิบายวิธีทำงาน เปิดเผยผล benchmark เทียบกับข้อมูลอ้างอิงจากคลาวด์ และพูดตรง ๆ ถึงกรณีหนึ่งที่เราแก้ให้หมดไปไม่ได้ พร้อมวิธีที่เราเลือกใช้แทน

ฟีเจอร์นี้ทำอะไรได้

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

การแยกผู้พูดบนเครื่องใน Whisper Notes สำหรับ Mac: ทรานสคริปต์พอดแคสต์พร้อมป้ายผู้พูดและเวลากำกับ ประมวลผลในเครื่อง ป้ายผู้พูดใน Whisper Notes สำหรับ iPhone: ทรานสคริปต์แสดงชื่อและเวลากำกับของผู้พูดแต่ละคน

ป้ายผู้พูดบน Mac และ iPhone แตะประโยคเพื่อข้ามไปยังช่วงเวลานั้นในเสียง

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

เปลี่ยนชื่อผู้พูดใน Whisper Notes แล้วป้ายอัปเดตทั่วทั้งทรานสคริปต์

เปลี่ยนชื่อผู้พูดครั้งเดียว ทุกย่อหน้าในโน้ตจะอัปเดตตาม

ไฟล์บันทึกการประชุมจะระบุผู้พูดโดยอัตโนมัติเมื่อสายจบ (ปิดได้ในการตั้งค่า) ป้ายยังอยู่เมื่อส่งออก: คัดลอกทรานสคริปต์พร้อมผู้พูด จะนำป้ายไปยังคลิปบอร์ด ส่วนไฟล์ SRT และ VTT จะเก็บป้ายไว้ในคำบรรยาย

การแยกผู้พูดวิเคราะห์เสียง ไม่ใช่คำพูด จึงทำงานเหมือนกันในกว่า 100 ภาษาที่แอปถอดเสียงได้

โมเดล 19 MB บน Neural Engine

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

Whisper Notes ใช้ pipeline community-1 ของ pyannote ที่แปลงเป็น Core ML เพื่อให้ทั้งสองขั้นทำงานบน Neural Engine ดาวน์โหลดครั้งเดียวขนาด 19 MB และประมวลผลบทสนทนา 5.7 นาทีใน 2–4 วินาทีบน Mac ชิปตระกูล M

เสียง → ช่วงที่มีคำพูด → ลายน้ำเสียง → กลุ่ม → ป้าย

ทุกขั้นตอนทำงานบนอุปกรณ์

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

สิ่งที่เราวัด

เราใช้ benchmark แบบคงที่สองไฟล์ ข้อมูลอ้างอิงสร้างด้วยบริการ ASR และแยกผู้พูดบนคลาวด์ ElevenLabs แล้วตรวจด้วยคน การให้คะแนนกำหนดเสียงทุก 10 ms ให้กับผู้พูดหนึ่งคน และใช้การจับคู่ที่ดีที่สุดระหว่างผลลัพธ์กับข้อมูลอ้างอิง สองไฟล์เป็นตัวอย่างขนาดเล็ก ตัวเลขจึงบอกแนวโน้ม ไม่ใช่ข้อสรุปเด็ดขาด

ไฟล์แรกแทนกรณีทั่วไป: พอดแคสต์ภาษาอังกฤษห้านาที ผู้พูดสองคนมีเสียงต่างกันชัดเจน การสัมภาษณ์ พอดแคสต์ และการประชุมตัวต่อตัวส่วนใหญ่มีลักษณะนี้

พอดแคสต์อังกฤษ ผู้พูด 2 คน (5 นาที) ผลลัพธ์
ความถูกต้องระดับเฟรม (ความละเอียด 10 ms) 96.7%
ความแม่นยำระดับประโยค (สิ่งที่อ่านบนหน้าจอ) 99.1%
เวลาประมวลผล Neural Engine ตระกูล M 2–4 วินาที

ส่วนที่เหลือ 0.9% คือขอบเขตคลาดเคลื่อนสามจุด รวม 3.4 วินาที ซึ่งใกล้กับความละเอียดของข้อมูลอ้างอิงเอง สำหรับเสียงแบบนี้ ผลบนเครื่องใกล้เคียงบริการคลาวด์ที่สร้างข้อมูลอ้างอิงของเรา

กรณีที่ยาก

ไฟล์ที่สองเลือกมาให้ยากโดยตั้งใจ: ผู้ชายสองคนเสียงคล้ายกันในห้องที่มีเสียงสะท้อน และพิธีกรพูดแทรก 19 ครั้ง ครั้งละเฉลี่ย 2.3 วินาที แขกรับเชิญพูด 272 วินาที ส่วนพิธีกร 43 วินาที นี่คือลักษณะทางเสียงที่ทำให้การแยกผู้พูดล้มเหลวไม่ว่าจะเป็นภาษาใด: เสียงคล้ายกันสลับพูดช่วงสั้น ๆ

การจัดกลุ่มอัตโนมัติล้มเหลวในกรณีนี้ ลายน้ำเสียงทั้งสองอยู่ใกล้กันเกินไป อัลกอริทึมจึงรวมเข้าด้วยกันและกำหนดบทสนทนาเกือบทั้งหมดให้ป้ายเดียว ไฟล์นี้บังเอิญเป็นรายการสัมภาษณ์ภาษาจีน จึงใช้ทดสอบสมมติฐานที่ตรงไปตรงมาได้ว่าโมเดลที่ปรับเฉพาะภาษาจะทำได้ดีกว่า เรารันโมเดลผู้พูดสองตัวที่ฝึกกับเสียงภาษาจีนโดยเฉพาะผ่าน pipeline บน CPU:

โมเดล พอดแคสต์อังกฤษ กรณียาก* เวลา (เสียง 5.7 นาที)
pyannote community-1 (ที่ใช้จริง, Neural Engine) 96.7% 81–82% 2–4 วินาที
CAM++ (ฝึกด้วยภาษาจีน, CPU) 93.9% 81.2% 36–103 วินาที
ERes2NetV2 (ฝึกด้วยภาษาจีน, CPU) 80.5% 220–290 วินาที

* ความถูกต้องระดับเฟรมในไฟล์กรณียากเมื่อระบุจำนวนผู้พูด หากไม่ระบุ ทุกโมเดลจะรวมไปที่ผู้พูดคนเดียว

ทั้งสองโมเดลล้มเหลวแบบเดียวกัน ทั้งที่ใช้การคำนวณมากกว่า 10 ถึง 100 เท่า ความยากอยู่ที่ลักษณะทางเสียง ไม่ใช่ภาษา—ขีดจำกัดคือสิ่งที่ embedding เสียงในปัจจุบันแยกได้ ไม่ว่าจะเป็นภาษาใด

เมื่อวิธีตรงไปตรงมานี้ใช้ไม่ได้ เราจึงให้ข้อมูลที่ pipeline เดาเองไม่ได้ นั่นคือจำนวนคนในห้อง เมื่อกำหนดจำนวนจากเมนู 2 ถึง 6 คน ไฟล์ยากเพิ่มจากล้มเหลวเป็นความแม่นยำระดับประโยค 89% การตรวจอัตโนมัติยังเป็นค่าเริ่มต้น เพราะใช้ได้ดีกับเสียงทั่วไป

เรียกใช้การตรวจผู้พูดอีกครั้งใน Whisper Notes โดยระบุจำนวนผู้พูด พร้อมส่งออก SRT และ VTT ที่มีป้ายผู้พูด

ตรวจผู้พูดอีกครั้งโดยระบุจำนวนที่แน่นอน เมนูเดียวกันส่งออก SRT และ VTT พร้อมป้ายผู้พูดได้

แก้คำพูดแทรกสั้น ๆ

เมื่อกำหนดจำนวนผู้พูดแล้ว ข้อผิดพลาดที่เหลือราวครึ่งหนึ่งอยู่ในคำพูดแทรกที่สั้นกว่าสามวินาที คลิปสองวินาทีให้สัญญาณแก่โมเดล embedding น้อยมาก และในการคุยโต้ตอบเร็ว ลายน้ำเสียงจะปนเสียงของคนข้างเคียงบางส่วน

หลังจัดกลุ่ม pipeline จึงตรวจทุกประโยคที่สั้นกว่า 3.5 วินาทีใหม่ โดยคำนวณลายน้ำเสียงด้วย mask ที่ครอบเฉพาะเฟรมของประโยคนั้น เทียบกับจุดยึดของแต่ละคน ซึ่งเป็นค่าเฉลี่ยของช่วงพูดที่ยาวที่สุด และเปลี่ยนป้ายเมื่อส่วนต่างชัดเจนเท่านั้น ขั้นตอนนี้ใช้โมเดลเดิม จึงไม่ต้องดาวน์โหลดเพิ่ม

ความแม่นยำระดับประโยคทั้งระบบ ก่อนแก้ หลังแก้
กรณียาก (ระบุจำนวนผู้พูด) 89.0% 94.8%
พอดแคสต์อังกฤษ (อัตโนมัติ) 98.5% 99.1%

เกณฑ์การเปลี่ยนป้ายตั้งไว้อย่างระมัดระวัง ตัวแก้เปลี่ยน 21 ป้ายในสองไฟล์ และไม่สร้างข้อผิดพลาดใหม่

ข้อจำกัด

• ป้ายจะปรากฏหลังบันทึกเสียงจบ ไม่ใช่ระหว่างสาย หากต้องการคำบรรยายสดพร้อมชื่อผู้พูดขณะประชุม บริการคลาวด์อย่าง Otter หรือ Notta เหมาะกว่า

• เมื่อหลายคนพูดซ้อนกัน แต่ละประโยคจะมีป้ายเดียว

• เสียงที่คล้ายกันยังแยกได้ยาก 94.8% ในไฟล์ยากคือขีดจำกัดปัจจุบันเมื่อบอกจำนวนผู้พูด ไม่ใช่ปัญหาที่แก้ได้แล้ว

เวอร์ชันที่รองรับ

การระบุผู้พูดรวมอยู่ในการซื้อครั้งเดียว $6.99 พร้อมเครื่องมือถอดเสียงสามตัวของแอป ได้แก่ Parakeet V3, Whisper Large V3 Turbo และ SenseVoice รวมถึงการแก้ไขด้วย AI ในเครื่อง ไม่มีแพ็กเกจแยกและไม่ต้องมีบัญชี

iPhone: App Store เวอร์ชัน 1.8.5 ขึ้นไป

Mac App Store: เวอร์ชัน 1.3.2 ขึ้นไป

Mac ดาวน์โหลดตรง (DMG): เวอร์ชัน 1.5.1 ขึ้นไปจาก whispernotes.app พร้อมรุ่นทดลองฟรี

หากต้องการดูวิธีบันทึกการประชุม โปรดอ่านบทความเรื่องการถอดเสียงประชุมแบบออฟไลน์