Come estrarre testo pulito da file di sottotitoli SRT o VTT
Estrarre il dialogo semplice da un file di sottotitoli sembra banale finché non ti scontri con numeri di cue, timestamp e frasi divise a metà riga. Ecco come farlo correttamente.
I file di sottotitoli memorizzano tre cose intrecciate insieme: un numero di indice, un intervallo di tempo e il testo vero e proprio. Se tutto ciò che vuoi è il testo (per una citazione sul blog, un articolo, un indice di ricerca o per darlo in pasto a un altro strumento), il timing e la numerazione sono solo rumore da eliminare.
L’approccio manuale, e dove si rompe
Un rapido trova-e-sostituisci con una regex per le righe di timestamp (\d{2}:\d{2}:\d{2}[,.]\d{3}\s*-->\s*...) gestisce il caso ovvio. Ecco dove va in crisi:
- Numeri di cue che sembrano testo. Una riga che è solo
42da sola potrebbe essere un indice di cue, oppure, raramente, parte del dialogo vero e proprio (un personaggio che legge un numero ad alta voce). Una rimozione ingenua non può sempre distinguere i due casi in modo affidabile su larga scala. - Frasi divise tra più cue. I sottotitoli sono suddivisi per la leggibilità a schermo (circa una riga ogni pochi secondi), non per la grammatica. Una singola frase si estende regolarmente su due o tre cue consecutivi. Rimuovere le righe di timing senza ricongiungere i frammenti lascia pezzi di frase sconnessi e a scatti invece di prosa fluida.
- Tag di formattazione inline.
<i>,<b>, e i tag voce/colore di VTT (<v Speaker>,<c.colorname>) devono essere rimossi anche loro, altrimenti compariranno come testo letterale con parentesi angolari nel tuo output. - Terminatori di riga misti. I file esportati da strumenti o sistemi operativi diversi a volte mescolano
\r\ne\n, il che può rompere pattern regex che assumono uno dei due.
Come dovrebbe apparire un buon output
Il testo estratto correttamente si legge come prosa normale: frasi complete, interruzioni di paragrafo dove ci sono pause naturali, nessun numero vagante o frammento di timestamp, nessun markup residuo. L’obiettivo è un documento che si legge come se qualcuno avesse semplicemente trascritto il dialogo da zero, senza traccia del formato di sottotitoli da cui proviene.
Farlo senza la pulizia manuale
Il nostro convertitore da SRT a TXT (e il corrispondente convertitore da VTT a TXT) gestisce tutto questo automaticamente: numeri di cue e timestamp rimossi, tag eliminati, frasi divise tra più cue ricongiunte in paragrafi coerenti. Funziona interamente nel tuo browser, quindi nulla del file viene inviato altrove.