Como Traduzir um Ficheiro SRT sem Estragar a Temporização
Traduza um ficheiro SRT sem estragar a temporização: porque um tradutor genérico destrói os códigos de tempo, quatro métodos que não o fazem, e como verificar.
Para traduzir um ficheiro SRT e manter a temporização, use uma ferramenta que interprete o formato de legendas em vez de uma que trate o ficheiro como texto corrido. Uma ferramenta compatível com o formato lê o número do bloco, a linha de código de tempo e o texto como três coisas separadas, traduz apenas a terceira, e devolve as outras duas exatamente como estavam.
Todo o ficheiro de legendas traduzido que sai danificado remonta ao mesmo erro: o ficheiro inteiro foi parar a um tradutor genérico, que não tinha forma de saber quais linhas sustentavam a estrutura.
Por que motivo traduzir um SRT estraga a temporização?
Um bloco de SRT tem quatro partes, e apenas uma delas é linguagem:
2
00:00:04,120 --> 00:00:06,480
The timings live on the line above.
A translator must never touch it.
O número identifica a legenda. A linha de código de tempo, com os milissegundos separados por vírgula e a seta -->, é a temporização. O texto é a legenda propriamente dita. A linha em branco é o separador que diz a um interpretador que o bloco terminou.
Um tradutor genérico vê um único documento a conter as quatro partes. Não tem motivo para tratar 00:00:04,120 --> 00:00:06,480 como sintaxe, por isso três coisas correm mal, normalmente em conjunto:
- As legendas fundem-se. A linha em branco entre blocos é espaço em branco para um tradutor de texto corrido, e se não sobreviver à viagem de ida e volta, duas legendas tornam-se um único parágrafo. Tudo o que vem a seguir fica agora desalinhado com o áudio.
- Os blocos são renumerados ou reordenados. Reformular parágrafos baralha os números de índice, e alguns interpretadores recusam o ficheiro por completo, enquanto outros o renumeram silenciosamente e deslocam as legendas.
- Os códigos de tempo são reformatados. Um espaço acrescentado à volta da seta, uma vírgula transformada em ponto, um campo de milissegundos preenchido de forma diferente — qualquer um destes é suficiente para tornar a linha impossível de interpretar.
Há uma quarta falha que nada tem a ver com o tradutor. A codificação. Um ficheiro com carateres acentuados ou uma escrita não latina, guardado em Latin-1 ou Windows-1254 em vez de UTF-8, aparece como lixo em metade dos leitores que o abrem. Guarde sempre os ficheiros de legendas em UTF-8 e este problema desaparece de vez.
O sinal revelador é que um ficheiro danificado muitas vezes ainda parece bem quando se passa os olhos por ele. O texto está no idioma certo, os códigos de tempo continuam lá, e nada salta à vista. Falha quando um leitor tenta interpretá-lo, ou, pior ainda, interpreta-o e reproduz com um desvio de dois segundos.
As quatro formas de traduzir um SRT
Da mais rápida à mais controlada:
- Subtitle Edit — gratuito, código aberto, tradução incorporada, funciona localmente.
- Um tradutor online compatível com o formato — carregue o ficheiro, receba outro de volta.
- Um LLM com um prompt rigoroso — o melhor controlo de terminologia, precisa de verificação.
- Uma aplicação de computador que trata a tradução como uma camada — vários idiomas a partir de uma só linha do tempo.
As quatro mantêm os códigos de tempo intactos, se forem usadas corretamente. Diferem no custo, na privacidade e em quantos idiomas está a produzir.
Método 1: Subtitle Edit
A resposta gratuita, e aquela por onde a maioria das pessoas devia começar.
O Subtitle Edit é de código aberto, funciona em Windows, macOS e Linux, e tem uma função de Tradução Automática que substitui o texto em memória e deixa a estrutura de blocos intacta por construção. Oferece vários motores — DeepL e Google, se tiver chaves, LibreTranslate, se alojar o seu próprio servidor, e modelos locais através de Ollama, llama.cpp ou qualquer endpoint compatível com OpenAI.
- Abra o
.srtno Subtitle Edit. - Escolha Tradução Automática e selecione um motor e o idioma de destino.
- Reveja o resultado na vista de lista, onde o original e a tradução ficam lado a lado.
- Guarde como um novo ficheiro, em UTF-8.
O caminho do modelo local é o que vale a pena conhecer: não precisa de chave de API e nada sai da máquina, o que o torna o único método gratuito nesta página que também é privado. A contrapartida é que um modelo local pequeno traduz visivelmente pior do que o DeepL em pares europeus, e vai ter de editar mais.
Método 2: um tradutor online compatível com o formato
Carregue o ficheiro, escolha um idioma, transfira o resultado. O DeepL aceita um .srt como tipo de documento e devolve um .srt traduzido com a estrutura intacta; quantos documentos pode processar depende do seu plano. Vários sites dedicados a tradução de legendas fazem o mesmo.
É o caminho mais rápido para um ficheiro num idioma, e a qualidade nos principais pares europeus é a melhor dos quatro métodos, sem qualquer configuração.
Há duas coisas a saber antes de o usar. O ficheiro é carregado, por isso é o método errado para qualquer coisa confidencial — uma montagem ainda não lançada, imagens de um cliente, a gravação de uma reunião interna. E um tradutor de documentos não lhe dá qualquer controlo sobre terminologia: nomes de produtos, nomes de personagens e jargão são traduzidos juntamente com tudo o resto, que é exatamente o que não se quer para nomes.
Método 3: um LLM com um prompt rigoroso
Este é o que dá o melhor controlo de terminologia dos quatro, porque pode dizer ao modelo o que não deve traduzir. É também o método com mais probabilidade de corromper o ficheiro em silêncio, por isso o passo de verificação não é opcional.
Um prompt que funciona:
Translate the subtitle text below from English into German.
Rules:
- Output exactly the same number of subtitle blocks as the input.
- Copy every block number and every timecode line unchanged, character for character.
- Translate only the subtitle text lines.
- Keep the blank line between blocks.
- Do not merge, split, reorder or renumber blocks.
- Do not translate these terms: [list product and character names here]
- Keep each translated line roughly the length of the original.
Trabalhe em grupos de 50 a 100 blocos, em vez de colar um filme de duas horas de uma só vez. É nas entradas longas que os modelos começam a fundir legendas e a perder blocos, e fazem-no sem avisar.
Depois verifique. Esta linha única conta as linhas de código de tempo nos dois ficheiros:
grep -c " --> " original.srt translated.srt
Os dois números têm de ser idênticos. Se a tradução tiver um número mais baixo, blocos foram fundidos, e todas as legendas a seguir à fusão ficam agora erradas. Corra esta verificação em todas as traduções feitas por LLM, sempre.
Método 4: traduzir como camada, não como ficheiro
Os três métodos acima partilham todos a mesma forma: tem um ficheiro, produz outro ficheiro, e se quiser oito idiomas faz o mesmo processo oito vezes e gere oito ficheiros.
Uma aplicação de computador pode manter uma única linha do tempo, em vez disso. No Sablate, uma tradução é uma camada acrescentada a uma transcrição já existente, em vez de uma nova tarefa — os limites das legendas são criados uma única vez e todos os idiomas herdam-nos, por isso a questão da temporização não volta a surgir. Cada camada tem o seu próprio estilo e a sua própria fonte de escrita, o que importa no momento em que um idioma precisa de uma escrita que a fonte das legendas não contém.
Há dois caminhos de tradução disponíveis. O Argos funciona offline na sua máquina e nunca envia nada para lado nenhum; o DeepL, o OpenAI e o Claude estão disponíveis se trouxer a sua própria chave de API. Um pormenor honesto sobre o caminho offline: o Argos publica pacotes que emparelham com o inglês de um dos lados, por isso um par como turco para alemão não tem pacote direto e é composto através do inglês como escala intermédia. Funciona, e uma linha de turco para alemão fica ligeiramente mais monótona do que uma de turco para inglês.
O plano gratuito cobre uma camada de tradução offline por tarefa, em vídeos até dez minutos; camadas ilimitadas, os motores na nuvem e a exportação num clique de todos os idiomas fazem parte do Pro. Transfira para Windows ou Mac e traduza um ficheiro antes de decidir seja o que for.
Que método deve usar?
| Método | Custo | Funciona offline | Controlo de terminologia | Melhor para |
|---|---|---|---|---|
| Subtitle Edit | Gratuito | Sim, com um modelo local | Parcial | Um ficheiro, qualquer par de idiomas |
| Tradutor de documentos online | Plano gratuito, depois pago | Não | Não | O melhor resultado mais rápido em pares europeus |
| LLM com um prompt rigoroso | Varia consoante o modelo | Sim, com um modelo local | Sim | Jargão, nomes, um glossário próprio |
| Sablate | Plano gratuito, Pro é $29 pagamento único | Sim | Sim | Vários idiomas a partir de uma só transcrição |
"Tenho um ficheiro e nenhum orçamento." Subtitle Edit. É gratuito, é a ferramenta de legendagem mais capaz desta lista para trabalho de formato, e não vai estragar a sua temporização.
"Preciso da melhor tradução para alemão e o ficheiro não é sensível." Um tradutor de documentos. O resultado do DeepL de inglês para alemão é o que precisa de menos edição de tudo isto.
"O vídeo é confidencial." Subtitle Edit com um modelo local, ou o caminho offline do Sablate. Qualquer método que carregue o ficheiro fica desqualificado, por melhor que seja.
"Vou publicar o mesmo vídeo em seis idiomas." Camadas, não ficheiros. Os métodos por ficheiro multiplicam-se por seis; um fluxo de trabalho em camadas não, e o fluxo de trabalho multilingue explica porque é que a transcrição merece uma revisão cuidadosa antes de tudo o resto começar.
Como evitar que a temporização volte a estragar-se
Três hábitos, pela ordem de quanto tempo poupam.
Verifique a contagem de blocos em todas as traduções. A linha grep acima demora dois segundos e apanha a única falha que é invisível a olho nu. Um ficheiro traduzido com menos blocos do que a origem está danificado, sempre.
Verifique a velocidade de leitura depois de traduzir, não depois de transcrever. Os tempos sobreviveram; o texto é que não ficou com o mesmo comprimento. Do inglês para espanhol ou francês, o texto costuma ficar 20 a 25 por cento mais comprido, e o alemão até 35 por cento, tudo dentro do mesmo número de segundos. Uma linha confortável de 14 CPS passa a uma linha de 17,5 CPS sem um único código de tempo se mexer — os limites de velocidade de leitura explicam o que fazer quanto a isso, e a resposta é sempre mudar as palavras ou a duração, nunca a sincronização.
Mantenha a transcrição de origem como master. Corrija ali os nomes, o jargão e a pontuação antes de traduzir seja o que for. Um apelido corrigido na origem fica corrigido em todos os idiomas; o mesmo apelido corrigido depois é uma edição por idioma, e as edições desalinham-se.
Se algo disto acabar incrustado num vídeo, faça-o por último. A velocidade de leitura numa cópia incrustada é permanente, e o formato para o qual exporta decide se o espectador consegue sequer trocar de idioma.
Traduza o ficheiro, não o vídeo. Mantenha a linha do tempo que já pagou, invista o esforço nas palavras que assentam nela, e verifique a contagem de blocos antes de entregar.