Convertisseur de sous-titres en texte — SRT, VTT, SBV, ASS

Convertissez des sous-titres SRT, VTT, SBV et ASS en transcription propre. Supprime les codes temporels, recolle les phrases coupées et élimine les répétitions des sous-titres automatiques.

Sous-titres en transcription : retirer les codes temporels est la partie facile

Tous les formats de sous-titres codent la même chose : de courtes tranches de parole épinglées à des codes temporels. Reconvertir cela en prose lisible ressemble à un script de cinq lignes — supprimer les chiffres, supprimer les flèches, coller ce qui reste. Lancez ce script sur un vrai fichier de sous-titres et vous obtenez quelque chose de presque juste, ce qui est pire qu'ouvertement faux puisqu'il faut le lire pour s'en apercevoir.

Deux choses le mettent en défaut. Les sous-titres sont coupés pour tenir sur un écran, pas pour terminer une phrase : les coller naïvement donne de la prose hachée toutes les six mots. Et les sous-titres générés automatiquement défilent, répétant le texte d'une réplique à l'autre, si bien que la concaténation livre chaque phrase deux ou trois fois. Cet outil traite les deux. Envoyez ou collez un fichier ci-dessus et le résultat apparaît aussitôt, dans cet onglet.

Le problème des doublons défilants

C'est celui qui prend les gens de court. Le sous-titrage automatique de YouTube et de la plupart des systèmes en direct n'émet pas des blocs de texte distincts. Il émet une fenêtre mobile, pour que le spectateur voie les mots s'accumuler. Dans le fichier, cela ressemble à ceci :

  • Réplique 1 : les petits ruisseaux font
  • Réplique 2 : les petits ruisseaux font les grandes
  • Réplique 3 : font les grandes rivières

Collées sans réfléchir, vous obtenez « les petits ruisseaux font les petits ruisseaux font les grandes font les grandes rivières » — treize mots là où six ont été prononcés. Sur une conférence d'une heure, cela triple à peu près la longueur et rend la transcription inutilisable pour lire, chercher ou résumer.

Le correctif consiste à ne garder que ce que chaque réplique ajoute. Pour chaque nouvelle réplique, l'outil cherche la plus longue suite de mots qui soit à la fois un suffixe du texte déjà retenu et un préfixe de la nouvelle, puis la supprime. Appliqué à l'exemple ci-dessus, on retrouve « les petits ruisseaux font les grandes rivières » exactement une fois. La comparaison porte sur une fenêtre bornée de mots récents plutôt que sur toute la transcription, ce qui reste rapide sur un fichier de trois heures et évite de supprimer une formule qui se répète légitimement vingt minutes plus tard.

Recoller les phrases

Une ligne de sous-titre est calibrée pour un écran : une quarantaine de caractères, deux lignes à la fois, coupées là où le texte atteignait le bord. Les phrases s'étalent couramment sur trois ou quatre répliques. Garder une ligne par réplique produit un document qui est techniquement la transcription et pratiquement illisible.

Le mode paragraphe accumule les répliques et coupe quand deux conditions se rejoignent : assez de texte s'est amassé pour faire un paragraphe, et la réplique en cours se termine par une ponctuation de fin de phrase. Ainsi une coupure ne tombe jamais au milieu d'une idée. Un plafond strict force tout de même une coupure, car certains locuteurs tiennent très longtemps sans point et un pavé ininterrompu est illisible à sa manière. Un changement de locuteur ouvre toujours un nouveau paragraphe, ce qui compte pour les entretiens et les tables rondes.

Quatre formats, une seule idée

Le format est détecté d'après le contenu du fichier et non d'après son extension, car les fichiers de sous-titres sont renommés en permanence et un .txt contenant du SubRip est chose courante.

  • SubRip (.srt) — un index numérique, une plage de codes temporels à virgule décimale, puis le texte. Le format le plus produit et le plus simple.
  • WebVTT (.vtt) — le standard du navigateur. Décimales à point plutôt qu'à virgule, plus des blocs facultatifs NOTE, STYLE et REGION qui ne sont pas de la parole et sont retirés avant l'analyse. VTT autorise aussi du balisage en ligne : <v Speaker> nomme qui parle, <c.classname> applique un style, et des horodatages nus dans une réplique pilotent la mise en évidence mot à mot façon karaoké. Tout est déballé, et la balise de voix devient une étiquette de locuteur.
  • YouTube (.sbv) — une paire de codes temporels séparés par une virgule sur sa propre ligne, puis le texte. Pas d'index, pas de balisage.
  • Advanced SubStation (.ass et .ssa) — une liste d'événements avec un ordre de colonnes déclaré. L'analyseur lit cette ligne Format: plutôt que de supposer les positions, précisément parce que le champ Text est en dernier pour pouvoir contenir des virgules. Les blocs de commande entre accolades sont des instructions de style et sont retirés ; les sauts de ligne \N deviennent des espaces. La colonne Name, quand elle est renseignée, donne le locuteur.

Locuteurs, bruitages, et ce qu'il faut garder

L'attribution des locuteurs arrive de trois manières selon le format : un champ dédié en ASS, une balise de voix en VTT, ou la simple convention NOM: en début de ligne en SRT, qui n'a aucun champ de locuteur. Les trois sont reconnues et normalisées vers la même sortie. L'heuristique pour la troisième est volontairement étroite — une suite en capitales suivie de deux points — car un préfixe en minuscules correspondrait à des phrases ordinaires contenant des deux-points et déchiquetterait la transcription.

Les indications sonores entre crochets comme [MUSIC], (laughter) et [APPLAUSE] sont conservées par défaut et supprimables d'un commutateur. Ce qui est juste dépend entièrement de l'usage : pour une archive consultable ou un document d'accessibilité elles font partie du contenu ; pour donner une conférence à résumer à un modèle, c'est du bruit.

Trois formes de sortie

Les préréglages couvrent ce que les gens veulent vraiment. La transcription propre donne des paragraphes continus sans codes temporels, pour lire, citer ou confier à un modèle. L'option horodatée garde les paragraphes mais marque chacun de son heure de début : c'est ce qu'il faut quand la transcription sert à revenir à un moment de la vidéo. Les lignes de sous-titres gardent une ligne par réplique avec son code temporel et sans déduplication — au plus près du fichier d'origine, utile quand vous vérifiez les sous-titres eux-mêmes plutôt que de les lire d'un bout à l'autre.

À côté du résultat, l'outil indique le format détecté, le nombre de répliques, le nombre de mots, la durée couverte et le nombre de répétitions supprimées. Ce dernier chiffre est le plus honnête : s'il est élevé, la source était automatique et défilante, et vous voyez exactement quelle proportion du fichier brut n'était que de la redite.

Rien ne quitte le navigateur

Les fichiers de sous-titres ne sont pas toujours publics. Entretiens enregistrés, réunions internes, procédures judiciaires, consultations médicales et rushes non diffusés en produisent tous. L'analyse tourne en JavaScript dans cet onglet : le fichier est lu localement et n'est jamais envoyé. C'est aussi pourquoi la conversion est instantanée et pourquoi changer une option réaffiche aussitôt au lieu de faire un nouvel aller-retour.