Andare al contenuto principale
SubtitleMatrix

Convertire ASS in VTT

Conversione dei formatiAdvanced SubStation Alpha (ASS)
Oppure incollare il testo dei sottotitoli

Cosa cambia questa conversione

4 elementi vengono scartati o richiedono una decisione

  • Stile

    tutto lo stile tranne grassetto e corsivo (colore, contorno, ombra, margini)

  • Posizionamento

    il posizionamento sullo schermo (ogni blocco torna alla posizione predefinita)

  • Karaoke

    la temporizzazione karaoke (evidenziazione per sillaba)

  • Contenuto specifico del formato

    il contenuto che il formato di partenza tiene fuori dai suoi blocchi (blocchi non-cue, testo di intestazione, impostazioni per blocco, eventi commentati) — il formato di destinazione non ha un posto per esso

Questo elenco deriva dalla matrice delle capacità di questi due formati, non dal particolare file caricato. Un file specifico può perdere di più se usa caratteristiche che il formato consente ma la matrice non modella.

Questa pagina converte un copione ASS in WebVTT, il formato dei sottotitoli del web. Il risultato conserva la struttura dei blocchi e la timeline, ma lascia a casa quasi tutto ciò che rende un copione ASS un copione: la tabella di stile, i colori, il posizionamento e il karaoke.

Ciò che l’insieme di tag in linea di WebVTT sa esprimere viene tradotto, non incollato: una sequenza in corsivo diventa un tag di corsivo e una in grassetto un tag di grassetto. Il resto viene scartato: carattere, corpo, colore, contorno, ombra, margini, i codici \pos e \an, i tempi \k, \kf e \ko, le sezioni [Script Info], [Fonts] e [Graphics]. Le sillabe del karaoke restano come parole, non come istruzioni di tempo. I codici di override che WebVTT non conosce non vengono inventati né lasciati come testo: sono rimossi, e la conversione li segnala.

Un file o un’intera stagione, con l’ordine dei blocchi ripristinato per tempo di inizio; la conversione gira nel browser e l’output è sempre UTF-8 senza BOM.

Esempi

Un file ASS tipico, convertito in VTT

Ingresso

[Script Info]
Title: Example
ScriptType: v4.00+
WrapStyle: 0

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
Style: Title,Arial,36,&H0000FFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello there.
Dialogue: 0,0:00:05.00,0:00:08.50,Default,,0,0,0,,{\i1}Italic{\i0} and {\b1}bold{\b0} text.
Dialogue: 0,0:00:09.00,0:00:12.00,Title,,0,0,0,,{\pos(320,240)}Positioned
Dialogue: 0,0:00:13.00,0:00:16.00,Default,,0,0,0,,{\k50}ka{\k30}ra{\k20}o{\k10}ke
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Line one\NLine two
Dialogue: 1,0:00:21.00,0:00:24.00,Default,,0,0,0,,{\an7}Top left

Uscita

WEBVTT

00:00:01.000 --> 00:00:04.000
Hello there.

00:00:05.000 --> 00:00:08.500
<i>Italic</i> and <b>bold</b> text.

00:00:09.000 --> 00:00:12.000
Positioned

00:00:13.000 --> 00:00:16.000
<c>ka</c><c>ra</c><c>o</c><c>ke</c>

00:00:17.000 --> 00:00:20.000
Line one
Line two

00:00:21.000 --> 00:00:24.000
Top left

In questo output si perdono: lo stile, il posizionamento, il karaoke e i contenuti specifici del formato. Il resto corrisponde riga per riga.

La stessa conversione su un input irregolare

Ingresso

[Script Info]
; 一份真实的脏文件:BOM + CRLF + 认不出的覆写码 + Comment + 坏时间码
Title: Dirty sample
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,1,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Fonts]
fontname: Arial
!!!!!!!!!!!!!!!!!!!!!!!!!!!!

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Comment: 0,0:00:00.00,0:00:01.00,Default,,0,0,0,,这是一条注释,不该变成字幕
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello, world
Dialogue: 0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\fad(300,300)}Unmodelled override
Dialogue: 0,0:00:09.00,0:00:12.00,Default,,0,0,0,,{\an7\pos(320,240)}Both, wrong order
Dialogue: 0,0:00:13.00,0:00:16.5,Default,,0,0,0,,One decimal centisecond
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Soft\nbreak
Dialogue: 0,0:00:xx.00,0:00:24.00,Default,,0,0,0,,Broken timecode

Uscita

WEBVTT

00:00:01.000 --> 00:00:04.000
Hello, world

00:00:05.000 --> 00:00:08.000
{\fad(300,300)}Unmodelled override

00:00:09.000 --> 00:00:12.000
Both, wrong order

00:00:13.000 --> 00:00:16.500
One decimal centisecond

00:00:17.000 --> 00:00:20.000
Soft
break

Il secondo copione ha una tabella di stile con colonne fuori ordine e un evento con codici sconosciuti: l’output VTT resta pulito e segnala ciò che ha scartato.

Domande frequenti

Perché il karaoke ASS è sparito nel VTT?

WebVTT non ha tempi per sillaba. Le sillabe restano come campionature separate nel testo, quindi una riga karaoke si legge ancora a pezzi, ma i valori `\k` che accendevano ciascuna parte non hanno dove andare. Se serve l’evidenziazione, il file ASS resta il master e il VTT è la versione in testo semplice.

Grassetto e corsivo ASS vengono conservati nel VTT?

Sì: sono le due cose che l’insieme di tag in linea di WebVTT sa esprimere, quindi `{\i1}Corsivo{\i0}` esce come `<i>Corsivo</i>`, e lo stesso per il grasso. Tutto ciò che è più ricco — colore, contorno, ombra, margini, nomi dei caratteri — viene scartato.

Che fine fanno i sottotitoli ASS posizionati nel VTT?

Perdono la collocazione: `\pos(x,y)` e `\an7` sono specifici di ASS, e l’equivalente di WebVTT è un insieme limitato di impostazioni per blocco, non coordinate libere. Il testo compare nella posizione predefinita del lettore.

Dove sono finite le sezioni ASS [Fonts] e [Graphics]?

Non vengono trasferite: incorporano caratteri e immagini che servono al lettore per disegnare il copione, e sono allegati più che sottotitoli. WebVTT non ha una sezione equivalente e non consente di incorporare un carattere, quindi conviene puntare su un carattere di sistema o sullo stile a livello di lettore.

Il copione ASS di un cliente va caricato per essere convertito?

No. Il copione viene letto e riscritto dentro la scheda del browser, quindi nulla di esso — blocchi, `[Script Info]`, tabella di stile — viene inviato altrove. Basta caricare la pagina una volta: anche staccando la rete, la conversione continua a funzionare.

Strumenti correlati