Da SRT a testo: ottenere una trascrizione pulita dai sottotitoli
Pubblicato il 05/08/2026 · 13 min di lettura · Strumenti per sviluppatori
Daniel Okonkwo — Sviluppatore front-end e redattore Tech presso OneKitly
Performance web · Formati di file
Verificato su 3 fonti
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.
| Elemento | Come compare nel file | Che cosa fa il convertitore | Che cosa resta a te |
|---|---|---|---|
| Numero e riga dei tempi | 1 / 00:00:01,000 --> 00:00:04,000 | Rimossi | Nulla |
| Intestazione WebVTT, blocchi NOTE, STYLE, REGION | WEBVTT / NOTE Trascritto l'11-02-2026 | Rimossi | Nulla |
| Identificatore e impostazioni del sottotitolo | hello-1 / align:start position:10% | Rimossi | Nulla |
| Etichette di corsivo, grassetto e colore | <i>…</i>, <b>…</b>, <font color="#ffff00">…</font> | Conservate tali e quali | Togli le etichette accoppiate prima delle parentesi |
| Comando di posizione e descrizioni sonore | {\an8}, [GABBIANI], [MUSICA] | Conservate tali e quali | Cancella il comando; decidi delle parentesi quadre |
| Trattini di dialogo ed etichette di voce | - L'hai visto? / <v Roger Bingham> | Conservati tali e quali | Trasformali nelle indicazioni di parlante che vuoi |
| Una frase distribuita su due sottotitoli | Il sottotitolo 1 s'interrompe a metà proposizione, il 2 inizia minuscolo | Due righe separate, in entrambe le modalità | Unisci a mano: niente punteggiatura alla fine, niente maiuscola all'inizio |
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 →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
- W3C — WebVTT: The Web Video Text Tracks Format, Candidate Recommendation Draft of 20 May 2026 — defines the WEBVTT header, NOTE comment blocks, STYLE blocks, REGION definition blocks, the optional cue identifier, the cue settings list after the arrow, and the cue voice span whose start tag v carries an annotation naming the speaker
- Library of Congress — Sustainability of Digital Formats, FDD000569, SubRip Subtitle format (SRT): describes the four components of a cue — counter, start and end time separated by two hyphens and a right angle bracket, one or more lines of text, blank line — and records that the SubRip software supported a limited set of text formatting derived from HTML tags including bold, italic, underline and colour
- Matroska — Subtitles technical page: when SRT is muxed into Matroska the cue text is converted to UTF-8 as S_TEXT/UTF8 and placed in the block, and because there are no general settings for SRT the CodecPrivate is left blank — the container carries the text and the timing, and nothing else
Hai notato un errore in questo articolo?