Ir para o conteúdo principal
SubtitleMatrix

Converter ASS para VTT

Conversão de formatosAdvanced SubStation Alpha (ASS)
Ou cole o texto da legenda

O que esta conversão altera

4 coisas são descartadas ou precisam de uma decisão

  • Estilo

    todo o estilo exceto negrito e itálico (cor, contorno, sombra, margens)

  • Posição

    a posição na tela (cada bloco volta à posição padrão)

  • Karaokê

    a sincronização karaokê (destaque por sílaba)

  • Conteúdo específico do formato

    conteúdo que o formato de origem guarda fora de seus blocos (blocos que não são cue, texto de cabeçalho, configurações por bloco, eventos comentados) — o formato de destino não tem lugar para ele

Esta lista vem da matriz de capacidades destes dois formatos, não do arquivo específico que você carregou. Um arquivo específico pode perder mais se usar recursos que o formato permite mas a matriz não modela.

Esta página converte um script ASS para WebVTT. O ASS é o formato que as casas de legenda usam para trabalho com estilo e carrega mais do que o WebVTT comporta — então esta é uma direção com perdas, e vale ler o relatório antes de converter.

Negrito e itálico sobrevivem: os códigos de sobreposição viram as tags de negrito e itálico do VTT. O resto da tabela de estilo não: cores, contorno, sombra e margens são descartados, junto com os estilos nomeados. A posição na tela vai pelo mesmo caminho, porque posicionamento absoluto do ASS não tem contraparte no VTT, cuja única colocação é um conjunto limitado de ajustes de carimbo. O karaokê também não sobrevive: as sílabas continuam como trechos de texto, mas o destaque progressivo desaparece.

Duas notas antes de converter. As seções [Fonts] e [Graphics] são anexos para um renderizador, não legendas, e o VTT não tem seções assim; e códigos de sobreposição que o conversor não modela, como \fad, ficam no texto exatamente como estavam, em vez de serem meio traduzidos. Um arquivo ou uma temporada inteira, no navegador.

Exemplos

Um arquivo ASS comum, convertido para VTT

Entrada

[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

Saída

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

Descartado nesta saída: estilo declarado, posição, karaokê e anexos. O resto confere linha por linha.

A mesma conversão com uma entrada problemática

Entrada

[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

Saída

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

É o tipo de dano que scripts reais trazem: BOM, fins de linha misturados e um carimbo com um decimal só. Compare com o exemplo organizado acima para ver o que o analisador perdoa.

Perguntas frequentes

Que estilo do ASS chega ao VTT?

Negrito e itálico, que viram tags no texto. A camada declarada — fonte, corpo, cor primária, cor de contorno, sombra e margens — fica para trás, junto com os estilos nomeados da tabela; o VTT não tem folha de estilo equivalente para receber esses valores.

O karaokê do ASS vira o quê no VTT?

Vira texto comum. As sílabas aparecem na ordem certa, mas os códigos de karaokê são removidos, então o VTT mostra a linha inteira de uma vez em vez de acender sílaba a sílaba.

O que acontece com as seções [Fonts] e [Graphics]?

Não são levadas. São anexos para o renderizador do ASS — fontes e imagens embutidas — e não legendas; o WebVTT não tem seções para anexos, então o conteúdo não tem onde ser guardado.

Um código como \fad é traduzido?

Não. A política é não mexer no que não é compreendido: códigos de sobreposição sem equivalente ficam no texto exatamente como estavam, em vez de serem traduzidos pela metade ou apagados sem aviso.

Como ficam as posições do ASS no VTT?

São descartadas. O ASS posiciona com coordenadas exatas; o VTT oferece apenas um conjunto limitado de ajustes de carimbo, como align ou position, e o conversor prefere não adivinhar um valor.

Quais são as perdas desta direção, em resumo?

Estilo declarado, posicionamento, karaokê e o conteúdo que só existe no modelo do ASS. O texto, as quebras de linha e os tempos atravessam; o relatório acima lista cada família antes de você baixar.

Ferramentas relacionadas