Vai al contenuto
OneKitly

Da SRT a testo: ottenere una trascrizione pulita dai sottotitoli

Pubblicato il 05/08/2026 · 13 min di lettura · Strumenti per sviluppatori

Daniel Okonkwo

Daniel OkonkwoSviluppatore front-end e redattore Tech presso OneKitly

Performance web · Formati di file

Verificato su 3 fonti

Vedi il profilo
In breve

Questo convertitore toglie esattamente due cose: il numero del sottotitolo e la riga dei tempi. Tutto ciò che sta fra la riga dei tempi e il separatore vuoto passa intatto, il che è una scelta deliberata e anche ciò che la maggior parte delle persone fraintende. Dagli un file di sottotitoli e le etichette di corsivo sopravvivono come <i>…</i>, quelle di colore come <font color="#ffff00">, il comando di posizione come {\an8}, le descrizioni sonore come [GABBIANI], i trattini di dialogo come un trattino seguito da spazio, e in un file WebVTT le etichette di voce sopravvivono come <v Roger Bingham>, insieme a quelle di classe e alle marche in linea <00:00:07.500> usate per l'evidenziazione parola per parola. Ciò di cui si occupa, sul versante WebVTT, è la struttura attorno ai sottotitoli: l'intestazione WEBVTT, i blocchi di commento NOTE, i blocchi STYLE, i blocchi REGION, gli identificatori e l'elenco di impostazioni dopo la freccia vengono tutti scartati. La seconda cosa da sapere riguarda l'opzione di unione. «Unire ogni sottotitolo su una sola riga» unisce le righe dentro un sottotitolo; non unisce mai una frase distribuita su due sottotitoli, e nulla nel file lo permetterebbe — un'interruzione di sottotitolo decide quanto testo sta sullo schermo, non dove finisce la frase. Una riga «Il fatto del porto» seguita da un sottotitolo «è che non è mai gelato davvero» esce su due righe in entrambe le modalità. I sottotitoli a scorrimento che ripetono una riga non vengono deduplicati. Metti in conto un passaggio di trova-e-sostituisci per la marcatura e una rilettura per le giunzioni.

Togliere i numeri e le marche temporali è la metà facile. A decidere se la trascrizione si legge sono le etichette di corsivo, i trattini di dialogo, le descrizioni sonore e le frasi spezzate su due sottotitoli — e questo convertitore te le lascia tutte.

La metà facile: numeri, tempi, righe vuote

Un file SubRip è quattro cose ripetute: un contatore, una riga dei tempi, una o più righe di testo e una riga vuota che chiude il blocco. Tre di queste quattro sono impalcatura. Toglile e hai una trascrizione: da qui parte ogni convertitore da sottotitoli a testo, e qui riescono tutti. Questo legge ogni blocco, avanza finché non trova una riga con la freccia e tiene tutto ciò che segue fino alla riga vuota. Il contatore viene scartato che sia in ordine o no, quindi un file con numeri duplicati o disordinati si converte senza problemi.

Una conseguenza da conoscere: un sottotitolo senza testo conta comunque come sottotitolo. Alcuni codificatori emettono un blocco vuoto per togliere una didascalia dallo schermo; il convertitore trova la sua riga dei tempi, conserva il nulla che segue e la trascrizione si apre con due righe vuote prima della prima frase vera. Innocuo, ma sembra un difetto della tua esportazione e non una stranezza della sorgente, quindi conviene riconoscerlo.

La metà difficile: tutto ciò che il convertitore lascia dentro

Il testo dei sottotitoli non è testo semplice. Il programma SubRip originale supportava un piccolo insieme di formattazione derivata dall'HTML — grassetto, corsivo, sottolineato e colore — e quelle etichette viaggiano con il file. Fansub e rip ne aggiungono altre: {\an8} per alzare una didascalia in cima all'inquadratura quando andrebbe a sbattere contro un testo impresso, e descrizioni sonore fra parentesi quadre come [GABBIANI] o [MUSICA], proprie della sottotitolazione per non udenti. Due parlanti in uno stesso sottotitolo si marcano per convenzione con un trattino e uno spazio all'inizio di ogni riga. Nulla di ciò viene tolto qui, e nulla dovrebbe essere tolto senza una tua decisione: che una trascrizione conservi le sue descrizioni sonore dipende interamente da a che cosa serve.

WebVTT porta il proprio vocabolario, e il trattamento che il convertitore gli riserva si divide nettamente in due. La struttura attorno ai sottotitoli è gestita: la riga di intestazione WEBVTT, i blocchi di commento NOTE, i blocchi STYLE con CSS, i blocchi REGION che definiscono aree di scorrimento, l'identificatore opzionale nella riga sopra i tempi e l'elenco di impostazioni che può seguire la freccia — allineamento, posizione, riga, regione — vengono tutti rimossi, perché non stanno mai dentro il corpo del sottotitolo. La marcatura dentro il corpo non è gestita affatto. Un'etichetta di voce, che la specifica definisce come tag di apertura v con un'annotazione che nomina il parlante, arriva nella tua trascrizione come il testo letterale <v Roger Bingham>. Le etichette di classe arrivano come <c.yellow>…</c>. L'evidenziazione parola per parola arriva come marche nude tipo <00:00:07.500> piantate in mezzo a una frase.

Ripulirlo è un lavoro di trova-e-sostituisci e richiede un minuto, ma fallo nell'ordine giusto. Togli prima le etichette accoppiate, perché cancellare solo le parentesi angolari lascerebbe dietro testo di attributo orfano. Decidi poi delle parentesi quadre: tienile per una trascrizione di accessibilità, toglile per una sorgente di traduzione. Decidi infine dei trattini, che portano informazione reale in un sottotitolo a due voci e sono puro rumore in uno a una voce sola. Solo dopo vale la pena leggere per il senso.

Una frase, due sottotitoli: la giunzione che nessuno strumento può fare al posto tuo

I sottotitoli si spezzano dove finisce lo schermo, non dove finisce la frase. Una stessa proposizione si distribuisce spesso su due sottotitoli, e nella trascrizione questo dà due righe che si leggono come frammenti. Il convertitore offre un'opzione di unione, e conviene essere precisi su che cosa unisce: la casella unisce le righe dentro un sottotitolo, così una didascalia su due righe ne diventa una. Non unisce, e non può unire, da un sottotitolo all'altro. Provato su un file il cui primo sottotitolo dice «Il fatto del porto» e il secondo «è che non è mai gelato davvero», entrambe le modalità restituiscono due righe separate.

Non è tanto un difetto quanto un limite dell'input. Nulla in un file SubRip segna dove finisce una frase; l'unico segnale disponibile è la punteggiatura e le maiuscole del testo stesso, ed entrambe sono poco affidabili da una lingua all'altra. L'euristica che a mano funziona abbastanza bene è semplice: unisci un sottotitolo al precedente quando quello non finisce con punto, punto interrogativo, esclamativo o virgoletta di chiusura, e quando il successivo non comincia con una maiuscola né con un trattino di dialogo. Applicata da una macchina, questa regola fa a pezzi i sostantivi tedeschi, le abbreviazioni e i puntini di sospensione; applicata da un lettore che conosce la lingua, costa qualche minuto su una trascrizione di lungometraggio.

L'altro disordine ricorrente viene dalla sottotitolazione in diretta. I sottotitoli broadcast spesso scorrono: una riga compare in basso, poi sale quando arriva la successiva, e il codificatore scrive entrambi gli stati come sottotitoli distinti, quindi la stessa frase compare due o tre volte di fila nel file. Il convertitore non deduplica — non ha motivo di farlo, dato che una battuta davvero ripetuta è pure possibile — così una trascrizione da una diretta può uscire lunga circa il doppio del dovuto. Sistemarlo richiede una rilettura, ed è l'argomento più forte per chiedere a chi ti fornisce il file la versione che compare in blocco invece di quella a scorrimento.

SRT o VTT: lo stesso convertitore due volte

Ci sono due convertitori su questo sito, uno per SubRip e uno per WebVTT, e in pratica si comportano in modo identico. Entrambi leggono blocchi, entrambi ignorano ciò che non ha una riga dei tempi, entrambi scartano i blocchi NOTE e STYLE, entrambi accettano una virgola o un punto prima dei millisecondi, ed entrambi accettano una marca con o senza campo delle ore. L'unica differenza formale è che quello per WebVTT riconosce e salta per nome il blocco di intestazione WEBVTT — e quello per SubRip lo scarta comunque, perché un blocco di intestazione non contiene riga dei tempi e quindi non diventa mai un sottotitolo. Provati fianco a fianco sullo stesso file WebVTT, i due producono un output identico byte per byte.

È comodo più che sciatto: puoi incollare l'uno o l'altro formato nell'una o nell'altra pagina e ottenere la stessa trascrizione, che è ciò che volevi. Significa anche che nessuna delle due pagine ti dirà che il tuo file è malformato. Se in una riga dei tempi manca la freccia o è scritta male, tutto quel blocco sparisce in silenzio dall'output invece di sollevare un errore, e l'unico sintomo è un conteggio di sottotitoli più basso del previsto. Il conteggio compare sotto la casella di inserimento; confrontalo con l'ultimo numero del tuo file prima di fidarti del risultato.

Che cosa toglie il convertitore e che cosa lascia nella trascrizione
ElementoCome compare nel fileChe cosa fa il convertitoreChe cosa resta a te
Numero e riga dei tempi1 / 00:00:01,000 --> 00:00:04,000RimossiNulla
Intestazione WebVTT, blocchi NOTE, STYLE, REGIONWEBVTT / NOTE Trascritto l'11-02-2026RimossiNulla
Identificatore e impostazioni del sottotitolohello-1 / align:start position:10%RimossiNulla
Etichette di corsivo, grassetto e colore<i>…</i>, <b>…</b>, <font color="#ffff00">…</font>Conservate tali e qualiTogli le etichette accoppiate prima delle parentesi
Comando di posizione e descrizioni sonore{\an8}, [GABBIANI], [MUSICA]Conservate tali e qualiCancella il comando; decidi delle parentesi quadre
Trattini di dialogo ed etichette di voce- L'hai visto? / <v Roger Bingham>Conservati tali e qualiTrasformali nelle indicazioni di parlante che vuoi
Una frase distribuita su due sottotitoliIl sottotitolo 1 s'interrompe a metà proposizione, il 2 inizia minuscoloDue righe separate, in entrambe le modalitàUnisci a mano: niente punteggiatura alla fine, niente maiuscola all'inizio
Convertitore da SRT a TXTEstrai la trascrizione in testo semplice da un file di sottotitoli SRT rimuovendo numeri e marche temporali. Incolla i sottotitoli e ottieni testo pulito — un sottotitolo per blocco, o unito su righe singole — pronto da rileggere, tradurre o usare in un altro strumento. Copia o scarica il risultato.Prova lo strumento

Domande frequenti

Toglie le etichette di corsivo, i trattini di dialogo e le diciture [MUSICA]?
No. Toglie il numero del sottotitolo e la riga dei tempi, e lascia passare il resto esattamente com'è scritto. Provato su un file che raccoglie tutti i casi comuni, l'output contiene ancora <i>…</i>, <b>…</b>, <font color="#ffff00">…</font>, il comando di posizione in stile ASS {\an8}, la descrizione sonora [GABBIANI], i trattini di due parlanti a inizio riga e — con input WebVTT — l'etichetta di voce <v Roger Bingham>, quelle di classe come <c.yellow>…</c> e le marche in linea come <00:00:07.500>. È una scelta difendibile, perché se una trascrizione debba tenere le descrizioni sonore dipende da a che cosa serve: un documento di accessibilità le vuole, una sorgente di traduzione no. Ma significa che la conversione è un passo su due. Metti in conto poi un passaggio di trova-e-sostituisci, e togli coppie di etichette complete e non le sole parentesi angolari, altrimenti ti resterà testo di attributo orfano come color="#ffff00" in mezzo alla prosa.
Una frase corre su due sottotitoli. Come la porto su una sola riga?
Non con la casella di unione: quella unisce le righe dentro un sottotitolo, non due sottotitoli fra loro, e l'etichetta si presta a essere fraintesa. Verificato su un file in cui il sottotitolo 1 s'interrompe a metà proposizione e il 2 la continua: sia la modalità a blocchi sia quella unita restituiscono due righe separate. La giunzione deve essere tua, perché nulla nel file la segnala. La regola che funziona è negativa da entrambi i lati: unisci un sottotitolo al precedente quando quello non finisce con punto, punto interrogativo, esclamativo, due punti o virgoletta di chiusura, e quando quello corrente non comincia con una maiuscola né con un trattino di dialogo. Fallo come rilettura manuale e non come script: abbreviazioni, puntini di sospensione e, in tedesco, sostantivi maiuscoli la rompono abbastanza spesso da rendere un passaggio automatico più costoso da riparare di quanto faccia risparmiare.
Che differenza c'è fra il convertitore SRT e quello VTT?
Nel comportamento osservabile, nessuna. Sono la stessa routine con un flag, e il flag fa solo sì che la versione WebVTT riconosca per nome il blocco di intestazione WEBVTT — che la versione SubRip scarta comunque, perché quel blocco non ha riga dei tempi e quindi non diventa mai un sottotitolo. Entrambe scartano i blocchi NOTE e STYLE, entrambe accettano una virgola o un punto prima dei millisecondi, entrambe accettano una marca con o senza campo delle ore, ed entrambe ignorano ciò che segue la freccia in una riga dei tempi. Con lo stesso file WebVTT, le due pagine restituiscono testo identico. Usa la pagina che corrisponde al tuo file, per tua tranquillità, ma non aspettarti che la pagina VTT ripulisca le etichette di voce né che la pagina SRT rifiuti un .vtt: non succede né l'una né l'altra cosa. L'unica cosa da sorvegliare su entrambe è il conteggio dei sottotitoli sotto la casella di inserimento. Una riga dei tempi malformata fa sparire tutto il suo blocco senza errore, e un conteggio inferiore all'ultimo numero del tuo file è l'unico indizio.
Perché la mia trascrizione ripete la stessa riga due o tre volte?
Perché la sorgente è sottotitolazione a scorrimento. In diretta una riga compare in fondo a una finestra di due o tre righe e poi sale all'arrivo della successiva, e il codificatore registra ogni stato della finestra come un sottotitolo a sé. La stessa frase figura quindi in sottotitoli consecutivi, a volte tre volte, e il file è un verbale fedele di ciò che era sullo schermo in ogni momento più che di ciò che è stato detto. Il convertitore non deduplica, e non dovrebbe indovinare: una battuta davvero ripetuta per effetto ha esattamente lo stesso aspetto nel file. Togliere le ripetizioni è una rilettura — ordinare le righe per trovarle distrugge la sequenza, quindi procedi in ordine. Se puoi influire sulla sorgente, chiedi sottotitoli che compaiano in blocco: ogni frase è scritta una volta sola e la trascrizione esce pulita.
Voglio il testo ma anche i tempi. Che cosa devo usare?
Non questo convertitore, che toglie i tempi per progetto e non offre modo di conservarli. Usa invece il convertitore da SRT a CSV: scrive una riga per sottotitolo con indice, inizio, fine e testo, così i tempi stanno nelle loro colonne e il testo resta leggibile e ricercabile. Quella forma è anche quella che vuoi se la trascrizione sarà modificata o tradotta da qualcun altro, perché tiene ogni riga legata al momento a cui appartiene e può essere riconvertita in un file di sottotitoli dopo. Il testo semplice è l'output giusto quando la destinazione è prosa — un riassunto, un indice di ricerca, un documento — e quello sbagliato non appena qualcuno a valle debba sapere quando una cosa è stata detta.

Articoli che potrebbero interessarti

Tutte le guide
TutorialSottotitoli fuori sincrono: misurare lo scarto e spostare un SRT di un numero esatto di secondiMisura lo scarto in due punti invece di indovinarlo una volta sola. Se è costante, un solo spostamento sistema il file. Se cresce, è un problema di frame rate — 25 fps contro 23,976 deriva di 2,5625 secondi al minuto — e nessuno spostamento lo risolverà.TutorialDai sottotitoli al foglio di calcolo, e ritorno: che cosa sopravvive al viaggioUna virgola viene protetta, una virgoletta raddoppiata e un sottotitolo su due righe conserva entrambe — verificato byte per byte su tre viaggi consecutivi. Ciò che può ancora alterare il file è il foglio di calcolo in mezzo.TutorialUnire due tracce di sottotitoli in una versione bilingue: che cosa succede davvero ai sottotitoliIl sottotitolo 12 della traccia inglese non è il sottotitolo 12 di quella francese, perché i traduttori spezzano e uniscono le frasi in modo diverso. Esistono due strategie per accoppiarli; questo strumento non ne usa nessuna: intercala. Ecco che cosa ne esce e quando basta.TutorialTirare fuori l'audio da un video senza una seconda generazione di perditaLa colonna sonora dentro il tuo video è già passata una volta per un codificatore con perdita. Che estrarla ti costi un secondo passaggio dipende interamente da quale dei tre pulsanti premi — e «estrai in MP3», quello a cui tutti si buttano, è quello che costa.TutorialPortare un video sotto il limite di caricamento senza tirare a indovinareIl cursore della qualità non sa puntare a una dimensione di file: non è il suo compito. Ma il limite e la durata della tua clip fissano già il bitrate che puoi spendere, e una divisione ti dice se la risoluzione che usi può anche solo starci.GuidaEstrarre fotogrammi fissi da un video — e perché sembrano più molli del videoDietro tre pulsanti si nascondono tre comandi: un fotogramma a un istante dato, un numero fisso distribuito sul clip, o uno ogni N secondi. Ecco gli argomenti esatti, il tetto di 60 fotogrammi e il motivo per cui un fotogramma preso da metà di un clip compresso non sarà mai nitido quanto un fotogramma chiave.

Strumenti correlati

SubRip non ha una specifica. La Library of Congress lo registra come solo in parte documentato e mal normalizzato, quindi che cosa sia un file .srt valido lo decide il lettore, il codificatore o la piattaforma che lo legge, e prima o poi due di essi non saranno d'accordo. Tutto ciò che è descritto qui è stato verificato sull'output reale dello strumento e non su una norma, perché per questo formato non ne esiste alcuna. WebVTT è diverso — ha una specifica pubblicata dal W3C — ma resta un Candidate Recommendation Draft e non una raccomandazione conclusa. Conserva il file originale, prova quello convertito nel lettore o nel servizio di caricamento che intendi davvero usare prima di buttare qualcosa, e considera ogni affermazione su ciò che fanno «tutti i lettori», comprese quelle di questa pagina, come qualcosa da verificare sul tuo.

Fonti

Hai notato un errore in questo articolo?