นักพัฒนาแชร์เทคนิคขั้นสูงสำหรับการปรับแต่งการแปลงเสียงเป็นข้อความในเครื่องด้วย Whisper

ทีมชุมชน BigGo
นักพัฒนาแชร์เทคนิคขั้นสูงสำหรับการปรับแต่งการแปลงเสียงเป็นข้อความในเครื่องด้วย Whisper

การแปลงเสียงเป็นข้อความในเครื่องโดยใช้โมเดล 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