Andare al contenuto principale
SubtitleMatrix

Convertire SUP (PGS) in SRT

Input multimedialeSottotitoli bitmap (PGS / VobSub)

La prima esecuzione scarica il lettore di testo: circa 4 MB più il modello linguistico, serviti da questo sito e poi messi in cache dal browser. Nulla viene caricato, e il risultato è letto da una macchina: rileggerlo prima di farci affidamento.

Opzioni

Un sottotitolo bitmap è un’immagine di testo, quindi le parole vanno rilette da lì. Dire al riconoscitore in che lingua sono scritti i sottotitoli: l’elenco copre tutte le lingue in cui è pubblicato questo sito. Sottotitoli russi letti con il modello inglese escono come rumore, non come russo. Viene scaricato solo il modello scelto (gli altri mai), quindi cambiare costa un download per lingua, poi in cache.

Un file .sup è un flusso PGS, il formato di sottotitoli a immagini usato dai dischi Blu-ray. Non contiene un solo carattere: ogni sottotitolo è memorizzato come bitmap, insieme a una palette e al momento in cui deve comparire, e un lettore lo compone sopra il video. Ricavarne testo significa quindi leggere le lettere in ogni immagine. Questa pagina lo fa nella scheda con un motore OCR che il sito serve da solo e scrive il risultato in un file .srt.

Il formato è una sequenza di segmenti, ognuno con un’intestazione di tredici byte che porta una marca temporale di presentazione in unità da 90 kHz, un tipo e una lunghezza. Quattro tipi contano: la definizione della palette (PDS), che mappa gli indici su RGB pieni attraverso YCbCr; la definizione dell’oggetto (ODS), che contiene una bitmap codificata a lunghezza di serie; la composizione di presentazione (PCS), che dice quali oggetti stanno dove sul fotogramma; e il display set che li impila. L’inizio di un blocco è la marca temporale del display set che lo mostra. Un flusso PGS non porta alcun tempo di fine — un sottotitolo resta sullo schermo finché il display set successivo non lo sostituisce — quindi la fine di ogni blocco qui è l’inizio del successivo, esattamente ciò che fa un lettore. L’ultimo blocco riceve due secondi, e quella scelta è registrata nel rapporto delle perdite.

Poiché ogni blocco viene letto da una macchina, il testo è una lettura e non una trascrizione: un carattere con grazie di corpo piccolo, un font insolito o un contorno marcato possono trasformare una lettera in un’altra. Rileggi il file prima di farci affidamento. Questa avvertenza non è una formula di rito: è l’unico punto del sito in cui l’uscita non deriva da ciò che il file diceva, e la pagina lo dichiara invece di presentare il risultato come esatto. Scegli la lingua in cui i sottotitoli sono davvero scritti. L’elenco copre tutte le lingue in cui è pubblicato questo sito; ogni modello legge la propria scrittura. Applicare un modello inglese a sottotitoli giapponesi produce rumore, non una traduzione sbagliata, perché il riconoscitore cerca forme che non ci sono. Viene scaricato solo il modello che scegli, e poi resta in cache. I blocchi le cui immagini non producono alcun testo — un fotogramma di dissolvenza, un logo, un blocco nero — vengono lasciati fuori e conteggiati nell’elenco delle perdite invece di essere scritti come righe vuote. Tutto ciò che era un’immagine resta un’immagine nello spirito: font, colore, contorno e posizione sullo schermo non esistono in un .srt, e l’elenco delle perdite lo dice una volta per l’intero file. Nulla viene caricato: il riconoscitore gira nella scheda e le sue uniche richieste di rete sono per i propri file, serviti da questo sito.

Domande frequenti

Che cosa contiene un file .sup che rende la conversione in SRT un lavoro di riconoscimento?

Segmenti, non caratteri. Ogni sottotitolo in un flusso PGS è un oggetto: una bitmap di indici di palette codificata a lunghezza di serie, più una definizione di palette che trasforma quegli indici in RGB. Gli unici valori simili a testo nel file sono le marche temporali di presentazione, che sono interi a 90 kHz e non qualcosa che una persona legga. Convertire in SRT significa mettere ogni bitmap su una tela e riconoscere le lettere, ed è per questo che il risultato va riletto e che la pagina chiede in quale lingua sono i sottotitoli.

Perché l’ultimo sottotitolo dell’output finisce un paio di secondi dopo rispetto a quando dovrebbe?

Perché PGS non dice mai quando un sottotitolo finisce. Un lettore mostra una composizione finché non ne arriva un’altra o finché il flusso non viene svuotato, quindi l’unico tempo di fine che esiste nel file è «l’inizio del successivo». Per l’ultimo blocco non c’è un successivo; la pagina gli dà due secondi e registra quella scelta nell’elenco delle perdite. Se il disco teneva davvero l’ultima riga per dieci secondi, la correzione onesta è uno spostamento o una modifica di durata, non un’ipotesi nascosta nel convertitore.

Quale modello di lingua devo scegliere per sottotitoli con righe giapponesi e inglesi insieme?

Quello in cui è la maggior parte del dialogo. Un fotogramma PGS può mescolare scritture in una sola riga — una frase giapponese con un prestito inglese in lettere latine è comune — ma al riconoscitore viene dato un modello per esecuzione, e un modello addestrato su una scrittura legge l’altra come rumore. Se il file alterna davvero due scritture, eseguilo due volte, una per lingua, e conserva le righe che ogni passata ha letto bene: l’uscita è un .srt semplice, quindi unire le due è un confronto, non una riesportazione.

I colori dei sottotitoli passano nell’SRT?

No, e non possono. Un .sup codifica il colore tre volte: nella palette (che è YCbCr con canale alfa, per ogni blocco), nella composizione (dove la bitmap si posa su un fotogramma 1920×1080) e nel contorno e nell’ombra disegnati nella bitmap stessa. SRT non ha nessuno di quegli spazi. La pagina legge la luminanza di ogni pixel per decidere cos’è inchiostro e cos’è sfondo, che è tutto ciò di cui l’OCR ha bisogno, e l’elenco delle perdite riporta la formattazione una volta per il file invece di fingere che i colori siano sopravvissuti.

Alcuni blocchi sono usciti vuoti o mancanti. Che cosa è successo?

Un’immagine che non ha prodotto testo è stata scartata invece di essere scritta come sottotitolo vuoto. Accade con i fotogrammi in dissolvenza in entrata e in uscita, con i blocchi che sono solo un logo o un simbolo e con testo molto piccolo sotto la dimensione che il riconoscitore sa risolvere. Ognuno è conteggiato nell’elenco delle perdite, quindi il file che ottieni non è più corto in silenzio di quello che hai dato. Se il conteggio è alto, la causa abituale è il modello di lingua sbagliato o un flusso con bitmap insolitamente piccole.

Il file .sup o le sue immagini vengono caricati da qualche parte?

No. Il riconoscitore gira nella scheda, e il suo worker, il nucleo WebAssembly e il modello di lingua sono tutti serviti da questo sito e memorizzati dal browser. Le uniche richieste che la pagina fa sono per quei file. Qui conta più che in una pagina di testo: un flusso PGS estratto da un disco è spesso l’unico pezzo di materiale che uno studio o un avvocato è meno disposto a consegnare a terzi, e tutto il senso di questa pagina è che non debbano farlo.

Strumenti correlati