Ir para o conteúdo principal
SubtitleMatrix

Converter SUP (PGS) em SRT

Entrada de mídiaLegendas em bitmap (PGS / VobSub)

A primeira execução baixa o leitor de texto — cerca de 4 MB mais o modelo de idioma, servidos por este site e em cache no navegador depois disso. Nada é enviado, e o resultado é lido por máquina: revise antes de confiar nele.

Opções

Uma legenda em bitmap é uma imagem de texto, então as palavras têm que ser lidas de volta dela. Diga ao leitor em que idioma as legendas estão escritas: a lista cobre todos os idiomas em que este site é publicado. Legendas em russo lidas com o modelo inglês saem como ruído, não como russo. Só o modelo que você escolher é baixado (os outros nunca são), então trocar custa um download por idioma, em cache depois disso.

Um arquivo .sup é um fluxo PGS, o formato de legendas em imagem usado em discos Blu-ray. Não há um único caractere nele: cada legenda é guardada como um bitmap, junto com uma paleta e o momento em que deve aparecer, e o player a compõe sobre o vídeo. Tirar texto de um arquivo desses significa, portanto, ler as letras de cada imagem. Esta página faz isso na aba com um mecanismo de OCR que o próprio site serve e escreve o resultado como um arquivo .srt.

O formato é uma sequência de segmentos, cada um com um cabeçalho de treze bytes que carrega uma marca de apresentação em unidades de 90 kHz, um tipo e um comprimento. Quatro tipos importam: a definição de paleta (PDS), que mapeia valores de índice para RGB completo via YCbCr; a definição de objeto (ODS), que contém um bitmap codificado por repetição; a composição de apresentação (PCS), que diz quais objetos ficam onde no quadro; e o conjunto de exibição que os empilha. O início de um bloco é a marca de tempo do conjunto de exibição que o mostra. Um fluxo PGS não carrega hora de fim nenhuma — uma legenda fica na tela até o próximo conjunto de exibição substituí-la —, então o fim de cada bloco aqui é o início do próximo, que é exatamente o que um player faz.

Como cada bloco é lido por máquina, o texto é uma leitura e não uma transcrição: uma face serifada em tamanho pequeno, uma fonte incomum ou um contorno pesado podem transformar um caractere em outro. Revise o arquivo antes de confiar nele. Esse aviso não é fórmula de estilo — é o único lugar deste site em que a saída não deriva do que o arquivo diz, e a página o declara em vez de apresentar o resultado como exato.

Escolha o idioma em que as legendas realmente estão escritas. A lista cobre todos os idiomas em que este site é publicado, e cada modelo lê o seu próprio alfabeto. Rodar um modelo inglês sobre legendas japonesas produz ruído em vez de uma tradução ruim, porque o reconhecedor procura formas que não estão lá. Só o modelo que você escolher é baixado, e ele fica em cache depois.

Blocos cujas imagens não produzem texto nenhum — um quadro de fade, um logotipo, um bloco preto — ficam de fora e são contados na lista de perdas em vez de escritos como linhas vazias. Tudo o que era imagem continua imagem em espírito: fonte, cor, contorno e posição na tela não existem em um .srt, e a lista de perdas diz isso uma vez para o arquivo inteiro.

Perguntas frequentes

O que há dentro de um arquivo .sup que torna a conversão para SRT um trabalho de reconhecimento?

Segmentos, não caracteres. Cada legenda em um fluxo PGS é um objeto: um bitmap codificado por repetição de índices de paleta, mais uma definição de paleta que transforma esses índices em RGB. Os únicos valores parecidos com texto no arquivo são as marcas de apresentação, que são inteiros de 90 kHz e não algo que uma pessoa leia. Converter isso para SRT significa pôr cada bitmap em um canvas e reconhecer as letras, e é por isso que o resultado precisa de revisão e que a página pergunta em que idioma as legendas estão.

Por que a última legenda da conversão PGS para SRT termina alguns segundos depois do que deveria?

Porque o PGS nunca diz quando uma legenda termina. Um player mostra uma composição até a próxima chegar ou até o fluxo ser limpo, então a única hora de fim que existe no arquivo é "o início da próxima". Para o bloco final não há próxima; a página lhe dá dois segundos e registra essa escolha na lista de perdas. Se o disco realmente deixou a última linha na tela por dez segundos, a correção honesta é um deslocamento ou uma edição de duração, não um palpite escondido no conversor.

Que modelo de idioma devo escolher na conversão .sup para SRT para legendas com linhas em japonês e em inglês?

Aquele em que está a maioria do diálogo. Um quadro PGS pode misturar alfabetos em uma única linha — uma frase japonesa com um empréstimo inglês escrito em letras latinas é comum —, mas o reconhecedor recebe um modelo por execução, e um modelo treinado em um alfabeto lê o outro como lixo. Se o arquivo realmente alterna entre dois alfabetos, rode-o duas vezes, uma por idioma, e mantenha as linhas que cada passagem acertou: a saída é um .srt simples, então juntar os dois é um diff, não uma reexportação.

As cores das legendas são levadas para o SRT?

Não, e não podem ser. Um .sup codifica cor três vezes: na paleta (que é YCbCr com canal alfa, por bloco), na composição (onde o bitmap fica em um quadro de 1920×1080) e no contorno e na sombra desenhados dentro do próprio bitmap. O SRT não tem nenhum desses espaços. A página lê a luminância de cada pixel para decidir o que é tinta e o que é fundo, que é tudo de que o OCR precisa, e a lista de perdas reporta o estilo uma vez para o arquivo em vez de fingir que as cores sobreviveram.

Alguns blocos saíram vazios ou faltando na conversão PGS para SRT. O que aconteceu com eles?

Uma imagem que não produziu texto foi descartada em vez de escrita como legenda em branco. Isso acontece com quadros de fade-in e fade-out, com blocos que são só um logotipo ou um símbolo e com texto muito pequeno, abaixo do tamanho que o reconhecedor consegue resolver. Cada um é contado na lista de perdas, então o arquivo que você recebe não é silenciosamente mais curto que o arquivo que você entregou. Se a contagem for alta, a causa usual é o modelo de idioma errado ou um fluxo cujos bitmaps são incomumente pequenos.

O arquivo .sup ou suas imagens são enviados a algum lugar?

Não. O reconhecedor roda na aba, e o worker, o núcleo WebAssembly e o modelo de idioma são todos servidos por este site e guardados em cache pelo navegador. As únicas requisições que a página faz são para esses arquivos. Isso importa mais aqui do que em uma página de texto: um fluxo PGS extraído de um disco costuma ser justamente a peça de material que um estúdio ou um advogado menos quer entregar a terceiros, e o ponto inteiro desta página é que eles não precisam.

Ferramentas relacionadas