Thứ Tư, 6 tháng 3, 2024

InpaintDelogo, VideoSubFinder, Subtitle Edit và OCR

Tất cả phần mềm được sử dụng trong bài viết này đều miễn phí. Bài viết này thảo luận về việc chuyển đổi phụ đề cứng nhúng trong tệp video thành phụ đề mềm trong tệp phụ đề. Tôi chủ yếu quan tâm đến việc làm điều này cho các bộ phim JAV đã được gán cứng phụ đề tiếng Việt tại trang vlxx, javhd, tuy nhiên tôi cũng hơi quan tâm đến việc làm điều này cho các phụ đề tiếng Việt ở những phim tàu. Lướt mạng nhiều và tôi vô tình phát hiện ra một bài viết nói về một tập lệnh script AviSynth có tính năng tương đương như phần mềm VideoSubFinder (VSF) (https://sourceforge.net/projects/videosubfinder/). Đó là tập lệnh InpaintDelogo (IPDL) (https://github.com/Purfview/IPDL).

IPDL ban đầu được thiết kế để loại bỏ logo từ một hình ảnh/video, như thể nó chưa từng tồn tại. Nó cũng có thể loại bỏ các phụ đề cứng nhúng, như thể chúng chưa từng tồn tại. Điều này là điều đáng kinh ngạc. Một phần của quá trình này là bằng cách tái tạo các phần bị loại bỏ hoặc hỏng của hình ảnh, được gọi là "inpainting", do đó có tên là InpaintDelogo. Sau này, IPDL đã thêm khả năng tạo một tập tin hình ảnh cho mỗi phụ đề cứng nhúng trong một video. (Thời gian rất quan trọng đối với phụ đề. Nó được tích hợp vào tên tập tin hình ảnh, điều này có nghĩa là nó không phải là một phần của các tập tin chính.) Đây là khả năng tương tự như VSF.

Có vẻ như IPDL có thể tạo ra các hình ảnh phụ đề chính xác hơn đáng kể so với VSF. Được đổi lại, phần mềm nhận dạng ký tự quang học (OCR) có thể trích xuất các phụ đề chính xác hơn đáng kể từ những hình ảnh này. Những gì tôi đã đọc và nhìn thấy đã thuyết phục, vì vậy tôi muốn thử nghiệm nó bằng chính mình.

Sau khi IPDL tạo ra các hình ảnh của phụ đề, cần sử dụng phần mềm OCR riêng để trích xuất phụ đề từ các hình ảnh. Điều này cũng tương tự với VSF. Phần mềm Subtitle Edit (https://www.nikse.dk/subtitleedit) có nhiều công cụ OCR tích hợp để lựa chọn. Subtitle Edit cũng tạo ra tập tin phụ đề, vì vậy rất thuận tiện để sử dụng.


Cài đặt InpaintDelogo

Tôi đã cảm thấy hơi lo lắng khi cố gắng tìm hiểu cách cài đặt phần mềm như IPDL. Nhưng, nó không khó như tôi nghĩ. IPDL có thể được cài đặt trên MacOS, nhưng tôi đã cài đặt nó trên Windows 11 64-bit. Vì vậy, đó là điều mà tôi sẽ mô tả chi tiết.

AviSynth+
IPDL is a script that runs in the AviSynth+ software. AviSynth+ is a powerful tool for editing and processing videos. Go to https://github.com/AviSynth/AviSynthPlus. On the right side of the page, click on the “latest” button. On the next page, scroll to the bottom of the page. Click on the file for your computer and operating system to download it. I picked AviSynthPlus_3.7.2_20220317_vcredist.exe. After it’s downloaded, double-click on it to install it. One of the many folders created is the folder below for 64-bit Windows.

C:\Program Files (x86)\AviSynth+\plugins64+


Tiếp theo, một chuỗi dài các tệp từ AvsInpaint đến IPDL cần được tải xuống và đặt vào thư mục plugin phía trên. Các bước cho mỗi tệp tương tự. Nhưng, đối với ai đó mới vào cuộc như tôi, đôi khi không rõ phải làm gì. Vì vậy, tôi nghĩ rằng viết ra các bước cho mỗi tệp sẽ tốt hơn.

AvsInpaint
AvsInpaint is a plugin for AviSynth+. Go to https://github.com/pinterf/AvsInpaint. On the right side of the page, click on the “latest” button. On the next page, click on the file AvsInpaint-v1.3.7z to download it. Then, double click it to uncompress it. (If it doesn’t uncompress, search the internet and download and install free software that uncompresses *.7z files, e.g., https://www.7-zip.org/download.html.) In the subfolder x64, there’s a file named AvsInPaint.dll. Move it to the plugins folder.

MaskTools2
Go to https://github.com/pinterf/masktools. On the right side of the page, click on the “latest” button. On the next page, click on the file masktools2_v2.2.30.7z to download it. Uncompress it. In the subfolder x64, there’s a file named masktools2.dll. Move it to the plugins folder.

RgTools
Go to https://github.com/pinterf/RgTools. On the right side of the page, click on the “latest” button. On the next page, click on the file RgTools-v1.2.7z to download it. Uncompress it. In the subfolder x64, there’s a file named RgTools.dll. Move it to the plugins folder.

GRunT
Go to https://github.com/pinterf/GRunT. On the right side of the page, click on the “latest” button. On the next page, click on the file GRunT-v1.02.7z to download it. Uncompress it. In the subfolder x64, there’s a file named grunt.dll. Move it to the plugins folder.

RequestLinear
Go to https://github.com/pinterf/TIVTC. On the right side of the page, click on the “latest” button. On the next page, click on the files TDeint-v1.8.7z and TIVTC-v1.0.26.7z to download them. Uncompress them. In the subfolders x64, there are files named TDeint.dll and TIVTC.dll. Move them to the plugins folder.

ClipBlend
Go to http://avisynth.nl/index.php/ClipBlend. On the right side of the page, next to the word “Download,” click on the file “ClipBlend_25_26_x86_x64_dll_v1-01_20181127.zip” to download it. Uncompress it. In the subfolder Avisynth+_x64, there’s a file named ClipBlend_x64.dll. Move it to the plugins folder.

RT_Stats
Go to http://avisynth.nl/index.php/RT_Stats. On the right side of the page, next to the word “Download,” click on the file “RT_Stats_25_26_x86_x64_dll_v2.00Beta12_20181125.7z” to download it. Uncompress it. In the subfolder Avisynth26_x64, there’s a file named RT_Stats_x64.dll. Move it to the plugins folder.

FrameSel
Go to http://avisynth.nl/index.php/FrameSel. On the right side of the page, next to the word “Download,” click on the file “FrameSel_x86_x64_dll_v2-20_20180420.zip” to download it. Uncompress it. In the subfolder Avisynth+_x64, there’s a file named FrameSel_x64.dll. Move it to the plugins folder.

GrainFactory3
Go to http://avisynth.nl/index.php/GrainFactory3. The following instructions are different than all the previous ones. On the right side of the page, next to the word “Download,” right click on the file GrainFactory3.avsi. Select “Save Link As...” In the window that pops up, click the Save button. Move this file to the plugins folder.

vsTEdgeMask
Go to https://github.com/Asd-g/AviSynth-vsTEdgeMask. On the right side of the page, click on the “latest” button. On the next page, click on the file vsTEdgeMask-1.0.1.7z to download it. Uncompress it. In the subfolder x64/Releases, there’s a file named vsTEdgeMask.dll. Move it to the plugins folder.

InpaintDelogo
Go to https://github.com/Purfview/IPDL. The following instructions are different than all the previous ones. Click on the green “Code” button, and select “Download ZIP.” Uncompress it. Move the file InpaintDelogo.avsi to the plugins folder.

LSMASHSource
Go to http://avisynth.nl/index.php/LSMASHSource. On the right side of the page, next to the word “Download,” click on the link “L-SMASH-Works.” On the next page, click on the file L-SMASH-Works-20220505.7z to download it. Uncompress it. In the subfolder x64, there’s a file named LSMASHSource.dll. Move it to the plugins folder.

AvsPmod
Last, it’s easier to use AvsPmod to run IPDL. Go to https://github.com/gispos/AvsPmod/releases. Click the 64-bit file AvsPmod_v2.7.1.8_.Windows_x86-64.zip to downloaded it. Uncompress it. Open the folder AvsPmod_v2.7.1.8_.Windows_x86-64. Then, open the folder AvsPmod. Right click on the file AvsPmod.exe, and select Run as administrator. Finish the installation. Optional: Create a desktop shortcut of AvsPmod.exe by right clicking it, selecting “Show more options,” selecting “Create shortcut,” and moving the shortcut to the desktop.

Okay, so, that wasn’t too bad, was it?


Chạy InpaintDelogo và VideoSubFinder

Thí nghiệm của tôi về việc chạy thử InpaintDelogo trên một máy tính với cấu hình tại thời điểm này có vẻ yếu để xử lý hình ảnh


Tôi đã chọn một video Porn JAV chất lượng cao 720p :D với phụ đề tiếng Việt đã được gắn cứng vào trong Video và một file phụ đề gốc định dạng srt rời ở ngoài. Video này là code DASS-357". Tệp phụ đề được lấy từ một "người bạn", và nó nên khớp chính xác với phụ đề đã được gắn cứng vào Video. Tôi chọn  việc này để thử so sánh xem liệu rằng Script InpaintDelogo có thể chạy ngon lành hay không!!!

Trước khi thực hiện việc "tách" phụ đề thành hình ảnh từ một video, tôi cần xác định chính xác vị trí của các phụ đề trong video. Đoạn mã dưới đây là một ví dụ để thực hiện việc này. Trong ví dụ này, DASS-357[Vietsub].mp4 là tên của video, và nó được lưu trong thư mục A:\phim\. Bốn con số đại diện cho số pixel từ bên trái, trên, bên phải và dưới của video, tương ứng. Bốn con số 0,610,0,-14 được chọn ngẫu nhiên, chỉ là một điểm khởi đầu.
LWLibAvVideoSource("A:\phim\DASS-357[Vietsub].mp4") InpaintLoc(Loc="0,610,0,-14")


Để chạy đoạn mã trên, hãy mở AvsPmod và sao chép-dán đoạn mã vào đó. Thay đổi dòng đầu tiên của đoạn mã để phù hợp với cài đặt của bạn, bao gồm tên của video và đường dẫn thư mục của nó. Sau đó, chỉ cần nhấn phím F5 trên bàn phím của bạn. Một hình ảnh với một vùng được làm nổi bật màu vàng sẽ xuất hiện. Video cũng sẽ xuất hiện, kéo thanh trượt qua lại để xem vùng "mặt nạ"có phủ được hết dòng phụ đề hay không!!! Phụ đề tiếng Việt hay tiếng Anh thường có tối đa hai dòng, nhưng cũng có thể nhiều hơn, phụ đề tiếng Trung thì thường đa số 1 dòng (hoặc 2 dòng nếu song ngữ).

Tôi đã thay đổi các số ở phần trên và dưới, trong khi nhấn F5 mỗi lần, cho đến khi vùng được làm nổi bật thu hẹp vào phụ đề. Bạn cần canh chỉnh sao cho "vùng mặt nạ" phải bao được hết 2 dòng phụ đề . Tôi đã quyết định về bốn con số sau: 0,610,0,-14.





Vùng được làm nổi bật cũng được gọi là mặt nạ. Một mặt nạ động được sử dụng để tạo hình ảnh của một loạt các phụ đề trong một video. Tùy chọn DynMask3 trong IPDL có vẻ phù hợp với nhiều bộ phim JAV từ trang vlxx hay javhd, vì cách phụ đề được định dạng. Tôi đã sử dụng đoạn mã đơn giản dưới đây. Thực sự, tôi đã có được kết quả tốt hơn với đoạn mã đơn giản này so với những đoạn mã phức tạp hơn mà tôi đã thử. Có thể là do tôi bắt đầu với một video chất lượng cao nên nó không cần nhiều công việc phụ trợ.
LWLibAvVideoSource("A:\phim\DASS-357[Vietsub].mp4") InpaintDelogo(Loc="0,610,0,-14", \ DynMask=3, DynTune=200, Dyn3Seq=8, \ Extract=1, Show=4, \ ImgDir="A:\tmp")




Trong đoạn mã trên, dòng đầu tiên giống với dòng được sử dụng trong đoạn mã phía trên hơn. Bốn số vị trí là những số đã được xác định bằng cách sử dụng đoạn mã phía trên hơn. Trong Windows, tạo một thư mục mới cho các hình ảnh sẽ được tạo ra. Sau đó, trong đoạn mã trên, đảm bảo rằng đường dẫn phù hợp với thư mục mới. Phần còn lại của đoạn mã là cài đặt mặc định. (Dyn3Seq là số khung hình tối thiểu cho một phụ đề. Tôi đã giảm nó từ giá trị mặc định xuống giá trị tối thiểu cho phép để bắt các phụ đề có thời lượng ngắn hơn. Điều này không ảnh hưởng đến chất lượng của các hình ảnh được tạo ra.)
Extract= là chế độ xuất ảnh của phụ đề:
Ví dụ:
Extract=1 ==> Xuất ra ảnh có nền đen chữ trắng
Extract=2 ==> Xuất ra ảnh raw (ảnh trong video như nào thì xuất ra y chang như vậy..)
 





Để biết thêm thông tin về các tùy chọn được sử dụng ở trên và các tùy chọn khác, vui lòng xem các liên kết dưới đây. Tài liệu hướng dẫn thực sự đã được tích hợp vào tập lệnh IPDL script file InpaintDelogo.avsi. Nó có thể được mở và đọc trong Notepad++. Hoặc, nó có thể được đọc tại liên kết đầu tiên dưới đây. Tài liệu hướng dẫn hiển thị các giá trị mặc định và cung cấp gợi ý cho các giá trị khác.

https://github.com/Purfview/IPDL/blob/main/IPDL.avsi
https://forum.doom9.org/showthread.php?p=1883832

Cuối cùng, để tạo ra các hình ảnh của phụ đề, hãy mở AvsPmod và sao chép-và-dán tập lệnh ở trên vào đó. Nhấn phím F5 để chạy tập lệnh. Quá trình xử lý video có thời gian mất 21 phút cho video có độ dài 02:04:19. Các hình ảnh của phụ đề được lưu trong thư mục hình ảnh A:\tmp
Kết quả khi chạy:
InpaintDelogo


VideoSubFinder

IPDL tạo ra 619 hình ảnh phụ đề. VSF tạo ra 634 hình ảnh phụ đề. Tập tin phụ đề từ "người bạn" gửi cho tôi có 584 phụ đề.

Đối với VSF, hãy tải nó từ https://sourceforge.net/projects/videosubfinder/. Việc cài đặt nó rất dễ dàng. Để biết hướng dẫn chạy nó, kèm theo hình ảnh minh họa, xem tại https://www.videoconverterfactory.com/tips/extract-hardcoded-subtitles.html.


KẾT LUẬN
- Sử dụng: Về cơ bản với người dùng phổ thông thì VideoSubFinder vẫn là tốt nhất, vì giao diện đơn giản dễ dùng, thao tác thực hiện nhanh gọn không rườm rà như IPDL. VideoSubFinder hỗ trợ đầy đủ cả 3 hệ điều hành phổ biến, có hỗ trợ cả command line cho những ai muốn tối ưu kết hợp với các ứng dụng khác.
- Hiệu quả: Cả 2 đều cho ra kết quả cuối cùng như mong đợi, tuy VideoSubFinder tạo ra nhiều rác hơn (có thể thay đổi thông số Sub Frames Length cho phù hợp) nhưng  IPDL thường hay bị chồng sub dẫn tới OCR cũng sinh ra rác...
....


Không có nhận xét nào:

Đăng nhận xét

Cám ơn bạn đã để lại nhận xét

Bài đăng nổi bật

Timer điện tử Kawsan KW-TS17C

 

Popular Posts