31 คะแนน โดย GN⁺ 2025-08-14 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • FFmpeg เวอร์ชัน 8.0 ได้เพิ่มการรองรับ โมเดลรู้จำเสียงพูด Whisper อย่างเป็นทางการ
  • Whisper เป็นโมเดลรู้จำเสียงพูดแบบโอเพนซอร์สที่พัฒนาโดย OpenAI และใช้สำหรับการแปลงเสียงเป็นข้อความอัตโนมัติในหลายภาษา
  • การเพิ่มความสามารถนี้ช่วยเพิ่มโอกาสในการทำเวิร์กโฟลว์ แปลงเสียงเป็นข้อความ แบบอัตโนมัติได้โดยตรงในงาน ประมวลผลวิดีโอและเสียง
  • ช่วยเสริม ความสามารถในการใช้งานและประสิทธิภาพของ FFmpeg อย่างมากสำหรับนักพัฒนาและงานด้านมีเดียอัตโนมัติ
  • เมื่อมีฟีเจอร์รู้จำเสียงพูดสมัยใหม่ในตัว ก็ช่วยลดภาระจากการต้องใช้เครื่องมือภายนอกเพิ่มเติมหรือกระบวนการผสานระบบที่ซับซ้อน

ภาพรวมการรองรับ Whisper ใน FFmpeg 8.0

  • FFmpeg 8.0 เพิ่มการรองรับ โมเดลรู้จำเสียงพูด Whisper ทำให้สามารถแปลงข้อมูลเสียงเป็นข้อความอัตโนมัติได้ในหลายภาษา
  • Whisper ใช้ อัลกอริทึมที่อาศัยดีปเลิร์นนิง ซึ่งสร้างโดย OpenAI เพื่อมอบความแม่นยำสูงในการแปลงเสียงเป็นข้อความ
  • ผู้ใช้ FFmpeg เดิมสามารถสร้างซับไตเติลหรือดึงเนื้อหาคำพูดออกจากไฟล์วิดีโอและเสียงได้สะดวกยิ่งขึ้นผ่าน ฟีเจอร์รองรับ Whisper ที่ฝังมาในตัว โดยไม่ต้องผ่านเครื่องมือภายนอก

ประโยชน์หลักของการรวม Whisper

  • การรวม Whisper เข้ามาทำให้สามารถสร้างเวิร์กโฟลว์ รู้จำเสียงพูด ที่มีประสิทธิภาพและขยายต่อได้ง่ายใน ไปป์ไลน์ประมวลผลและอัตโนมัติของมีเดีย ที่อิงกับ FFmpeg
  • เมื่อมีอัลกอริทึมรู้จำเสียงพูดในตัว นักพัฒนาจึงได้ข้อดีคือสามารถรับ ผลลัพธ์การแปลงเสียงเป็นข้อความได้ด้วยคำสั่งง่าย ๆ โดยไม่ต้องแบกรับภาระจากการเชื่อมต่อเพิ่มเติมที่ซับซ้อนหรือการเขียนสคริปต์แยกต่างหาก

ความสำคัญในเชิงอุตสาหกรรมของการผสาน FFmpeg กับ Whisper

  • ในงานหลากหลายด้าน เช่น การจัดการสินทรัพย์มีเดียจำนวนมหาศาล, การสร้างซับไตเติล, การเก็บถาวรข้อมูลวิดีโอ ฯลฯ การผสาน FFmpeg + Whisper มีจุดแข็งในการทำให้เกิดทั้งความคุ้มค่าด้านต้นทุนและระบบอัตโนมัติไปพร้อมกัน
  • เดิมทีต้องเชื่อมเครื่องมือรู้จำเสียงพูดโอเพนซอร์สแยกต่างหากเข้ากับ FFmpeg แต่ตอนนี้สามารถ ประมวลผลได้โดยตรงในตัว FFmpeg ทำให้คาดหวังได้ทั้งความเรียบง่ายของเวิร์กโฟลว์และความเร็วในการประมวลผลที่ดีขึ้น
โฆษณา

รายละเอียดทางเทคนิค

  • มีการเพิ่มออดิโอฟิลเตอร์สำหรับทำ Automatic Speech Recognition (ASR) ได้โดยตรงภายใน FFmpeg โดยอิงจากไลบรารี Whisper.cpp
  • เปิดใช้งานได้ด้วยออปชัน --enable-whisper และต้องระบุพาธของโมเดล (model)
  • ออปชันหลัก: การตั้งค่าภาษา(language), การใช้ GPU(use_gpu), ขนาดคิว(queue), รูปแบบเอาต์พุต(format: text/srt/json), การตั้งค่าโมเดล VAD(การตรวจจับกิจกรรมเสียง) และค่า threshold เป็นต้น
    • หากตั้งค่า queue ให้เล็ก จะได้ความเป็นเรียลไทม์สูงขึ้น แต่ความแม่นยำลดลงและภาระ CPU เพิ่มขึ้น; หากตั้งค่าใหญ่ขึ้น ความแม่นยำจะสูงขึ้นแต่มีความหน่วงมากขึ้น
    • สามารถใช้ตัวเลือก destination เพื่อบันทึกผลลัพธ์ไปยังไฟล์, URL หรือเมทาดาทาได้ และยังรองรับ AVIO protocol
  • มีตัวอย่างสถานการณ์การใช้งาน เช่น การสร้างซับไตเติล SRT, การส่งแบบ HTTP ในรูปแบบ JSON, การถอดเสียงจากไมโครโฟนแบบเรียลไทม์ (ใช้ VAD)
    • ตัวอย่างการสร้างไฟล์ซับไตเติล SRT
      ffmpeg -i input.mp4 -vn \  
      -af "whisper=model=../whisper.cpp/models/ggml-base.en.bin:language=en:queue=3:destination=output.srt:format=srt" \  
      -f null -  
      

1 ความคิดเห็น

 
GN⁺ 2025-08-14
ความคิดเห็นจาก Hacker News
  • เคยได้ลองใช้ Whisper แล้วรู้สึกว่าเป็นเครื่องมือที่น่าทึ่งจริง ๆ ถ้าให้พรอมป์ต์อย่างเหมาะสม มันช่วยเปลี่ยนชีวิตไปในทางที่ดีขึ้นได้เลย
    อยากแนะนำ Subtitle Edit ด้วย (จะสนับสนุนนักพัฒนาก็ได้) Subtitle Edit เป็นอินเทอร์เฟซที่เหมาะมากสำหรับทดลองใช้งานกับ Whisper ถ้าใครเคยใช้ Aegisub มาก่อน ก็คงเรียก Subtitle Edit ว่า Aegisub 2.0 ได้เลย
    HOWTO: ลากไฟล์วิดีโอหรือไฟล์เสียงไปที่หน้าต่างด้านขวา แล้วไปที่ Video > Audio to text (Whisper) ปกติฉันมักได้ผลดีที่สุดกับ Faster-Whisper-XXL ถ้าเป็นไปได้แนะนำให้ใช้ large-v2 (large-v3 กลับมี regression อยู่บ้างในบางกรณี) มันไม่สมบูรณ์แบบ แต่แก้ไขต่อได้พอสมควรด้วยฟีเจอร์อย่าง Tools > Fix common errors ของ Subtitle Edit
    ถ้าใช้การ์ดจอ Nvidia รุ่นใหม่ ต้องใส่ --compute_type float32 ถึงจะทำงานได้ตามปกติ ถ้าเจอข้อผิดพลาด อาจต้องติดตั้งไลบรารี torch ใหม่โดยระบุ index แบบในคำสั่งด้านล่าง
    pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118  
    
    uv pip install --system torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118  
    
    ถ้าแก้ปัญหาพวกนี้ได้แล้ว อยากให้ช่วยคอมเมนต์ไว้ด้วยว่าเจอปัญหาอะไรและแก้อย่างไร จะได้ช่วยคนอื่นต่อได้ด้วย (รวมถึงช่วยตอนค้นหาในเว็บ)
    หน้าเว็บ Subtitle Edit
    หน้าสนับสนุนนักพัฒนา Subtitle Edit
    releases เวอร์ชันล่าสุดของ Subtitle Edit
    • เวลาใช้ uv ติดตั้งแพ็กเกจตระกูล torch มันจะเลือกเวอร์ชัน tensor ที่ตรงกับไดรเวอร์ cuda ให้โดยอัตโนมัติ แต่แนะนำให้ใช้ใน virtual environment (venv) มากกว่าระบบ Python ตรง ๆ
      สามารถให้เลือก backend อัตโนมัติได้ด้วยคำสั่งนี้
      uv pip install torch torchvision torchaudio --torch-backend=auto
      ลิงก์อธิบายแบบละเอียด
      แพ็กเกจตระกูล torch จะถูกดาวน์โหลดจาก torch index ส่วนที่เหลือจาก PyPI จึงไม่ต้องกังวลเรื่องชนกัน
    • Aegisub เองก็ยังมี fork ที่พัฒนาต่ออยู่ ทั้งสองซอฟต์แวร์มีลักษณะต่างกันจึงเทียบกันตรง ๆ ยาก และสามารถใช้เสริมกันได้ Subtitle Edit เหมาะกับงานถอดเสียงจริงมากกว่าเยอะ ส่วน Aegisub ก็ยังเด่นในงานอย่างการจัดตัวอักษรอยู่ดี
    • Subtitle Edit ดีมากก็จริง แต่ก็อาจมีข้อจำกัดด้านฮาร์ดแวร์ (Python, Nvidia GPU ฯลฯ) ถ้าไม่มี GPU หรือไม่อยากจัดการเซิร์ฟเวอร์เอง API ที่เรียบง่ายและราคาถูกอย่าง lemonfox.ai ก็เป็นอีกทางเลือก
    • อยากรู้ว่าที่บอกว่า Whisper ทำให้ชีวิตดีขึ้นมากนั้น มีตัวอย่างที่เป็นรูปธรรมไหม
    • Whisper ทำงานได้ดีมาก เลยสงสัยว่าทำไมซับอัตโนมัติของ YouTube ถึงยังไม่ดีนัก แม้แต่โมเดลที่เล็กที่สุดของ Whisper ก็ดูดีกว่าโซลูชันของ Google เสียอีก เลยสงสัยว่าเป็นเพราะเรื่องไลเซนส์หรือความยากในการ deploy ขนาดใหญ่หรือไม่
  • ถ้ามีการใช้งานการถอดเสียงแบบโลคัลอย่างแพร่หลายมากขึ้น ก็หวังว่าคนทำวิดีโอจะเลิกฝังซับที่แสบตาและรบกวนลงไปในวิดีโอตรง ๆ เสียที
    เคยเห็นแม้แต่วิดีโอเทคนิคที่ทำแบบมืออาชีพ ก็ยังใส่ซับถอดออกไม่ได้ทั้งที่ไม่จำเป็น ถ้าไม่ใช่วิดีโอแมวก็ถือว่าเยอะเกินไป
    ถ้าใช้การถอดเสียงแบบโลคัล ก็ทำการแปลอัตโนมัติได้ และยังแก้ปัญหาประสบการณ์ใช้งานแปลก ๆ ที่ต้องขึ้นซับทับบนซับที่ถูกฝังไว้แล้วอีกชั้นหนึ่ง
    • มีคนชี้ว่าการใส่ซับแบบ burn-in นั้นมักมีเป้าหมายเพื่อเพิ่ม "engagement" มากกว่าปรับปรุงประสบการณ์ผู้ใช้
    • ถ้าจะเทียบกันจริง ๆ ฉันว่าซับธีมในโอเพนนิงอนิเมะที่แฟน ๆ เคยทำกันสมัยก่อน ยังเท่กว่าซับแบบ burn-in ในวิดีโอสมัยนี้มาก
    • สุดท้ายแล้วอัลกอริทึมมีอิทธิพลมาก ต่อให้มีซับแบบเรียลไทม์ที่แม่นยำ 100% บนทุกอุปกรณ์ ถ้าวิดีโอทำผลงานได้ดีกว่าเมื่อมีซับแบบ burn-in คนก็จะยังทำต่อไป
    • ซับแบบ burn-in มีปัญหาตรงที่เปลี่ยนภาษาไม่ได้
    • ปรากฏการณ์นี้ส่วนหนึ่งก็มาจากฟีเจอร์ "เล่นอัตโนมัติแบบไม่มีเสียง" ของ YouTube ด้วย ซับที่ฝังไว้ช่วยดึงให้คนหยุดดูวิดีโอได้
  • Whisper เป็นโมเดลถอดเสียงจากออดิโอ เลยสงสัยว่าระหว่างที่ฟังอยู่ มันสามารถย้อนกลับไปแก้ข้อความช่วงก่อนหน้าได้ไหม
    เช่นกรณีอย่าง “I scream” กับ “Ice cream” ที่ออกเสียงคล้ายกันแต่ความหมายต่างกันโดยสิ้นเชิง อยากรู้ว่ามันใช้ข้อมูลบริบทจากช่วงหลังเพื่อแก้ผลลัพธ์ก่อนหน้าได้หรือเปล่า
    คิดว่าวิธีนี้เป็นเงื่อนไขจำเป็นถ้าจะเอาทั้งความเป็นเรียลไทม์และความแม่นยำเข้าด้วยกัน จริง ๆ แล้วในการถอดเสียงบน Android ก็เคยเห็นว่าข้อความถูกปรับไปเรื่อย ๆ ระหว่างพูด
    • ขอแนะนำชื่อบทความวิจัยที่ฉันชอบที่สุด
      "How to wreck a nice beach you sing calm incense"
      ลิงก์บทความ
    • คิดว่าคนทำซับหรือคนเขียนบทก็คงต้องคิดอยู่เสมอว่าจะถอดข้อความที่ตั้งใจให้กำกวม เป็นคำเล่นคำ หรือเป็นบทพูดที่ความเข้าใจผิดมีความสำคัญต่อเรื่องอย่างไร เพราะการถ่ายทอดสิ่งที่ได้ยินกับการเขียนต้นฉบับตามที่พูดจริงนั้นไม่เหมือนกัน
      เลยสงสัยว่าคนที่มีความบกพร่องทางการได้ยินมาตั้งแต่กำเนิดมีการศึกษาหรือพัฒนาความเข้าใจ/การสร้างคำเล่นคำจากเสียงพูด (การเล่นภาษา จังหวะ ฯลฯ) กันเป็นพิเศษไหม
      มันให้ความรู้สึกคล้ายการทำคณิตศาสตร์เชิงนามธรรมโดยไม่มีประสบการณ์ทางประสาทสัมผัสโดยตรง แต่ในขณะเดียวกันนักคณิตศาสตร์ก็อ้างว่าสามารถสร้างปรากฏการณ์เชิงประสบการณ์อย่างดนตรีขึ้นจากสิ่งนามธรรมของตนได้ จึงเป็นประเด็นที่น่าสนใจเหมือนกัน
    • Whisper ทำงานเป็นก้อนละ 30 วินาที ด้วยโครงสร้างเครือข่ายแบบนี้จึงสามารถดูบริบทก่อน/หลังแล้วเปลี่ยนผลลัพธ์ได้ แต่ก็เป็นเหตุให้เกิดอาการหลอน (hallucination) มากด้วยเช่นกัน
    • “I scream” ดูเหมือนจะเน้นเสียงที่ "I" มากกว่า “ice cream” แต่ก็เห็นด้วยว่าต้องอาศัยบริบทอย่างมาก
    • ถ้าสนใจหัวข้อนี้ ขอแนะนำตำรา “Speech and Language Processing” ของ Stanford ตั้งแต่บท 16.3 เป็นต้นไป
      ลิงก์ pdf ที่เกี่ยวข้อง
      ฉันไม่ได้รู้โครงสร้างของ Whisper ลึกนัก แต่โดยทั่วไปโมเดล ASR จะให้ decoder ใช้เสียงถัดจาก chunk ปัจจุบันด้วยเพื่อเข้าใจบริบท ดังนั้นมันจึงถูกปรับด้วย language model เพื่ออนุมานรูปแบบที่เป็นธรรมชาติตามไวยากรณ์ เช่น “I like ice cream”
  • เกี่ยวข้องกัน ขอแนะนำบล็อกที่ผู้เขียนแพตช์นี้เขียนไว้
    Run Whisper audio transcriptions with one FFmpeg command
  • หวังว่านี่จะเป็นจุดเริ่มต้นให้มีการเพิ่มฟิลเตอร์ที่อิง ML ใน FFmpeg มากขึ้น
    ก่อนหน้านี้เคยมีการเพิ่มฟิลเตอร์ sr (super resolution) แต่เก่ามากแล้วจนการหา weights ก็ยังยุ่งยาก แม้ว่าจะมีการเพิ่มการรองรับไลบรารี ML หลายตัว (เช่น libtorch) แต่การเริ่มใช้งานก็ยังไม่ง่ายอยู่ดี
    ถ้าสามารถรวมโมเดลพร้อมใช้ไว้ในโฟลเดอร์ “models” แล้วเรียกใช้งานโมเดลต่าง ๆ อย่างอัปสเกล, ตัดเสียงรบกวน, อัปสเกลข้อมูลอนุกรมเวลา ฯลฯ ได้อย่างรวดเร็ว ก็น่าจะดีกว่า
    ทุกวันนี้งานวิจัยด้านฟิลเตอร์เสียงและวิดีโอส่วนใหญ่ก็อิง ML กันหมดแล้ว และ codec ใหม่ ๆ ก็น่าจะมีโอกาสสูงที่จะเป็น ML-based เช่นกัน
  • Whisper ที่พูดถึงตรงนี้คือโมเดล AI รู้จำเสียงพูดที่ OpenAI สร้างขึ้นใช่ไหม
    ดูคำอธิบายใน Wikipedia ของ Whisper
    • ใช่ และยังมี implementation แบบ C++ ด้วย GitHub ของ whisper.cpp
    • ใช่ ขอยกมาจากเอกสารโดยตรง

      It runs automatic speech recognition using the OpenAI's Whisper model.

    • ก็ไม่เชิงทั้งหมด มันคือ 'ตระกูลโมเดลถอดเสียงจากออดิโอ' (มีหลายเวอร์ชันและหลายโมเดล)
      รายการโมเดล Whisper ทั้งหมด
  • ฉันไม่รู้อะไรเกี่ยวกับ Whisper เลย แต่อยากรู้ว่าใช้แปลอัตโนมัติได้ไหม (โดยเฉพาะญี่ปุ่น→อังกฤษ)
    ฉันมีหนังญี่ปุ่นเก่ามากเรื่องหนึ่ง แต่ไม่มีคำแปลภาษาอังกฤษเลย เลยดูไม่ได้
    เคยลองหานักแปลใน Fiverr มาก่อน ตามอัตราทางการจะเป็นหลักหลายพันดอลลาร์ ต่อรองลงมาเหลือหลักหลายร้อยแล้ว แต่สุดท้ายเขาก็หายไป
    • Whisper ถอดเสียงและแปลจากภาษาญี่ปุ่นเป็นอังกฤษได้แน่นอน
      คุณภาพขึ้นอยู่กับสำเนียงและคุณภาพเสียง และโมเดล "large-v3" ให้ผลลัพธ์ดีที่สุด
      สามารถใช้ความสามารถที่รวมกับ ffmpeg ได้ด้วยคำสั่งแบบนี้
      ffmpeg -i movie.mp4 -af whisper=model=large-v3:task=translate output.srt
    • จากประสบการณ์ของฉัน โดยรวมแล้วใช้ได้ทีเดียว
      แม้แต่โมเดล “English” ก็จริง ๆ รองรับหลายภาษาและแปลเป็นอังกฤษได้โดยตรง
      หรือจะถอดเสียงเป็นภาษาญี่ปุ่นก่อน แล้วค่อยใช้ตัวแปลอื่นแปลเป็นอังกฤษก็ได้ ถ้าเป็นบทสนทนาที่ซับซ้อนเชิงความหมาย วิธีนี้บางครั้งดีกว่า
      ตัวอย่าง)
      แปลตรง:
      faster-whisper-xxl.exe --language English --model large-v2 --ff_vocal_extract mdx_kim2 --vad_method pyannote_v3 --standard   
      
      ญี่ปุ่น→อังกฤษ:
      faster-whisper-xxl.exe --language Japanese --task translate --model large-v2 --ff_vocal_extract mdx_kim2 --vad_method pyannote_v3 --standard   
      
      ลิงก์อ้างอิง whisper-standalone-win
    • จากประสบการณ์ของฉัน การถอดเสียงล้มเหลวอย่างสิ้นเชิง
      มันมักสร้างเนื้อหาที่ไม่มีอยู่ในออดิโอขึ้นมา และถ้ามีหลายภาษาปะปนกันในวิดีโอ มันจะสับสนหนักมาก
      มันไม่เข้าใจบริบทเลย จึงเห็นข้อผิดพลาดแบบที่เจอบ่อยในคำแปลอัตโนมัติของ YouTube
    • ใช้ Whisper ทำซับและแปลวิดีโอภาษาญี่ปุ่นได้เหมือนกัน (เฉพาะอังกฤษ)
      ประสิทธิภาพสูงสุดจะได้เมื่อใช้โมเดลขนาดใหญ่ที่สุด แต่ความเร็วขึ้นอยู่กับฮาร์ดแวร์
      อีกทางหนึ่งคือใช้วิธีแบบ VideoToTextAI ที่ดึงซับออกมา → แปลได้มากกว่า 100 ภาษา → บันทึกเป็นไฟล์ SRT
    • Whisper มีปัญหาอาการหลอน (hallucination) รุนแรง
      มันมักสุ่มเติมประโยคที่ไม่มีอยู่จริงเข้าไป
      ใช้กับงานจัดประเภทพอได้ แต่ยังไม่ดีพอสำหรับงานถอดซับ
  • สงสัยว่า speech API ที่ Apple กำลังจะปล่อย จะถูกเพิ่มเข้า ffmpeg ได้ไหม
    ถ้าใช้บน Mac ได้เลยโดยไม่ต้องหาโมเดลเพิ่มก็น่าจะดี
    เอกสาร SpeechTranscriber
    เอกสาร SpeechAnalyzer
    รีวิวการใช้งานจริงและการเปรียบเทียบกับ Whisper
  • ปัญหาเดียวของ PR/แพตช์นี้คือ มันมีแค่ avfilter wrapper ของไลบรารี whisper.cpp เท่านั้น และผู้ใช้ต้องจัดการ dependency เองทั้งหมด
    กล่าวคือ
    1. git clone whisper.cpp
    2. ติดตั้ง dependency ของไลบรารีนั้น
    3. build ให้สำเร็จ
    4. ดาวน์โหลดโมเดลจริง
    หลังจากนั้นถึงจะใช้ฟิลเตอร์ -af "whisper=model... ได้
    ถ้าไม่เตรียมพวกนี้ไว้ก่อนก็จะล้มเหลว และสำหรับมือใหม่มันน่าหงุดหงิดมาก
    ฉันคิดว่าถ้าทำ Whisper avfilter แบบ native ไปเลย แล้วให้ผู้ใช้แค่ดาวน์โหลดโมเดลอย่างเดียว จะมีประสิทธิภาพกว่าและมีผู้ใช้งานจริงมากกว่านี้มาก
    • จากมุมมองผู้ใช้ปลายทาง มันจะดีกว่าจริง แต่สำหรับฝั่ง FFmpeg เรื่องการดูแลรักษาจะลำบากมาก
      ต้องคำนึงถึงความเร็วในการเปลี่ยนแปลงของโปรเจกต์ whisper-cpp ด้วย
      ถ้าเป็นกรณีที่ต้อง build dependency และดาวน์โหลดโมเดลเหมือนฟิลเตอร์อื่น ๆ (เช่น vmaf) ก็คาดว่าน่าจะมี precompiled binary สำหรับมือใหม่ออกมาในไม่ช้า (และ whisper-cpp ก็เป็นไลเซนส์ MIT ด้วย)
  • ฉันใช้ FFmpeg กับ Whisper บันทึกและถอดเสียงออดิโอถ่ายทอดสดจากเครื่องสแกนวิทยุตำรวจในเมืองของเราแบบเรียลไทม์ แล้วอัปเดตขึ้นเว็บไซต์ทันทีอยู่
    มีข้อผิดพลาดและอาการหลอนอยู่บ้าง แต่โดยรวมทำงานได้ดีพอสำหรับสิ่งที่ต้องการ
    • ถ้าเว็บไซต์เปิดสาธารณะ อยากเห็นมาก
    • ฉันเคยอยากลองเอาฟีเจอร์นี้ไปใช้กับการประชุมสภาเคาน์ตีในพื้นที่ของเรา
      ในสถานการณ์แบบนั้น ฉันคิดว่าการรู้จำผู้พูด (speaker recognition) สำคัญมากเป็นพิเศษ