Chuyển SUP (PGS) sang SRT
Lần chạy đầu tiên tải bộ đọc văn bản — khoảng 4 MB cộng với mô hình ngôn ngữ, do trang này phục vụ và được trình duyệt lưu đệm sau đó. Không có gì được tải lên, và kết quả do máy đọc: hãy kiểm tra lại trước khi tin dùng.
Tùy chọn
Phụ đề dạng bitmap là một hình ảnh của chữ, nên phải đọc ngược các từ ra khỏi hình. Hãy cho bộ đọc biết phụ đề được viết bằng ngôn ngữ nào — danh sách bao gồm mọi ngôn ngữ mà trang này được xuất bản. Phụ đề tiếng Nga đọc bằng mô hình tiếng Anh sẽ ra nhiễu, không ra tiếng Nga. Chỉ mô hình bạn chọn được tải xuống (những mô hình khác không bao giờ được tải), nên đổi ngôn ngữ tốn một lần tải mỗi ngôn ngữ, sau đó được lưu đệm.
Một tệp .sup là luồng PGS, định dạng phụ đề dạng hình mà đĩa Blu-ray dùng. Trong đó không có một ký tự nào: mỗi phụ đề được lưu thành ảnh bitmap cùng bảng màu và thời điểm xuất hiện, rồi trình phát ghép nó lên video. Muốn lấy chữ ra thì phải đọc các chữ cái trong từng ảnh. Trang này làm việc đó ngay trong tab bằng một bộ OCR do site tự phục vụ, và ghi kết quả thành tệp .srt. Tệp .sup được nhận diện bằng các byte đầu tệp (magic bytes) chứ không dựa vào phần mở rộng, và không byte nào của nó được tải lên.
Định dạng là một chuỗi segment, mỗi segment có tiêu đề mười ba byte mang mốc thời gian hiển thị theo đơn vị 90 kHz, một loại và một độ dài. Bốn loại quan trọng: định nghĩa bảng màu (PDS) ánh xạ chỉ số sang RGB đầy đủ qua YCbCr; định nghĩa đối tượng (ODS) giữ một bitmap mã run-length; thành phần hiển thị (PCS) nói đối tượng nào nằm đâu trên khung; và display set xếp chúng lại. Một cue bắt đầu ở mốc của display set hiện nó. PGS không mang thời điểm kết thúc nào — phụ đề ở trên màn hình cho tới khi display set kế thay thế — nên điểm kết thúc mỗi cue ở đây là điểm bắt đầu của cue kế, đúng như trình phát làm.
Vì mỗi cue do máy đọc, phần chữ là một lần đọc chứ không phải bản chép chính xác: phông có chân ở cỡ nhỏ, phông lạ hay viền dày có thể biến một ký tự thành ký tự khác. Hãy đọc soát tệp trước khi dựa vào nó, và chọn đúng ngôn ngữ phụ đề được viết. Danh sách bao gồm mọi ngôn ngữ mà trang này được xuất bản, và mỗi mô hình đọc chữ của chính nó — chạy mô hình tiếng Anh trên phụ đề tiếng Nhật chỉ cho ra nhiễu. Chỉ mô hình bạn chọn được tải về và được lưu đệm. Cue có ảnh không cho ra chữ — khung mờ dần, logo, cue đen — bị bỏ và đếm trong danh sách mất mát thay vì ghi thành dòng trống. Phông, màu, viền và vị trí trên màn hình không tồn tại trong .srt, và danh sách mất mát nói điều đó một lần cho cả tệp.
Câu hỏi thường gặp
Trong tệp .sup có gì khiến việc chuyển sang SRT là một bài nhận dạng?
Segment, không phải ký tự. Mỗi phụ đề trong luồng PGS là một đối tượng: một bitmap chỉ số bảng màu mã run-length, cộng một định nghĩa bảng màu biến các chỉ số đó thành RGB. Giá trị duy nhất giống chữ trong tệp là mốc thời gian hiển thị, vốn là số nguyên 90 kHz chứ không phải thứ người ta đọc. Chuyển nó sang SRT nghĩa là đặt từng bitmap lên canvas và nhận dạng chữ cái, nên kết quả cần đọc soát và trang phải hỏi phụ đề viết bằng ngôn ngữ nào.
Vì sao phụ đề cuối trong đầu ra kết thúc muộn hơn vài giây so với đáng lẽ?
Vì PGS không bao giờ nói khi nào một phụ đề kết thúc. Trình phát hiện một thành phần cho tới khi thành phần kế tới hoặc luồng bị xóa, nên mốc kết thúc duy nhất tồn tại trong tệp là mốc bắt đầu của cái kế. Với cue cuối thì không có cái kế; trang cho nó hai giây và ghi lựa chọn đó vào danh sách mất mát. Nếu đĩa thật sự để dòng cuối đứng mười giây, cách sửa trung thực là dịch thời gian hoặc sửa thời lượng, không phải một phỏng đoán giấu trong bộ chuyển đổi.
Nên chọn mô hình ngôn ngữ nào cho phụ đề có cả dòng tiếng Nhật lẫn tiếng Anh?
Mô hình của ngôn ngữ chiếm phần lớn lời thoại. Một khung PGS có thể trộn hệ chữ trong cùng một dòng — một câu tiếng Nhật kèm từ mượn tiếng Anh gõ bằng chữ Latinh là chuyện thường — nhưng bộ nhận dạng chỉ được cho một mô hình mỗi lượt, và mô hình luyện trên hệ chữ này đọc hệ chữ kia thành rác. Nếu tệp thật sự xen kẽ hai hệ chữ, hãy chạy hai lần, mỗi ngôn ngữ một lần, rồi giữ những dòng mỗi lượt làm đúng: đầu ra là .srt thuần, nên gộp hai bản là một phép so sánh, không phải xuất lại.
Màu của phụ đề có được mang sang SRT không?
Không, và không thể. Một tệp .sup mã hóa màu ba lần: trong bảng màu (YCbCr kèm kênh alpha, theo từng cue), trong thành phần hiển thị (bitmap nằm đâu trên khung 1920×1080) và trong viền cùng bóng vẽ sẵn vào bitmap. SRT không có ô nào cho những thứ đó. Trang đọc độ chói từng điểm ảnh để quyết đâu là mực đâu là nền, đủ cho OCR, rồi báo kiểu hiển thị một lần cho cả tệp thay vì giả vờ màu còn nguyên.
Có cue ra rỗng hoặc mất. Chúng đã đi đâu?
Một ảnh không cho ra chữ bị bỏ thay vì ghi thành phụ đề trống. Điều đó xảy ra với khung mờ dần, với cue chỉ có logo hay biểu tượng, và với chữ quá nhỏ dưới cỡ bộ nhận dạng phân giải được. Mỗi trường hợp được đếm trong danh sách mất mát, nên tệp bạn nhận không lặng lẽ ngắn hơn tệp bạn đưa. Nếu con số cao, nguyên nhân thường là sai mô hình ngôn ngữ hoặc luồng có bitmap nhỏ bất thường.
Tệp .sup hay hình trong đó có bị tải lên đâu không?
Không. Bộ nhận dạng chạy trong tab, và worker, lõi WebAssembly cùng mô hình ngôn ngữ của nó đều do site này phục vụ và được trình duyệt lưu đệm. Các yêu cầu duy nhất trang gửi là để lấy những tệp đó. Điều này quan trọng ở đây hơn ở trang văn bản: một luồng PGS trích từ đĩa thường là thứ mà studio hay luật sư ít muốn giao cho bên thứ ba nhất, và toàn bộ lý do trang này tồn tại là họ không phải giao.