Italiano

Video e sottotitoli · Toolkit sottotitoli

Cosa significa "pulire" un file di sottotitoli: tag, codici e formattazione vagante

· Come funziona

sottotitoli elaborazione del testo formati di file

Una riga di sottotitolo che porta un tag tra parentesi angolari e un codice di parentesi sopra la stessa riga ridotta a parole semplici
Illustrazione vettoriale originale ToolAcre

I file dei sottotitoli raccolgono spazzatura: tag simili a HTML, codici di stile di altri formati, distinte materiali sparse e terminazioni di riga miste. Questo post spiega cos'è ogni tipo di disordine, da dove proviene e come un passaggio pulito lo rimuove senza toccare le parole.

I sottotitoli mostrano "{\an8}" e "<i>" sullo schermo: i sintomi visibili di un file di sottotitoli non pulito

Quando una didascalia mostra i caratteri di un tag invece di rispettarlo, il giocatore ti sta dicendo che non implementa quel markup. SRT non ha specifiche di formattazione, quindi il supporto è convenzionale: molti giocatori rispettano un piccolo set di tag simili a HTML e qualsiasi cosa al di fuori di quel set viene disegnata come testo letterale. Un file che viene visualizzato correttamente in un lettore e mostra le parentesi graffe in un altro non è cambiato; lo ha solo l'insieme di tag onorato.

Ecco perché la pulizia è un'operazione vera e propria e non un riordino cosmetico. Il disordine non è una decorazione brutta. Si tratta di istruzioni scritte per un formato che un giocatore diverso legge come dialogo e la soluzione è rimuovere le istruzioni lasciando intatta ogni parola.

Da dove viene il disordine: esportazioni da formati con stili pesanti, output OCR ed editor che aggiungono il proprio markup

La maggior parte del disordine arriva attraverso la conversione. Un file creato in un formato ricco di stili come ASS o SSA porta direttive di posizionamento e aspetto in linea e un convertitore che mappa fedelmente i tempi spesso trasmette tali direttive come testo. Gli editor dei sottotitoli aggiungono il proprio markup per l'identificazione e l'enfasi dell'oratore, e il riconoscimento ottico dei caratteri dei sottotitoli incorporati introduce punteggiatura vagante e spazi doppi che nessun autore ha digitato.

Nessuna di queste fonti è malformata nel proprio mondo. Il blocco di override ASS è significativo in ASS. Il problema è che SRT non ha equivalenti, quindi una conversione senza perdite produce un file in cui l'istruzione sopravvive come caratteri anziché come comportamento.

Tag di formattazione: corsivo, grassetto e tag di carattere, che i giocatori li onorano e che li mostrano letteralmente

I tag delle parentesi angolari vengono gestiti per primi, con un'espressione regolare che rimuove tutto ciò che è compreso tra il minore e il successivo maggiore di. Ciò riguarda i tag in corsivo e in grassetto, i tag di classe WebVTT come un'annotazione di classe cue e i tag vocali che nominano un relatore. La proprietà importante è che questa è una sostituzione di testo, non un parser HTML, e non tenta di far corrispondere i tag di apertura a quelli di chiusura.

Questa semplicità ha un costo che vale la pena conoscere. Una linea di dialogo che contiene realmente un minore di e un maggiore di, come una disuguaglianza parlata, avrà il testo tra di loro rimosso insieme alle parentesi. È raro nei dialoghi e comune nelle didascalie tecniche, quindi vale la pena scansionare l'output di un passaggio di pulizia su materiale che discute di codice o matematica.

Codici di posizionamento e stile: cosa significano codici come {\an8} in ASS/SSA e perché sono rumore in SRT

I codici delle parentesi graffe vengono rimossi da una seconda sostituzione che copre tutto ciò che si trova tra una graffa di apertura e una di chiusura. Nei formati SubStation si tratta di blocchi di sovrascrittura e il più frequente è quello che sposta una linea nella parte superiore del frame in modo che non entri in collisione con il testo incorporato. Altri impostano il carattere, il colore, la rotazione o i tempi del karaoke.

In un file SRT nessuno di essi significa nulla, motivo per cui vengono rimossi anziché tradotti. Una direttiva di posizione non ha un equivalente SRT in cui tradursi: il formato semplicemente non contiene il posizionamento. La rimozione del codice fa perdere all'autore l'intento che la linea si trovi nella parte superiore del fotogramma e questa perdita è reale, ma è preferibile stampare il codice per lo spettatore.

Disordine invisibile: indicatori dell'ordine dei byte, terminazioni di riga miste CRLF e LF e spazi finali

Il disordine invisibile viene gestito in precedenza, durante l'analisi, e vale la pena separarlo perché non fa affatto parte del testo. Un contrassegno dell'ordine dei byte all'inizio del file viene rimosso prima di ogni altra cosa, perché altrimenti si attacca al primo numero di indice e costa il primo segnale. I ritorni a capo sono normalizzati, sia la coppia Windows che un ritorno a capo singolo, quindi un file modificato su due piattaforme si divide correttamente in blocchi.

Gli spazi bianchi all'interno di una stecca vengono gestiti con i tag. Le sequenze di due o più spazi o tabulazioni si riducono a un singolo spazio, ogni riga viene tagliata individualmente e la stecca nel suo insieme viene tagliata dopo che le linee vengono ricongiunte. Le entità carattere vengono deliberatamente lasciate in pace: un'entità e commerciale è il contenuto che uno spettatore dovrebbe vedere, non il markup, e un pulitore che lo decodificherebbe modificherebbe il dialogo anziché rimuovere le istruzioni.

Esempio funzionante: pulizia di un'esportazione 200-cue: cosa cambia, cosa rimane e come controllare il risultato

La pulizia di una grande esportazione cambia meno di quanto sembri. Prendiamo un file da duecento cue in cui un convertitore ha anteposto il codice della parte superiore del fotogramma a sessanta cue e ha avvolto i tag di enfasi attorno ad altri quaranta. Le due sostituzioni rimuovono il codice e i tag, il passaggio degli spazi bianchi fa collassare gli spazi raddoppiati lasciati dalle rimozioni e duecento cue diventano duecento cue con le stesse parole e gli stessi tempi.

Due ulteriori passaggi contano. Una stecca il cui intero contenuto era un codice vagante diventa vuota una volta che il codice è scomparso e le stecche vuote vengono rimosse in un passaggio separato anziché emesse come blocchi vuoti, perché una stecca con un timestamp e senza testo è uno spazio vuoto che alcuni giocatori rendono come un flash. La riscrittura del file rinumera le cue da una e le mantiene contigue, quindi le rimozioni non lasciano buchi nella sequenza. Controlla il risultato confrontando i conteggi delle cue e controllando a campione qualsiasi riga che originariamente conteneva un'entità.

Ciò che questo non copre: riscrittura del testo stesso, ortografia o traduzione; le parole sono tue

La pulizia rimuove il markup e non influisce sulla lingua. Non corregge l'ortografia, non espande le abbreviazioni, non corregge gli errori di trascrizione o non traduce. Se una didascalia dice la parola sbagliata, in seguito dirà la parola sbagliata, formattata correttamente. Questo confine è intenzionale: sarebbe impossibile fidarsi di uno strumento che riscrivesse silenziosamente il dialogo su materiale che non comprende.

Inoltre non ripara la struttura. Un file i cui blocchi non hanno timestamp ha un problema di analisi, non di formattazione, e la rimozione dei tag da esso non produrrà segnali. Anche gli errori di codifica non rientrano nell'ambito di applicazione. Un file decodificato con il set di caratteri sbagliato produce segnali perfettamente ben formati il ​​cui testo è sbagliato, e nessuna rimozione dei tag lo rileva, perché nulla nella struttura è rotto.

Conclusione: rimuovi il markup, mantieni il significato: in che modo il passaggio pulito di Subtitle Toolkit gestisce il disordine comune e documenta ciò che lascia da solo

La regola è rimuovere il markup, mantenere il significato. I tag delle parentesi angolari e i codici delle parentesi graffe vanno perché sono istruzioni che un giocatore ignora o stampa. Gli spazi raddoppiati e il riempimento per riga vengono eliminati perché sono artefatti della rimozione o dell'esportazione originale. Le entità, la punteggiatura e ogni parola rimangono, perché sono ciò che lo spettatore deve leggere.

Esegui un'esportazione ricca di tag tramite il convertitore Subtitle Toolkit e confrontala con l'originale invece di fidarti dell'output a colpo d'occhio. Confermare che il conteggio dei segnali sia invariato tranne dove i segnali erano veramente vuoti, controllare che qualsiasi riga contenente un'entità la contenga ancora ed eseguire la scansione delle righe che discutono di codice o matematica per il testo perso in una parentesi angolare vagante.