การแปลงเสียงเป็นข้อความในเครื่องโดยใช้โมเดล Whisper ของ OpenAI ได้รับความนิยมอย่างมากในหมู่นักพัฒนาที่กำลังมองหาทางเลือกที่เน้นความเป็นส่วนตัวแทนการใช้บริการคลาวด์ แม้ว่าการใช้งานพื้นฐานจะตรงไปตรงมา แต่ชุมชนนักพัฒนาได้ค้นพบเทคนิคขั้นสูงหลายอย่างที่ช่วยปรับปรุงทั้งความแม่นยำและประสิทธิภาพอย่างมาก
การประมวลผลล่วงหน้าสร้างความแตกต่างได้มาก
การปรับปรุงที่มีผลกระทบมากที่สุดมาจากการประมวลผลเสียงล่วงหน้าที่เหมาะสมก่อนป้อนไฟล์ให้กับ Whisper การแปลงไฟล์เสียงเป็นรูปแบบ WAV ความถี่ 16kHz ให้สภาวะการประมวลผลที่เหมาะสมที่สุด การเพิ่มตัวกรอง low-pass และ high-pass ช่วยกำจัดเสียงที่ไม่ใช่เสียงพูดซึ่งอาจทำให้โมเดลสับสน ขั้นตอนการประมวลผลล่วงหน้านี้เพียงอย่างเดียวสามารถลดข้อผิดพลาดในการแปลงข้อความและปรับปรุงคุณภาพโดยรวมได้อย่างมีนัยสำคัญ
Voice Activity Detection (VAD) ได้กลายเป็นเครื่องมือประมวลผลล่วงหน้าที่สำคัญ โดยการใช้ Silero VAD เพื่อระบุช่วงเวลาที่ผู้พูดกำลังพูดจริงๆ นักพัฒนาสามารถหลีกเลี่ยงจุดอ่อนที่ใหญ่ที่สุดอย่างหนึ่งของ Whisper ซึ่งก็คือการสร้างข้อความในช่วงที่เงียบ อย่างไรก็ตาม VAD ต้องการการปรับแต่งอย่างระมัดระวังเพื่อป้องกันไม่ให้ส่วนของเสียงถูกตัดอย่างไม่เหมาะสม
การปรับแต่งเฉพาะฮาร์ดแวร์ให้ความเร็วที่เพิ่มขึ้นอย่างมาก
การปรับแต่งเฉพาะแพลตฟอร์มสามารถให้การปรับปรุงประสิทธิภาพที่น่าทึ่ง ผู้ใช้ Mac ที่ใช้โปรเซสเซอร์ Apple Silicon สามารถบรรลุการเพิ่มความเร็วที่น่าทึ่งโดยการใช้โมเดล whisper-mlx จาก Hugging Face ซึ่งออกแบบมาเฉพาะสำหรับ Neural Engine ของ Apple นักพัฒนาคนหนึ่งรายงานการปรับปรุงประสิทธิภาพ 22 เท่าเมื่อเปลี่ยนไปใช้โมเดลที่ปรับแต่งเหล่านี้
สำหรับระบบที่มี GPU ของ NVIDIA การเร่งความเร็วด้วย GPU โดยทั่วไปให้การปรับปรุงความเร็ว 2-3 เท่าเมื่อเทียบกับการประมวลผลด้วย CPU เพียงอย่างเดียว อย่างไรก็ตาม การจัดการหน่วยความจำกลายเป็นสิ่งสำคัญเมื่อทำงานกับโมเดลที่ใหญ่กว่าหรือไฟล์เสียงที่ยาวกว่า
การปรับแต่งเฉพาะฮาร์ดแวร์
- Mac ( Apple Silicon ): ใช้โมเดล whisper-mlx เพื่อเพิ่มความเร็วได้สูงสุด 22 เท่า
- NVIDIA GPU: เร็วกว่าการประมวลผลแบบใช้ CPU เพียงอย่างเดียว 2-3 เท่า
- ระบบที่ใช้ CPU เพียงอย่างเดียว: ควรใช้โมเดล "base" เพื่อประสิทธิภาพในการใช้ทรัพยากร
- Tesla A100: สามารถจัดการโมเดลขนาดใหญ่ได้โดยไม่มีปัญหาเรื่องหน่วยความจำ
การประมวลผลหลังและ Diarization เพิ่มความเป็นมืออาชีพ
ชุมชนพบว่าการประมวลผลการแปลงข้อความหลังผ่าน Large Language Models ในเครื่องสามารถทำความสะอาดข้อความที่ได้อย่างมีนัยสำคัญ แม้แต่โมเดลขนาดเล็ก 12-14 พันล้านพารามิเตอร์ก็สามารถระบุและแก้ไขข้อผิดพลาดทั่วไปในการแปลงข้อความ ปรับปรุงคุณภาพผลลัพธ์สุดท้ายได้อย่างมาก
Speaker diarization ซึ่งเป็นความสามารถในการระบุผู้พูดที่แตกต่างกันในการสนทนา ได้กลายเป็นสิ่งที่เข้าถึงได้มากขึ้น มีไลบรารีสองตัวที่โดดเด่นในการอภิปรายของชุมชน คือ pyannote/speaker-diarization-3.1 จาก Hugging Face และไลบรารี senko ที่มีน้ำหนักเบา แม้ว่า pyannote จะให้ความแม่นยำที่สูงกว่า แต่ senko ประมวลผลเสียงในเวลาเพียงไม่กี่วินาทีแทนที่จะเป็นหลายชั่วโมง ทำให้มีความปprakticalมากกว่าสำหรับหลายกรณีการใช้งาน
ผมพบว่าความแม่นยำและความสำเร็จเพิ่มขึ้นอย่างมีนัยสำคัญเมื่อผมเพิ่มตัวประมวลผลหลัง LLM แม้จะใช้โมเดลขนาดเล็ก 12-14b
ไลบรารีแยกผู้พูดที่แนะนำ
- pyannote/speaker-diarization-3.1: ความแม่นยำสูงกว่าแต่การประมวลผลช้ากว่า (หลายชั่วโมงสำหรับไฟล์เสียงยาว)
- senko: การประมวลผลเร็วมาก (วินาที) แต่มีอัตราข้อผิดพลาดของคำประมาณ 10%
- whisper-standalone-win: รวม Whisper เข้ากับระบบแยกผู้พูดในตัวสำหรับผู้ใช้ Windows
การประมวลผลแบบกลุ่มและการจัดการหน่วยความจำ
สำหรับผู้ใช้ที่ประมวลผลเสียงจำนวนมาก กลยุทธ์การประมวลผลแบบกลุ่มช่วยจัดการทรัพยากรระบบอย่างมีประสิทธิภาพ การประมวลผลไฟล์เป็นชิ้นเล็กๆ ที่สอดคล้องกับ timestamps ของ VAD ป้องกันการล้นหน่วยความจำในขณะที่รักษาคุณภาพการแปลงข้อความ การตั้งค่าตัวแปรสภาพแวดล้อมเช่น OMP_NUM_THREADS เป็น 1 สามารถปรับแต่งการใช้ CPU สำหรับการดำเนินการแบบเธรดเดียว
การเลือกขนาดโมเดล Whisper กลายเป็นสิ่งสำคัญสำหรับสภาพแวดล้อมที่มีทรัพยากรจำกัด แม้ว่าโมเดลพื้นฐานจะให้ความสมดุลที่ดีระหว่างความเร็วและความแม่นยำสำหรับผู้ใช้ส่วนใหญ่ แต่ผู้ที่มีฮาร์ดแวร์เพียงพอสามารถได้ประโยชน์จากความแม่นยำที่เหนือกว่าของโมเดล large-v2 กับเสียงที่ท้าทาย
การเปรียบเทียบประสิทธิภาพของโมเดล Whisper
โมเดล | ขนาด | เวลาในการประมวลผล (เสียง 1 ชั่วโมง) | ความแม่นยำ | กรณีการใช้งานที่เหมาะสม |
---|---|---|---|---|
Tiny | 39 MB | 15 นาที | 60% | ทดสอบอย่างรวดเร็ว |
Base | 74 MB | 35 นาที | 70% | ใช้งานทั่วไป |
Small | 244 MB | 1.5 ชั่วโมง | 80% | คุณภาพสูง |
Medium | 769 MB | 3 ชั่วโมง | 83% | ความแม่นยำระดับมืออาชีพ |
Large-v2 | 1550 MB | แปรผัน | 90%+ | ความแม่นยำสูงสุด |
การรวมเข้ากับขั้นตอนการทำงานที่มีอยู่
ความยืดหยุ่นของโซลูชันการแปลงข้อความในเครื่องช่วยให้สามารถรวมเข้ากับขั้นตอนการทำงานการพัฒนาที่มีอยู่ได้อย่างราบรื่น นักพัฒนาบางคนได้สร้าง pipeline ที่สมบูรณ์ซึ่งจัดการทุกอย่างตั้งแต่การแปลงเสียงไปจนถึงการทำความสะอาดข้อความสุดท้ายโดยอัตโนมัติ คนอื่นๆ ได้สร้างเครื่องมือเฉพาะทางสำหรับกรณีการใช้งานเฉพาะ เช่น การลบโฆษณาออกจากการแปลงข้อความพอดแคสต์
ความเห็นพ้องต้องกันของชุมชนแนะนำให้เริ่มต้นด้วยการใช้งานพื้นฐานและค่อยๆ เพิ่มการปรับแต่งตามความต้องการเฉพาะ แนวทางนี้ช่วยให้นักพัฒนาเข้าใจผลกระทบของแต่ละส่วนประกอบในขณะที่สร้างระบบการแปลงข้อความที่ซับซ้อนมากขึ้นซึ่งปรับแต่งตามความต้องการของพวกเขา
อ้างอิง: Python Audio Transcription: Convert Speech to Text Locally