Andare al contenuto principale
SubtitleMatrix

Convertire ASS in SMI

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

Cosa cambia questa conversione

3 elementi vengono scartati o richiedono una decisione

  • Stile

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

  • 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 SMI, il formato SAMI che i lettori multimediali usano per i sottotitoli sincronizzati. Ogni riga Dialogue diventa un tag <SYNC Start=…> seguito dal testo in un paragrafo, e subito dopo un blocco <P>&nbsp; riporta lo schermo al vuoto, perché un SYNC sostituisce ciò che era visibile.

L’enfasi sopravvive, scritta nel testo come tag: grassetto, corsivo, sottolineato e colore escono come <b>, <i>, <u> e <font color="…">, che i browser rispettano. Ciò che SMI non trasporta è la tabella di stile su cui ASS si appoggia: carattere, corpo, contorno, ombra e margini spariscono. Il karaoke perde i tempi e conserva le sillabe, mentre le sezioni fuori dagli eventi — [Script Info], le righe Comment:, i caratteri in [Fonts] e i disegni in [Graphics] — vengono scartate. Le posizioni sopravvivono, perché SMI sa collocare il testo.

I tempi restano al millisecondo: 0:00:04.13 diventa Start=4126, le interruzioni di riga diventano <br> e il testo non cambia. Un file o una stagione intera, in coda, con un solo ZIP.

Esempi

Un file ASS tipico, convertito in SMI

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

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P>Hello there.
<SYNC Start=4000>
<P>&nbsp;
<SYNC Start=5000>
<P><i>Italic</i> and <b>bold</b> text.
<SYNC Start=8500>
<P>&nbsp;
<SYNC Start=9000>
<P>Positioned
<SYNC Start=12000>
<P>&nbsp;
<SYNC Start=13000>
<P><c>ka</c><c>ra</c><c>o</c><c>ke</c>
<SYNC Start=16000>
<P>&nbsp;
<SYNC Start=17000>
<P>Line one<br>Line two
<SYNC Start=20000>
<P>&nbsp;
<SYNC Start=21000>
<P>Top left
<SYNC Start=24000>
<P>&nbsp;
</BODY>
</SAMI>

In questo output si perdono: lo stile, 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

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P>Hello, world
<SYNC Start=4000>
<P>&nbsp;
<SYNC Start=5000>
<P>{\fad(300,300)}Unmodelled override
<SYNC Start=8000>
<P>&nbsp;
<SYNC Start=9000>
<P>Both, wrong order
<SYNC Start=12000>
<P>&nbsp;
<SYNC Start=13000>
<P>One decimal centisecond
<SYNC Start=16500>
<P>&nbsp;
<SYNC Start=17000>
<P>Soft<br>break
<SYNC Start=20000>
<P>&nbsp;
</BODY>
</SAMI>

Il copione irregolare porta una tabella incompleta e un evento senza testo: l’SMI conserva solo i blocchi validi, con i tempi riparati.

Domande frequenti

Quale stile sopravvive da ASS a SMI?

L’enfasi, scritta nel testo come tag: grassetto, corsivo, sottolineato e colore escono come `<b>`, `<i>`, `<u>` e `<font color="…">`, che i browser rispettano. Ciò che il file SMI non trasporta è la tabella di stile su cui ASS si appoggia: carattere, corpo, contorno, ombra e margini spariscono, e la pagina che incorpora i sottotitoli li formatta con il proprio CSS.

Che fine fa il karaoke da ASS a SMI?

Il tempo sparisce, le parole restano: i codici `\k`, `\kf` e `\ko` non hanno corrispondente in SMI, e le sillabe arrivano come testo normale, senza evidenziazione progressiva.

Che fine fanno [Script Info] e il resto del copione nell’SMI?

Solo le righe `Dialogue:` diventano sottotitoli. Il blocco `[Script Info]` (titolo compreso, perché SMI non ha dove metterlo), la tabella di stile, le eventuali righe `Comment:` e ciò che è incorporato in `[Fonts]` o `[Graphics]` vengono scartati. Per un copione con lo stile scritto a mano è la perdita più visibile.

Che aspetto ha l’output quando ASS diventa SMI?

Ha l’aspetto di SMI: niente numeri di blocco e niente riga di tempo; ogni blocco è un tag `<SYNC Start=…>` con il testo in un `<P>`, seguito da un `<P>&nbsp;` che riporta lo schermo al vuoto.

I tempi ASS sono esatti nel file SMI?

Sì, al millisecondo: ASS scrive `0:00:04.13` e SMI scrive `Start=4126`. Nulla viene arrotondato e un blocco visibile per 2,9 secondi resta tale.

Come esce un blocco ASS di due righe in SMI?

Come due righe unite da un `<br>`: il blocco resta uno solo e il lettore le mostra entrambe nella stessa schermata.

Gli eventi ASS restano in ordine nell’SMI?

Sì: prima di generare i blocchi SYNC l’elenco viene ordinato per tempo di inizio, quindi l’SMI risulta cronologico.

Posso riconvertire l’SMI in ASS?

Sì, e quella direzione ha una lista propria: da SMI ad ASS si perdono precisione e contenuti specifici del formato, perché l’ASS non ha le regioni né gli attributi propri di SMI.

L’output SMI mantiene la codifica del file ASS?

No: l’SMI è scritto in UTF-8 con fine riga Unix e senza BOM. La codifica del copione viene gestita in ingresso, e il pannello segnala se c’è stata una ricodifica.

Strumenti correlati