Ir para o conteúdo
OneKitly

De SRT para texto: obter uma transcrição limpa a partir de legendas

Publicado a 05/08/2026 · 13 min de leitura · Ferramentas para programadores

Daniel Okonkwo

Daniel OkonkwoProgramador front-end e redator de Tecnologia na OneKitly

Desempenho web · Formatos de ficheiro

Verificado a partir de 3 fontes

Ver perfil
Em resumo

Este conversor retira exatamente duas coisas: o número da legenda e a linha de tempos. Tudo o que está entre a linha de tempos e o separador em branco passa intacto, o que é uma decisão deliberada e também aquilo que mais gente entende ao contrário. Dê-lhe um ficheiro de legendas e as etiquetas de itálico sobrevivem como <i>…</i>, as de cor como <font color="#ffff00">, a ordem de posição como {\an8}, as descrições sonoras como [GAIVOTAS], os travessões de diálogo como um hífen seguido de espaço, e num ficheiro WebVTT as etiquetas de voz sobrevivem como <v Roger Bingham>, junto com as de classe e as marcas em linha <00:00:07.500> usadas para realce palavra a palavra. O que trata por si, do lado WebVTT, é a estrutura à volta das legendas: o cabeçalho WEBVTT, os blocos de comentário NOTE, os blocos STYLE, os blocos REGION, os identificadores e a lista de definições depois da seta são todos descartados. A segunda coisa a saber é o que faz a opção de fusão. «Juntar cada legenda numa só linha» une as linhas dentro de uma legenda; nunca une uma frase repartida por duas legendas, e nada no ficheiro o permitiria — um corte de legenda decide quanto texto cabe no ecrã, não onde acaba a frase. Uma linha «A questão do porto» seguida de uma legenda «é que nunca chegou a gelar» sai em duas linhas nos dois modos. As legendas rolantes que repetem uma linha também não são depuradas. Conte com uma passagem de localizar e substituir para a marcação e uma releitura para as junções.

Retirar os números e as marcas de tempo é a metade fácil. A que decide se a transcrição se lê são as etiquetas de itálico, os travessões de diálogo, as descrições sonoras e as frases partidas em duas legendas — e este conversor deixa-lhe todas elas.

A metade fácil: números, tempos, linhas em branco

Um ficheiro SubRip são quatro coisas repetidas: um contador, uma linha de tempos, uma ou mais linhas de texto e uma linha em branco que fecha o bloco. Três dessas quatro são andaime. Retire-as e tem uma transcrição: é por aí que começa qualquer conversor de legendas para texto e é aí que todos acertam. Este lê cada bloco, avança até encontrar uma linha com a seta e guarda tudo o que se segue até à linha em branco. O contador é descartado esteja ou não em ordem, pelo que um ficheiro com números duplicados ou desordenados converte-se sem problema.

Uma consequência que convém conhecer: uma legenda sem texto conta na mesma como legenda. Alguns codificadores emitem um bloco vazio para tirar um rótulo do ecrã; o conversor encontra a sua linha de tempos, guarda o nada que se segue e a transcrição abre com duas linhas em branco antes da primeira frase a sério. Inofensivo, mas parece uma falha da sua exportação e não uma peculiaridade da origem, por isso vale a pena reconhecê-lo.

A metade difícil: tudo o que o conversor deixa ficar

O texto de legendas não é texto simples. O programa SubRip original suportava um pequeno conjunto de formatação herdada do HTML — negrito, itálico, sublinhado e cor — e essas etiquetas viajam com o ficheiro. As fansubs e os rips acrescentam mais: {\an8} para subir uma legenda ao topo do quadro quando colidiria com texto incrustado, e descrições sonoras entre parênteses retos como [GAIVOTAS] ou [MÚSICA], próprias da legendagem para surdos. Dois falantes numa mesma legenda marcam-se por convenção com um hífen e um espaço no início de cada linha. Nada disso é retirado aqui, e nada deveria ser retirado sem uma decisão sua: que uma transcrição conserve as suas descrições sonoras depende inteiramente de para que serve.

O WebVTT traz o seu próprio vocabulário, e o tratamento que o conversor lhe dá parte-se claramente em dois. A estrutura à volta das legendas é tratada: a linha de cabeçalho WEBVTT, os blocos de comentário NOTE, os blocos STYLE com CSS, os blocos REGION que definem zonas de deslocamento, o identificador opcional na linha acima dos tempos e a lista de definições que pode seguir a seta — alinhamento, posição, linha, região — são todos removidos, porque nunca estão dentro do corpo da legenda. A marcação dentro do corpo não é tratada de todo. Uma etiqueta de voz, que a especificação define como uma etiqueta de abertura v com uma anotação a nomear o falante, chega à sua transcrição como o texto literal <v Roger Bingham>. As etiquetas de classe chegam como <c.yellow>…</c>. O realce palavra a palavra chega como marcas nuas do tipo <00:00:07.500> plantadas no meio de uma frase.

Limpar isso é um trabalho de localizar e substituir e leva um minuto, mas faça-o pela ordem certa. Retire primeiro as etiquetas emparelhadas, porque apagar só os sinais de menor e maior deixaria para trás texto de atributo órfão. Decida depois o que fazer com os parênteses retos: conserve-os para uma transcrição de acessibilidade, retire-os para uma fonte de tradução. Decida por último sobre os travessões, que levam informação real numa legenda a duas vozes e são puro ruído numa de uma só. Só depois disso vale a pena ler à procura do sentido.

Uma frase, duas legendas: a junção que nenhuma ferramenta pode fazer por si

As legendas cortam-se onde acaba o ecrã, não onde acaba a frase. Uma mesma oração espalha-se frequentemente por duas legendas, e na transcrição isso dá duas linhas que se leem como fragmentos. O conversor oferece uma opção de fusão, e convém ser preciso sobre o que funde: a caixa une as linhas dentro de uma legenda, de modo que uma legenda de duas linhas passa a uma. Não une, nem pode unir, de uma legenda para outra. Testado num ficheiro cuja primeira legenda diz «A questão do porto» e a segunda «é que nunca chegou a gelar», os dois modos devolvem duas linhas separadas.

Não é tanto um defeito como um limite da entrada. Nada num ficheiro SubRip marca onde acaba uma frase; o único sinal disponível é a pontuação e as maiúsculas do próprio texto, e ambas são pouco fiáveis de uma língua para outra. A heurística que funciona bastante bem à mão é simples: junte uma legenda à anterior quando essa anterior não termina em ponto, interrogação, exclamação ou aspa de fecho, e quando a seguinte não começa por maiúscula nem por travessão de diálogo. Aplicada por uma máquina, essa regra destrói os substantivos alemães, as abreviaturas e as reticências; aplicada por um leitor que conhece a língua, leva uns minutos numa transcrição de longa-metragem.

A outra confusão recorrente vem da legendagem em direto. As legendas de difusão costumam rolar: uma linha aparece em baixo e depois sobe quando chega a seguinte, e o codificador escreve os dois estados como legendas distintas, de modo que a mesma frase figura duas ou três vezes seguidas no ficheiro. O conversor não elimina duplicados — não tem por que fazê-lo, já que uma fala realmente repetida também é possível — pelo que uma transcrição de um direto pode sair quase o dobro do comprimento devido. Resolver isso exige uma releitura, e é o melhor argumento para pedir a quem lhe dá o ficheiro a versão que aparece de uma vez em vez da versão rolante.

SRT ou VTT: o mesmo conversor duas vezes

Há dois conversores neste sítio, um para SubRip e outro para WebVTT, e na prática comportam-se de forma idêntica. Ambos leem blocos, ambos ignoram o que não tem linha de tempos, ambos descartam os blocos NOTE e STYLE, ambos aceitam uma vírgula ou um ponto antes dos milissegundos, e ambos aceitam uma marca com ou sem campo de horas. A única diferença formal é que o de WebVTT reconhece e salta pelo nome o bloco de cabeçalho WEBVTT — e o de SubRip descarta-o na mesma, porque um bloco de cabeçalho não contém linha de tempos e por isso nunca chega a ser uma legenda. Testados lado a lado sobre o mesmo ficheiro WebVTT, os dois produzem uma saída idêntica byte a byte.

Isso é cómodo mais do que descuidado: pode colar qualquer dos dois formatos em qualquer das duas páginas e obter a mesma transcrição, que é o que queria. Também significa que nenhuma das duas páginas lhe dirá que o seu ficheiro está mal formado. Se numa linha de tempos faltar a seta ou estiver mal escrita, todo esse bloco desaparece em silêncio da saída em vez de provocar um erro, e o único sintoma é uma contagem de legendas inferior à esperada. A contagem aparece por baixo da caixa de entrada; compare-a com o último número do seu ficheiro antes de confiar no resultado.

O que o conversor retira e o que deixa na sua transcrição
ElementoComo aparece no ficheiroO que faz o conversorO que lhe fica a si
Número e linha de tempos1 / 00:00:01,000 --> 00:00:04,000RetiradosNada
Cabeçalho WebVTT, blocos NOTE, STYLE, REGIONWEBVTT / NOTE Transcrito a 11-02-2026RetiradosNada
Identificador e definições de legendahello-1 / align:start position:10%RetiradosNada
Etiquetas de itálico, negrito e cor<i>…</i>, <b>…</b>, <font color="#ffff00">…</font>Conservadas tal e qualRetire as etiquetas emparelhadas antes dos sinais
Ordem de posição e descrições sonoras{\an8}, [GAIVOTAS], [MÚSICA]Conservadas tal e qualApague a ordem; decida sobre os parênteses retos
Travessões de diálogo e etiquetas de voz- Viste aquilo? / <v Roger Bingham>Conservados tal e qualConverta-os nas indicações de falante que quiser
Uma frase repartida por duas legendasA legenda 1 corta a meio da oração, a 2 começa em minúsculaDuas linhas separadas, nos dois modosJunte à mão: sem pontuação no fim, sem maiúscula no início
Conversor de SRT para TXTExtrai a transcrição em texto simples de um ficheiro de legendas SRT removendo os números e as marcas de tempo. Cola as legendas e obtém texto limpo — uma legenda por bloco, ou junto em linhas simples — pronto a rever, traduzir ou usar noutra ferramenta. Copia ou descarrega o resultado.Experimentar a ferramenta

Perguntas frequentes

Retira as etiquetas de itálico, os travessões de diálogo e os rótulos [MÚSICA]?
Não. Retira o número da legenda e a linha de tempos, e deixa passar o resto exatamente como está escrito. Testado num ficheiro que reúne todos os casos comuns, a saída continua a conter <i>…</i>, <b>…</b>, <font color="#ffff00">…</font>, a ordem de posição de tipo ASS {\an8}, a descrição sonora [GAIVOTAS], os travessões de dois falantes no início de cada linha e — com entrada WebVTT — a etiqueta de voz <v Roger Bingham>, as de classe como <c.yellow>…</c> e as marcas em linha como <00:00:07.500>. É uma decisão defensável, porque uma transcrição conservar ou não as descrições sonoras depende de para que serve: um registo de acessibilidade quere-as, uma fonte de tradução não. Mas implica que a conversão é um passo de dois. Reserve depois uma passagem de localizar e substituir, e retire pares de etiquetas completos e não só os sinais, ou ficará com texto de atributo órfão como color="#ffff00" no meio da sua prosa.
Uma frase corre por duas legendas. Como a ponho numa só linha?
Não com a caixa de fusão: essa une as linhas dentro de uma legenda, não duas legendas entre si, e o rótulo presta-se a confusão. Verificado num ficheiro em que a legenda 1 corta a meio da oração e a 2 a continua: tanto o modo por blocos como o fundido devolvem duas linhas separadas. A junção tem de ser sua, porque nada no ficheiro a assinala. A regra que funciona é negativa dos dois lados: junte uma legenda à anterior quando essa anterior não termina em ponto, interrogação, exclamação, dois pontos ou aspa de fecho, e quando a atual não começa por maiúscula nem por travessão de diálogo. Faça-o em releitura manual e não em script: abreviaturas, reticências e, em alemão, substantivos com maiúscula quebram-na com frequência bastante para que uma passagem automática custe mais a reparar do que poupa.
Que diferença há entre o conversor de SRT e o de VTT?
Em comportamento observável, nenhuma. São a mesma rotina com um sinalizador, e esse sinalizador só faz com que a versão WebVTT reconheça pelo nome o bloco de cabeçalho WEBVTT, que a versão SubRip descarta na mesma porque esse bloco não tem linha de tempos e por isso nunca chega a ser uma legenda. Ambas descartam os blocos NOTE e STYLE, ambas aceitam uma vírgula ou um ponto antes dos milissegundos, ambas aceitam uma marca com ou sem campo de horas, e ambas ignoram o que segue a seta numa linha de tempos. Com o mesmo ficheiro WebVTT, as duas páginas devolvem texto idêntico. Use a página que corresponde ao seu ficheiro, por descanso mental, mas não espere que a página VTT limpe as etiquetas de voz nem que a página SRT recuse um .vtt: nenhuma das coisas acontece. A única coisa a vigiar em ambas é a contagem de legendas por baixo da caixa de entrada. Uma linha de tempos malformada faz desaparecer todo o seu bloco sem erro, e uma contagem inferior ao último número do seu ficheiro é a única pista.
Porque é que a minha transcrição repete a mesma linha duas ou três vezes?
Porque a origem é legendagem rolante. Em direto, uma linha aparece na parte de baixo de uma janela de duas ou três linhas e depois sobe quando chega a seguinte, e o codificador regista cada estado da janela como uma legenda própria. A mesma frase figura por isso em legendas consecutivas, às vezes três vezes, e o ficheiro é um registo fiel do que estava no ecrã em cada momento mais do que do que foi dito. O conversor não elimina duplicados, e não deveria adivinhar: uma fala realmente repetida por efeito tem exatamente o mesmo aspeto no ficheiro. Retirar as repetições é uma releitura — ordenar as linhas para as encontrar destrói a sequência, portanto faça-o por ordem. Se puder influenciar a origem, peça legendas que apareçam de uma vez: cada frase é escrita uma só vez e a transcrição sai limpa.
Quero o texto mas também os tempos. O que devo usar?
Este conversor não, que retira os tempos por conceção e não oferece maneira de os conservar. Use antes o conversor de SRT para CSV: escreve uma linha por legenda com índice, início, fim e texto, de modo que os tempos ocupam as suas próprias colunas e o texto continua legível e pesquisável. Essa forma é também a que quer se a transcrição vai ser editada ou traduzida por outra pessoa, porque mantém cada linha ligada ao momento a que pertence e pode voltar a ser convertida num ficheiro de legendas depois. O texto simples é a saída certa quando o destino é prosa — um resumo, um índice de pesquisa, um documento — e a errada assim que alguém a jusante precisar de saber quando algo foi dito.

Artigos que podem interessar-lhe

Todos os guias
TutorialLegendas dessincronizadas: medir o desvio e deslocar um SRT um número exato de segundosMeça o desvio em dois pontos em vez de o adivinhar uma vez. Se for constante, um único deslocamento corrige o ficheiro. Se crescer, é um problema de cadência — 25 fps contra 23,976 deriva 2,5625 segundos por minuto — e nenhum deslocamento o corrigirá.TutorialDas legendas para a folha de cálculo, e de volta: o que sobrevive à viagemUma vírgula é protegida, uma aspa é duplicada e uma legenda de duas linhas mantém as duas — verificado byte a byte em três viagens consecutivas. O que ainda pode alterar o seu ficheiro é a folha de cálculo pelo meio.TutorialFundir duas faixas de legendas numa versão bilingue: o que acontece mesmo às legendasA legenda 12 da faixa inglesa não é a legenda 12 da francesa, porque os tradutores partem e juntam as frases de outra maneira. Existem duas estratégias para as emparelhar; este combinador não usa nenhuma — intercala. Eis o que dá e quando chega.TutorialRetirar o áudio de um vídeo sem uma segunda geração de perdaA banda sonora dentro do seu vídeo já passou uma vez por um codificador com perdas. Que extraí-la lhe custe uma segunda passagem depende inteiramente de qual dos três botões carrega — e «extrair para MP3», aquele a que toda a gente vai, é o que custa.TutorialPôr um vídeo abaixo do limite de envio sem adivinharO cursor de qualidade não sabe apontar a um tamanho de ficheiro — não é essa a sua função. Mas o limite e a duração do seu clipe já fixam o débito a que tem direito, e uma divisão diz-lhe se a resolução que usa pode sequer caber.GuiaRetirar imagens fixas de um vídeo — e porque parecem mais moles do que o vídeoTrês comandos escondem-se atrás de três botões: um fotograma num instante dado, um número fixo repartido pelo clipe, ou um a cada N segundos. Eis os argumentos exatos, o teto de 60 fotogramas e a razão por que um fotograma tirado do meio de um clipe comprimido nunca será tão nítido como um fotograma-chave.

Ferramentas relacionadas

O SubRip não tem especificação. A Biblioteca do Congresso descreve-o como parcialmente documentado e mal normalizado, portanto o que conta como ficheiro .srt válido é decidido pelo leitor, pelo codificador ou pela plataforma que o lê, e dois deles acabarão por divergir. Tudo o que aqui se descreve foi verificado na saída real da ferramenta e não numa norma, porque este formato não tem nenhuma. O WebVTT é diferente — tem uma especificação publicada pelo W3C — mas continua a ser um Candidate Recommendation Draft e não uma recomendação concluída. Guarde o ficheiro original, teste o ficheiro convertido no leitor ou no serviço de envio que tenciona mesmo usar antes de deitar fora o que quer que seja, e trate qualquer afirmação sobre o que fazem «todos os leitores», incluindo as desta página, como algo a confirmar no seu.

Fontes

Detetaste um erro neste artigo?