สวัสดีครับ วันนี้ผมขอเขียนกระทู้แนะนำวิธีการทำ Timing จากซับฝังภาษาจีนแบบออโต้ จากนั้นทำการแปลงซับฝังให้กลายเป็นข้อความภาษาจีน เพื่อนำไปแปลเป็นภาษาอังกฤษครับ
(เนื่องจากในการใช้งานจริงอาจติดปัญหาต่าง ๆ นา ๆ ผมจึงมีอัพเดทด้านล่างสุดเป็นระยะนะครับ)
โปรแกรมที่ต้องใช้มี 3 โปรแกรมดังนี้ครับ
1. VideoSubFinder (โปรแกรม Free)
2. SubtitleEdit (โปรแกรม Free)
3. ABBYY FineReader (ตัวนี้เสียเงินครับ)
จากที่ผมลองจับเวลาดู ในการใช้ 3 โปรแกรมนี้แกะซับออกมาเรื่องนึง ใช้เวลาราว 30 นาที
ก่อนอื่นใช้โปรแกรมแรกในการทำ Timing จากตัวหนังครับ
หน้าตาโปรแกรมจะเป็นแบบนี้
เริ่มแรกกดปุ่ม File แล้วเลือก Open Video (OpenCV)
บางรูปผมจะ Crop เพื่อให้เห็นชัด ๆ นะครับ
ตัวหนังได้โหลดเข้ามาแล้ว คราวนี้ใช้เม้าส์เลื่อนไปช่วงเวลาที่มีซับขึ้นมา จากนั้นสังเกตุสัญลักษณ์ที่ผมทำกรอบแดง ๆ ไว้ ทำการคลิกเลื่อนสี่มุมนั้นเข้ามาให้ล้อมรอบข้อความซับ
จากตัวอย่างของผมจะประมาณนี้ อย่าลืมเว้นกรอบเผื่อไว้สักนิดนะครับ เผื่อซับบางบรรทัดยาวมาก เดี๋ยวจะหลุดกรอบ
เมื่อทำเสร็จแล้วคลิก Run Search เลย
โปรแกรมจะเริ่มไล่ค้นหาซับฝังไปเรื่อย ๆ นะครับ เรื่องที่ผมทดสอบ ใช้เวลาราว 10 นาที แต่โปรแกรมนี้มีโอกาส Crash หลังจากทำไปได้สักพักครับ เหมือนมันค้นหาแล้วเจอสิ่งที่เป็น bug วิธีแก้ของผมคือเริ่มทำใหม่อีกรอบ โดยขยับขยายกรอบสี่เหลี่ยมในขนาดต่างกัน จนสามารถทำจนครบเรื่องได้
อีกปัญหาที่พบคือมันไม่สามารถตรวจ Sub ได้ครบ 100 % นะครับ ผมลองใล่ ๆ ดูก็มีพลาดบ้าง ยังไงก็ต้องมีการทำๅ Timing เองบ้างครับ
เมื่อโปรแกรมรันจนเสร็จ จะได้ภาพออกมาที่โฟลเดอร์ RGBimages ผมเปิดขึ้นมาเป็นตัวอย่าง 3 รูป
ขั้นตอนต่อมาคือการแปลงรูปให้ตัดพื้นหลังออกเหลือเฉพาะข้อความ เพื่อใช้แกะซับเป็นตัวอักษรในขั้นตอนหลัง ๆ ทำได้โดยคลิกแท็บ OCR แล้วเลือก Create Cleared TXT Images โดยโปรแกรมจะทำทีละรูปจนเสร็จ โดยใช้เวลาประมาณ 5-10 นาที
เมื่อทำเสร็จรูปจะอยู่ที่โฟลเดอร์ TXTImages แบบตัวอย่างตามรูปครับ โดยขั้นตอนนี้อาจใช้ไม่ได้กับซับฝังทุกประเภทนะครับ ผมเคยทำบางเรื่องแล้วมันแปลงเป็นขาวดำแบบนี้ไม่ได้ ต้องใช้โปรแกรมอื่นช่วย ไว้อาจเขียนแยกต่างหากอีกทีครับ
ทีนี้เราสามารถแปลงรูปที่ Capture มาให้กลายเป็น Timing .srt ได้ โดยคลิก Create Empty Sub From Cleared TXT
จะได้ไฟล์ sub.srt ออกมาที่โฟลเดอร์โปรแกรม จะเห็นได้ว่าตัว srt เป็นซับเปล่า ๆ เพื่อเป็น Timing เท่านั้น
ทีนี้ลองเอาซับที่ได้ ไปลองเปิดกับตัวหนังจากจีนกันครับ ผลลัพธ์ตามภาพเลย
แต่หากสังเกตโฟลเดอร์ Output ดี ๆ จะเห็นว่าบางรูปมัน Capture ออกมาผิดพลาด เช่น เจอตัวอักษรจากในหนังเอง หรือออกมาเป็นสีดำทั้งรูป ไม่มีอักษร ในส่วนนี้ผมจะลบทิ้งให้หมดก่อนครับ แล้วใช้โปรแกรมตัวต่อไป ช่วยทำ Sub Srt ออกมา
ต่อไปถึงคิวของ SubtitleEdit ครับโปรแกรมนี้ผมจะใช้ทำ Timing ซับแบบแกะอักษรภาษาจีนลงไปในซับ SRT หน้าตาโปรแกรมประมาณนี้
กด File แล้วเลือก Import images ครับ
จะมีหน้าต่างขึ้นมา กดคลิกปุ่มตรงกรอบสีแดงแล้วเลือกภาพในโฟลเดอร์ TXTImges ออกมาให้หมดครับ
ภาพจะถูกโหลดเข้ามาตามนี้ จะเห็นว่ามัน Detect Start และ End time ได้เลยครับ
ต่อมาโปรแกรมจะทำการแปลงรูปเป็นตัวอักษรด้วยวิธี Tesseract OCR ครับ ก่อนอื่นเราต้องไปโหลดภาษาจีนเพิ่มเข้ามาก่อน
ทำตามรูปได้เลยครับ
พอโหลดเสร็จก็เลือกภาษาเป็นจีน (Traditional) แล้วกด Start OCR
โปรแกรมจะทำงานไปจนเสร็จ ในตัวอย่างนี้ประมาณ 500 บรรทัดใช้เวลาไม่ถึง 10 นาที
จะได้ซับเป็น text ออกมาแบบนี้ครับ แต่โปรแกรมนี้แกะออกมาได้ไม่แม่นยำเท่าที่ควรเพราะบางตัวก็ดันเป็นญี่ปุ่น แต่ไม่เป็นไรครับ เดี๋ยวจะใช้โปรแกรมเทพอีกตัวไว้แปลงซับ ผมใช้ SubtitleEdit เพื่อ Save SRT ออกมาใช้งาน
ทดลองเอาซับที่ได้มาเปิดใช้งานดูครับ จะเห็นว่า แกะออกมาได้ถูกบ้างผิดบ้าง
มาที่โปรแกรมตัวสุดท้ายเลยครับ โปรแกรมเสียเงิน เพราะฉะนั้นหาวิธีใช้งานตามลำบากกันเลยครับ
หน้าตาโปรแกรมจะประมาณนี้ เริ่มแรกกดเพิ่มภาษาจีนกับญี่ปุ่นเข้ามาก่อนครับ
สังเกตตรง Document Language ต้องเป็นจีน Traditional และญี่ปุ่นก่อนนะครับ จากนั้นกด Open แล้วเลือกรูปขาวดำจากโปรแกรมที่ 1 เข้ามาครับ
โปรแกรมจะทำการแกะตัวอักษรแบบออโต้ ส่วนนี้รอประมาณ 5-10 นาที
เสร็จแล้วมาดูผลลัพธ์กันครับ ผมเลือกมา 5 บรรทัดแรกแล้วกัน
จะเห็นว่าออกมาค่อนข้างเป๊ะนะครับ ถ้าสังเกตดี ๆ จะมีพลาดบ้าง มีอักขระแปลกปลอมออกมาบ้าง แต่โดยรวมคิดว่าโอเค สามารถเอาไปแปลภาษาแล้วรู้เรื่อง
ผมลองทดสอบได้ประมาณนี้ ใช้ซอฟต์แวร์แปลภาษาที่ถนัดเลยครับ
เห็นรูปที่แกะออกมาแม่น ลองมาดูรูปที่ผิดพลาดบ้างครับ ก่อนอื่นต้องบอกก่อนว่าผมไม่มีความรู้ภาษาจีน ส่วนภาษาญี่ปุ่นมีน้อยนิดครับ ในรูปแรกตัวที่ 4 เหมือนจะได้ตัวภาษาญี่ปุ่นมาแทน ผมลองแก้ให้มันแกะเป็นจีนอย่างเดียว ก็ไม่ตรงอยู่ดีครับ ต้องรอผู้เชี่ยวชาญมาตอบว่าตัวอะไร
ส่วนตัวอย่างนี้มันแกะอักษรในรูปไม่ได้เลยครับ
มีวิธีแก้เบื้องต้นคือเราคลิกเม้าส์ล้อมกรอบตัวอักษรเองครับ จากนั้นคลิกขวาแล้วเลือก Read เพื่อให้มันอ่านใหม่ จากช่องขวาจะเห็นว่ามันอ่านออกมาถูกต้องแล้ว
ตัวช่วยแก้ไขอีกตัวคือเราสามารถคลิกขวาแล้วเปลี่ยนไปใช้ตัวอักษรอื่นที่มันคิดว่าใกล้เคียงครับ
เมื่อแก้ไขจนพอใจแล้ว เราจะ Copy ออกมาแปลทีละรูปหรือสามารถเซฟออกมาทั้งหมดรวมเป็น .txt หรือ excel เพื่อ Copy ไปแปลทั้งเรื่องเลยก็ได้ครับ
สุดท้ายเป็นอันจบการแนะนำโปรแกรม 3 ตัวเพียงเท่านี้ หวังว่าจะช่วยทุ่นแรงนักทำซับหลาย ๆ คนได้บ้าง ยังไงแลกเปลี่ยนความรู้กันได้ครับ
Update:
1. ขออัพเดทปัญหาเพิ่มเติมที่พบนิดนึงครับ ในกรณีที่ซับไตเติลมีสองบรรทัด โปรแกรมแรกจะแปลงภาพขาวดำออกมาแบบบรรทัดละรูป พอใช้โปรแกรมแรกแปลง srt จะรวมบรรทัดเดียวไม่มีปัญหา แต่ถ้าโหลดไปใช้ใน Subtitle Edit มันจะทำ .srt แบบแยกบรรทัดขึ้นพร้อมกันในเวลาเดียวกัน ถ้าจะใช้ Subtitle Edit ทำ .srt เลยต้องเปลี่ยนไปใช้ภาพสี rgb (แต่เวลา ocr นั้นจะได้ผลลัพธ์ที่ค่อนข้างแย่) หรือจะใช้ภาพขาวดำแต่ลบรูปซ้ำทิ้งไปก่อนในตอนโหลดภาพเข้าโปรแกรม แล้วค่อยนำภาพขาวดำไปแกะในโปรแกรมที่ 3 แล้ว Copy มาใส่ .srt แทน
2. สำหรับโปรแกรม VideoSubFinder มันจะชอบมีปัญหาโปรแกรม crash กลางคัน พอลองใหม่ก็จะชอบ crash ที่เดิม
ผมลอง search หาจนเจอคนแนะนำวิธีแก้ไขมา
เปิดโปรแกรมแล้วกด Tab Settings --> ติ๊กถูกที่ Using fast version (partially reduced) ออกครับ
ผมลองเรื่องที่เคย crash ก็รอบเดียวผ่านแล้ว แต่มันจะใช้เวลาแกะซับนานขึ้น ผมทดสอบที่ความยาว 2 ชั่วโมง ประมาณ 500 บรรทัด ใช้เวลาประมาณ 20 นาที
3. จากที่ผมได้ใช้โปรแกรม Video Subfinder มาสักระยะหนึ่ง พบว่าขั้นตอนการแปลงภาพสีเป็นขาวดำของโปรแกรมนี้ทำให้อักษรบางตัวออกมาหัวขาด มีครึ่งเดียว หรือถูกตัดหายไปเลย
ผมเลยหันมาใช้วิธีนำภาพ RGB ที่ได้ ไปเข้าโปรแกรมแปลงรูปภาพโดยเฉพาะที่สามารถปรับ Threshold ได้เอง ทำให้ผลลัพธ์ออกมาดีขึ้นมากครับ