Napisy SUP (PGS) do SRT
Pierwsze uruchomienie pobiera czytnik tekstu — około 4 MB plus model językowy, serwowany przez tę stronę i potem zapamiętany przez przeglądarkę. Nic nie jest wysyłane, a wynik odczytuje maszyna: przeczytaj go krytycznie, zanim na nim polegasz.
Opcje
Napis bitmapowy to obraz tekstu, więc słowa trzeba z niego odczytać. Powiedz czytnikowi, w jakim języku napisane są napisy — lista obejmuje wszystkie języki, w których ukazuje się ta strona. Rosyjskie napisy czytane modelem angielskim wychodzą jako szum, a nie jako rosyjski. Pobierany jest tylko wybrany model (pozostałe nigdy), więc przełączenie kosztuje jedno pobranie na język, a potem model zostaje w pamięci podręcznej.
Plik .sup to strumień PGS, format napisów obrazkowych używany na płytach Blu-ray. Nie ma w nim ani jednego znaku: każdy napis jest przechowywany jako bitmapa wraz z paletą i momentem, w którym ma się pojawić, a odtwarzacz nakłada go na obraz. Wydobycie tekstu oznacza więc odczytanie liter z każdego obrazu. Ta strona robi to w karcie silnikiem OCR, który witryna serwuje sama, i zapisuje wynik jako plik .srt.
Format to sekwencja segmentów, każdy z trzynastobajtowym nagłówkiem niosącym znacznik czasu prezentacji w jednostkach 90 kHz, typ i długość. Znaczenie mają cztery typy: definicja palety (PDS), która mapuje indeksy na pełne RGB przez YCbCr; definicja obiektu (ODS), która trzyma jedną bitmapę zakodowaną kodem długości serii; kompozycja prezentacji (PCS), która mówi, które obiekty leżą gdzie na kadrze; oraz zbiór wyświetlania, który je układa. Start bloku to znacznik czasu zbioru wyświetlania, który go pokazuje. Strumień PGS nie niesie żadnego czasu końca — napis zostaje na ekranie, aż zastąpi go następny zbiór wyświetlania — więc koniec każdego bloku to start następnego, dokładnie tak, jak robi odtwarzacz.
Ponieważ każdy blok czyta maszyna, tekst jest odczytem, a nie transkrypcją: szeryfowy krój w małym rozmiarze, nietypowa czcionka albo gruby obrys mogą zamienić znak w inny znak. Sprawdź plik, zanim na nim polegasz. To zastrzeżenie nie jest formułką — to jedyne miejsce na tej witrynie, gdzie wynik nie pochodzi z tego, co powiedział plik, i strona mówi to wprost, zamiast przedstawiać wynik jako dokładny.
Wybierz język, w którym napisy są naprawdę zapisane. Lista obejmuje wszystkie języki, w których ukazuje się ta strona; każdy model czyta własne pismo. Puszczenie modelu angielskiego na japońskich napisach daje szum, a nie złe tłumaczenie, bo rozpoznawacz szuka kształtów, których nie ma. Pobierany jest tylko wybrany model i jest potem buforowany.
Bloki, których obrazy nie dają żadnego tekstu — klatka przenikania, logo, czarny blok — są pomijane i liczone na liście strat, a nie zapisywane jako puste wiersze. Wszystko, co było obrazem, w duchu pozostaje obrazem: krój, kolor, obrys i pozycja na ekranie nie istnieją w .srt, a lista strat mówi o tym raz dla całego pliku.
Częste pytania
Co jest w pliku .sup, że konwersja PGS wymaga rozpoznawania obrazu?
Segmenty, nie znaki. Każdy napis w strumieniu PGS jest obiektem: bitmapą indeksów palety zakodowaną kodem długości serii plus definicją palety, która zamienia te indeksy na RGB. Jedyne wartości podobne do tekstu w pliku to znaczniki czasu prezentacji, czyli liczby całkowite 90 kHz, a nie coś, co czyta człowiek. Zamiana tego na SRT oznacza położenie każdej bitmapy na kanwie i rozpoznanie liter, dlatego wynik wymaga korekty i dlatego strona pyta o język napisów.
Dlaczego ostatni napis w konwersji PGS kończy się kilka sekund za późno?
Bo PGS nigdy nie mówi, kiedy napis się kończy. Odtwarzacz pokazuje kompozycję, aż przyjdzie następna albo strumień zostanie wyczyszczony, więc jedynym czasem końca w pliku jest „start następnego”. Dla ostatniego bloku następnego nie ma; strona daje mu dwie sekundy i zapisuje tę decyzję na liście strat. Jeśli płyta naprawdę trzymała ostatnią linię dziesięć sekund, uczciwą poprawką jest przesunięcie albo zmiana czasu trwania, a nie domysł ukryty w konwerterze.
Który model językowy wybrać w konwerterze .sup do napisów z liniami japońskimi i angielskimi?
Ten, w którym jest większość dialogu. Kadr PGS może mieszać pisma w jednej linii — japońskie zdanie z angielskim zapożyczeniem zapisanym literami łacińskimi jest częste — ale rozpoznawacz dostaje jeden model na przebieg, a model wytrenowany na jednym piśmie czyta drugie jako śmieci. Jeśli plik naprawdę przeplata dwa pisma, uruchom go dwa razy, raz na język, i zachowaj wiersze, które każdy przebieg odczytał poprawnie: wynik to zwykły .srt, więc scalenie dwóch jest porównaniem, nie ponownym eksportem.
Czy kolory napisów przechodzą z .sup do SRT w konwersji PGS?
Nie i nie mogą. Plik .sup koduje kolor na trzy sposoby: w palecie (YCbCr z kanałem alfa, dla każdego bloku), w kompozycji (gdzie bitmapa leży na kadrze 1920×1080) i w obrysie oraz cieniu wrysowanych w samą bitmapę. SRT nie ma na to żadnego miejsca. Strona czyta luminancję każdego piksela, żeby zdecydować, co jest tuszem, a co tłem, i to wystarcza OCR; lista strat raportuje styl raz dla całego pliku, zamiast udawać, że kolory przetrwały.
Część bloków wyszła pusta — co zrobił z nimi konwerter PGS?
Obraz, który nie dał tekstu, został odrzucony, a nie zapisany jako pusty napis. Zdarza się to przy klatkach przenikania, przy blokach będących tylko logo lub symbolem oraz przy bardzo małym tekście poniżej rozmiaru, który rozpoznawacz potrafi rozwiązać. Każdy jest policzony na liście strat, więc otrzymany plik nie jest po cichu krótszy niż plik, który dałeś. Jeśli liczba jest wysoka, zwykłą przyczyną jest zły model językowy albo strumień o nietypowo małych bitmapach.
Czy plik .sup jest gdziekolwiek wysyłany przez konwerter PGS na SRT?
Nie. Rozpoznawacz działa w karcie, a jego worker, rdzeń WebAssembly i model językowy są serwowane z tej witryny i buforowane przez przeglądarkę. Jedyne żądania, jakie strona wykonuje, dotyczą tych plików. Ma to większe znaczenie niż na stronie tekstowej: strumień PGS wyciągnięty z płyty to często ten jeden materiał, którego studio albo prawnik najmniej chętnie oddaje stronie trzeciej, a cały sens tej strony polega na tym, że nie muszą.