Le menu des sous-titres est un excellent endroit pour éprouver la solidité réelle de la lecture d’un serveur multimédia. Ouvrez-le sur un remux de Blu-ray, essayez de traduire l’unique piste correcte, et vous mesurez vite la part de la chaîne qui a été improvisée. C’est l’épreuve que nous avons imposée à Quven.
Toutes les pages de produit annoncent « sous-titres pris en charge ». Pourtant, avec un remux dont la seule bonne piste est au format PGS, cette case cochée peut signifier une vidéo bloquée en chargement, un flux de sous-titres vide ou une piste qui dérive au milieu du film. Quelle source parvient donc à quel client, et que fait le serveur quand elle n’est pas du texte brut ?
Ce qui ressemble à une seule fonction s’est révélé être trois systèmes qui se rejoignent dans le lecteur, construits dans l’ordre où les problèmes sont apparus : la traduction de texte à texte pour les pistes qui existent déjà, la reconnaissance optique des sous-titres en image des Blu-ray et des DVD, et la reconnaissance vocale locale pour un fichier dépourvu de point de départ exploitable. Les trois produisent une piste de texte synchronisée.
Les sous-titres de texte ne sont pas automatiquement le cas facile
Une piste SubRip, WebVTT ou ASS intégrée paraît simple, alors que les échecs commencent avant qu’un traducteur ait lu le moindre mot, au moment de choisir la piste à lire. Un même fichier peut contenir plusieurs langues, un commentaire, une piste réservée aux panneaux et des flux en double dont les métadonnées mentent : prendre le premier flux échouerait sur la plupart des disques. L’étape de sélection écarte donc les pistes inutilisables et celles réservées aux passages forcés lorsque les dialogues complets sont demandés, puis retient la plus dense parmi celles qui conviennent. Et si vous choisissez vous-même une mauvaise source, l’échec apparaît là où vous pouvez le constater, par choix délibéré, car basculer discrètement vers une autre piste rendrait le problème impossible à diagnostiquer.
Vient ensuite la partie sans éclat, celle des tâches. Une traduction peut compter des milliers de répliques : un redémarrage en cours de route reprend donc le travail, deux personnes qui demandent la même chose consomment le quota une seule fois, et le résultat tardif d’une tâche annulée ne revient pas s’ajouter comme une nouvelle piste.
Les PGS et les VobSub relèvent du traitement d’image, et non d’un format de texte
Les PGS des Blu-ray, les VobSub des DVD et les sous-titres DVB sont des images dépourvues de texte : chaque sous-titre est une image accompagnée d’une indication de temps, et le moteur de rendu doit comprendre la palette, la transparence et le moment où l’image est effacée avant même que la reconnaissance optique commence. L’approche évidente, qui consiste à extraire quelques PNG puis à lancer la reconnaissance, fonctionne sur un fichier de test propre et échoue sur la plupart des vrais disques. Une chaîne fiable accomplit cinq tâches :
- Elle sélectionne exactement le flux demandé, car une sonde peut tomber sur un autre.
- Elle déduit la synchronisation de chaque réplique des données propres au format, et non de l’ordre d’arrivée des images.
- Elle écarte les images d’effacement transparentes sans perdre une réplique authentique.
- Elle reconnaît le texte localement avec le modèle de langue approprié.
- Elle écrit un WebVTT valide, aux horodatages croissants, qui reste cohérent après deux heures d’un long film.
Le texte rejoint le système de traduction qu’emprunte une piste de texte ordinaire. La reconnaissance des images s’effectue sur votre propre serveur, et seul le texte obtenu peut entrer dans le chemin de traduction du Cloud, après les mêmes contrôles de consentement et d’offre (guide de confidentialité). Le cache de la reconnaissance est indexé sur le contenu décodé de chaque réplique et sur ses minutages exacts, et non sur le titre : deux éditions aux minutages différents ne sont donc jamais confondues.
La reconnaissance vocale est le dernier recours, et ne remplace pas de bons sous-titres
Lorsqu’un fichier est dépourvu de texte intégré exploitable, de sortie d’image exploitable et de fichier voisin, la reconnaissance vocale locale intervient comme ultime solution, et uniquement comme telle. Un bon sous-titre rédigé possède un minutage éditorial, sait qui parle et offre généralement une meilleure formulation qu’un système de reconnaissance : une piste existante passe donc toujours en premier, et cela restera ainsi. Le chemin est délibérément local :
selected audio stream → timestamp-preserving PCM → whisper.cpp → normalised WebVTT → optional translation
Le flux audio sélectionné importe, car un film peut contenir des dialogues doublés ou un commentaire. La tâche appartient au fichier précis que vous avez choisi et préserve la correspondance entre les horodatages du conteneur et les échantillons PCM, faute de quoi les mots s’éloignent lentement des personnes qui les prononcent. La sortie est également validée : les horodatages malformés sont refusés, les répliques sont bornées à la durée du média et les hallucinations sur les silences sont supprimées, tandis que l’audio temporaire disparaît, que la tâche aboutisse, échoue ou soit annulée.
Le résultat est un sous-titre local validé qui ne dépend pas du Cloud et demeure utile si une traduction ultérieure par le Cloud échoue. Whisper et Silero s’installent à la demande, et cette fonction fait partie de Quven depuis la version 1.1.0.
Le modèle utile est une hiérarchie de sources
La règle du produit n’est pas « toujours employer l’IA » :
- Utiliser un sous-titre de texte rédigé éligible lorsqu’il existe.
- Sinon, avec Max, convertir localement en texte un sous-titre en image éligible.
- Seulement ensuite, proposer la reconnaissance vocale locale à partir du flux audio choisi.
Chaque niveau laisse derrière lui une ressource de sous-titres que le lecteur peut lister et réutiliser, qui survit à un redémarrage et signale son étape, et c’est ce qu’exige un serveur multimédia auto-hébergé pour mériter la confiance sur une bibliothèque mêlant remux, DVD, éditions multilingues et, à l’occasion, un fichier sans aucun sous-titre. Pour le déroulement dans le lecteur, lisez comment traduire les sous-titres par IA dans Quven.
Communauté
Commentaires
0 commentaire
Aucun commentaire pour le moment. Lancez la conversation.