Retour au blog

Comment traduire un fichier SRT sans casser le minutage

Traduire un fichier SRT sans casser le minutage : pourquoi les traducteurs généralistes détruisent les codes temporels, et le test qui repère un fichier cassé.

20 septembre 2026
Sablate Team

Pour traduire un fichier SRT sans perdre le minutage, utilisez un outil qui analyse le format de sous-titres plutôt qu'un outil qui traite le fichier comme de la prose. Un outil qui analyse le format lit le numéro de bloc, la plage horaire et le texte comme trois éléments séparés, ne traduit que le troisième, et réécrit les deux autres exactement tels qu'ils étaient.

Tout fichier de sous-titres traduit et cassé remonte à la même erreur : le fichier entier est passé dans un traducteur généraliste qui n'avait aucune raison de savoir quelles lignes étaient structurelles.

Pourquoi la traduction d'un SRT casse-t-elle le minutage ?

Un bloc SRT comporte quatre parties, et une seule est réellement de la langue :

2
00:00:04,120 --> 00:00:06,480
The timings live on the line above.
A translator must never touch it.

Le numéro identifie la réplique. La plage horaire, avec ses millisecondes séparées par une virgule et sa flèche -->, c'est le minutage. Le texte, c'est le sous-titre. La ligne vide est le séparateur qui indique à un analyseur que le bloc est terminé.

Un traducteur généraliste voit un seul document contenant les quatre. Il n'a aucune raison de traiter 00:00:04,120 --> 00:00:06,480 comme de la syntaxe, si bien que trois choses tournent mal, généralement ensemble :

  1. Des répliques fusionnent. La ligne vide entre deux blocs n'est qu'un espace blanc pour un traducteur de prose, et si elle ne survit pas à l'aller-retour, deux répliques deviennent un seul paragraphe. Tout ce qui suit ce point est désormais désynchronisé de l'audio.
  2. Des blocs sont renumérotés ou réordonnés. Recomposer les paragraphes mélange les numéros d'index, et certains analyseurs refusent carrément le fichier tandis que d'autres le renumérotent en silence et décalent les répliques.
  3. Des codes temporels sont reformatés. Un espace ajouté autour de la flèche, une virgule transformée en point, un champ de millisecondes complété différemment : n'importe lequel de ces changements suffit à empêcher un analyseur de lire la ligne.

Il existe un quatrième mode d'échec qui n'a rien à voir avec le traducteur. L'encodage. Un fichier contenant des caractères accentués ou une écriture non latine, enregistré en Latin-1 ou en Windows-1254 au lieu d'UTF-8, s'affiche en symboles illisibles dans la moitié des lecteurs qui l'ouvrent. Enregistrez chaque fichier de sous-titres en UTF-8, et ce problème disparaît pour de bon.

Le signe qui trompe, c'est qu'un fichier corrompu a l'air correct quand on le survole. Le texte est dans la bonne langue, les codes temporels sont toujours là, rien ne saute aux yeux. Il échoue quand un lecteur essaie de l'analyser, ou pire, il s'analyse et se lit avec deux secondes de décalage.

Les quatre façons de traduire un SRT

Du plus rapide au plus maîtrisé :

  1. Subtitle Edit — gratuit, open source, traduction intégrée, fonctionne en local.
  2. Un traducteur en ligne qui analyse le format — envoyez le fichier, récupérez-en un.
  3. Un LLM avec un prompt strict — meilleur contrôle terminologique, vérification nécessaire.
  4. Une application de bureau qui traite la traduction comme une couche — plusieurs langues à partir d'une seule timeline.

Les quatre préservent les codes temporels si elles sont utilisées correctement. Elles diffèrent par le coût, la confidentialité et le nombre de langues que vous produisez.

Méthode 1 : Subtitle Edit

La réponse gratuite, et celle par laquelle la plupart des gens devraient commencer.

Subtitle Edit est open source, tourne sous Windows, macOS et Linux, et propose une fonction de traduction automatique qui remplace le texte en mémoire et laisse la structure du bloc intacte par construction. Il propose plusieurs moteurs — DeepL et Google si vous avez des clés, LibreTranslate si vous l'auto-hébergez, et des modèles locaux via Ollama, llama.cpp ou n'importe quel endpoint compatible OpenAI.

  1. Ouvrez le .srt dans Subtitle Edit.
  2. Choisissez la traduction automatique, puis un moteur et une langue cible.
  3. Vérifiez le résultat dans la vue en liste, où l'original et la traduction s'affichent côte à côte.
  4. Enregistrez dans un nouveau fichier, en UTF-8.

La voie du modèle local est celle qu'il vaut la peine de connaître : elle ne demande aucune clé API et rien ne quitte la machine, ce qui en fait la seule méthode gratuite de cette page qui soit aussi privée. La contrepartie, c'est qu'un petit modèle local traduit nettement moins bien que DeepL sur les paires de langues européennes, et vous ferez plus de corrections.

Méthode 2 : un traducteur en ligne qui analyse le format

Envoyez le fichier, choisissez une langue, téléchargez le résultat. DeepL accepte un .srt comme type de document et renvoie un .srt traduit avec la structure intacte ; le nombre de documents que vous pouvez traiter dépend de votre formule. Plusieurs sites dédiés à la traduction de sous-titres font la même chose.

C'est la voie la plus rapide pour un fichier dans une langue, et la qualité sur les grandes paires de langues européennes est la meilleure des quatre méthodes, sans aucune configuration.

Deux choses à savoir avant de l'utiliser. Le fichier est envoyé sur un serveur, ce qui en fait la mauvaise méthode pour tout contenu confidentiel — un montage non publié, les rushes d'un client, une réunion interne enregistrée. Et un traducteur de documents ne vous donne aucun contrôle sur la terminologie : noms de produits, noms de personnages et jargon sont traduits avec tout le reste, ce qui est exactement ce que vous ne voulez pas pour des noms propres.

Méthode 3 : un LLM avec un prompt strict

C'est la méthode qui offre le meilleur contrôle terminologique des quatre, parce que vous pouvez indiquer au modèle ce qu'il ne doit pas traduire. C'est aussi la méthode la plus susceptible de corrompre le fichier en silence, ce qui rend l'étape de vérification obligatoire.

Un prompt qui fonctionne :

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.

Travaillez par lots de 50 à 100 blocs plutôt que de coller un film de deux heures d'un seul coup. C'est avec les longues entrées que les modèles commencent à fusionner des répliques et à perdre des blocs, et ils le font sans le signaler.

Vérifiez ensuite. Cette commande d'une ligne compte les lignes de code temporel dans les deux fichiers :

grep -c " --> " original.srt translated.srt

Les deux nombres doivent être identiques. Si la traduction en compte moins, des blocs ont été fusionnés, et toutes les répliques après la fusion sont désormais fausses. Faites cette vérification sur chaque traduction par LLM, à chaque fois.

Méthode 4 : traduire en couche, pas en fichier

Les trois méthodes précédentes partagent toutes la même forme : vous avez un fichier, vous produisez un autre fichier, et si vous voulez huit langues, vous le faites huit fois et gérez huit fichiers.

Une application de bureau peut garder une seule timeline à la place. Dans Sablate, une traduction est une couche ajoutée à une transcription existante plutôt qu'une nouvelle tâche — le découpage des répliques est créé une seule fois, et chaque langue en hérite, si bien que la question du minutage ne se repose pas une deuxième fois. Chaque couche porte son propre style et sa propre police d'écriture, ce qui compte dès qu'une langue a besoin d'une écriture que la police des sous-titres ne contient pas.

Deux voies de traduction sont disponibles. Argos tourne hors ligne sur votre machine et n'envoie jamais rien nulle part ; DeepL, OpenAI et Claude sont disponibles si vous apportez votre propre clé API. Un détail honnête sur la voie hors ligne : Argos publie des paquets qui associent presque toujours l'anglais à l'autre langue, si bien qu'une paire comme turc vers allemand n'a pas de paquet direct et passe par l'anglais comme étape intermédiaire. Cela fonctionne, et une ligne traduite du turc vers l'allemand se lit un peu plus platement qu'une ligne turc vers anglais.

La formule gratuite couvre une couche de traduction hors ligne par tâche, sur des vidéos jusqu'à dix minutes ; les couches illimitées, les moteurs cloud et l'export en un clic de toutes les langues font partie de Pro. Téléchargez-la pour Windows ou Mac et traduisez un fichier avant de décider quoi que ce soit.

Quelle méthode utiliser ?

MéthodeCoûtFonctionne hors ligneContrôle terminologiqueIdéal pour
Subtitle EditGratuitOui, avec un modèle localPartielUn fichier, n'importe quelle paire de langues
Traducteur de documents en ligneFormule gratuite, puis payantNonNonLe résultat le plus rapide sur les paires européennes
LLM avec un prompt strictVariable selon le modèleOui, avec un modèle localOuiJargon, noms propres, glossaire maison
SablateFormule gratuite, Pro à $29 en une foisOuiOuiPlusieurs langues à partir d'une seule transcription

« J'ai un seul fichier et aucun budget. » Subtitle Edit. C'est gratuit, c'est l'outil de sous-titrage le plus capable de cette liste pour le travail sur le format, et ça ne cassera pas votre minutage.

« J'ai besoin de la meilleure traduction en allemand, et le fichier n'est pas sensible. » Un traducteur de documents. Le résultat de DeepL de l'anglais vers l'allemand demande le moins de corrections de tout ce qui figure ici.

« La vidéo est confidentielle. » Subtitle Edit avec un modèle local, ou la voie hors ligne de Sablate. Tout ce qui envoie le fichier sur un serveur est disqualifié, aussi bon soit-il par ailleurs.

« Je livre la même vidéo en six langues. » Des couches, pas des fichiers. Les méthodes par fichier se multiplient par six ; un flux de travail en couches, non, et le flux de travail multilingue explique pourquoi la transcription mérite une relecture attentive avant que tout cela ne commence.

Comment éviter que le minutage ne casse à nouveau

Trois habitudes, dans l'ordre du temps qu'elles vous font gagner.

Vérifiez le nombre de blocs à chaque traduction. La ligne grep ci-dessus prend deux secondes et repère la seule panne invisible à l'inspection. Un fichier traduit qui compte moins de blocs que sa source est cassé, toujours.

Vérifiez la vitesse de lecture après la traduction, pas après la transcription. Le minutage a survécu ; le texte, lui, n'est pas resté de la même longueur. De l'anglais vers l'espagnol ou le français, le texte gagne généralement 20 à 25 % de longueur, et jusqu'à 35 % en allemand, le tout dans le même nombre de secondes. Une réplique confortable à 14 CPS devient une réplique à 17,5 CPS sans qu'un seul horodatage ne bouge — les limites de vitesse de lecture expliquent quoi faire, et la réponse est toujours de changer les mots ou la durée, jamais la synchronisation.

Gardez la transcription source comme master. Corrigez-y les noms propres, le jargon et la ponctuation avant de traduire quoi que ce soit. Un nom de famille corrigé dans la source est corrigé dans toutes les langues ; le même nom corrigé après coup, c'est une modification par langue, et les corrections finissent par diverger.

Si tout cela doit finir incrusté dans une vidéo, faites-le en dernier. La vitesse de lecture dans une copie incrustée est définitive, et le format d'export choisi décide si le spectateur peut changer de langue ou non.

Traduisez le fichier, pas la vidéo. Gardez la timeline que vous avez déjà payée, concentrez l'effort sur les mots qui s'y trouvent, et vérifiez le nombre de blocs avant de livrer.