Journal La fin des problèmes de sous-titres mal synchronisés ?

Posté par  . Licence CC By‑SA.
Étiquettes :
64
25
déc.
2018

Salut à toi !

Un petit journal pour te présenter srtsync, mon premier vrai projet open source en Python.

Je me suis largement inspiré de py-webrtcvad

L'idée c'est d'utiliser la détection de parole pour extraire d'une vidéo un signal pouvant servir à synchroniser des sous-titres.

Pour le moment, il ne peut que les étirer et les décaler, mais je pense que ça répond à la majorité des cas.

Je suis ouvert à toutes propositions pour améliorer ce projet.

  • # Commentaire supprimé

    Posté par  . Évalué à 2. Dernière modification le 26 décembre 2018 à 02:32.

    Ce commentaire a été supprimé par l’équipe de modération.

  • # Très bonne idée !

    Posté par  . Évalué à 5.

    Oui, c'est une excellente idée et si ça marche je te tire mon chapeau !

    Quelle nuisance, ces sous-titres décalés…

    Le problème, c'est que parfois le décalage est variable au cours du temps et là, ça sera dur à corriger…

    • [^] # Re: Très bonne idée !

      Posté par  . Évalué à 4.

      Si c'est une question de vitesse, un étirement des sous titres permet de résoudre le problème. Et c'est souvent suffisant.

      Par contre il y a le cas des coupures pub qui ne sont pas coupés de la même manière et/ou des séries qui ont un générique court et un générique long.

      Pour ces cas là pour l'instant je ne peux rien faire. Mais je ne pense pas que ce soit impossible…

      • [^] # Re: Très bonne idée !

        Posté par  . Évalué à 4.

        Le problème, c'est que parfois le décalage est variable au cours du temps et là, ça sera dur à corriger…

        C'est juste que le sous-titre n'a pas été réalisé avec une vidéo source utilisant le même nombre d'images par seconde. Cas typique : une conversion PAL/NTSC
        Un soft comme gnome-subtitles te permet de corriger facilement ce genre de chose.

        Par contre il y a le cas des coupures pub qui ne sont pas coupés de la même manière et/ou des séries qui ont un générique court et un générique long.

        Sur un fichier du genre émission télé où on veut pas se spoiler le premier visionnage en éditant manuellement, ce genre de cas est gérable avec les fonctions de décalage des sous-titres d'un bon lecteur. Sur un lecteur comme VLC c'est mal fichu.

        Bref, pour moi cet outil avec reconnaissance vocale est pratique pour le travail de synchronisation dans une équipe de sous-titrage ou transcription (d'abord un transcript à chaud puis synchronisé avec l'outil) mais pas nécessairement utile pour le spectateur qui veut jusque regarder sa vidéo et au final ça demandera toujours une intervention humaine pour peaufiner le résultat.

        • [^] # Re: Très bonne idée !

          Posté par  . Évalué à 2.

          Bref, pour moi cet outil avec reconnaissance vocale est pratique pour le travail de synchronisation dans une équipe de sous-titrage ou transcription

          Désolé si je n'ai pas été clair, mais il n'y as pas de reconnaissance vocale, juste de la détection d'activité vocale. Mon outil ne fait qu'appliquer une seule fonction de type f(t) = stretch * t + décalage à l'ensemble des sous-titres.
          Si ceux-ci ne sont pas cohérents entre eux, mon outil de sert à rien.

          mais pas nécessairement utile pour le spectateur qui veut jusque regarder sa vidéo et au final ça demandera toujours une intervention humaine pour peaufiner le résultat.

          Je pense tout le contraire justement:
          Ca devrais permettre d'éviter de décaler les sous-titres toutes les 5 min, de ne pas te spoiler la fin de la video en passant par gnome-subtitles et d'aller plus vite qu'avec gnome-subtitles.
          Par la suite ca devrais aussi être plus simple en l’intégrant comme plugin dans kodi par exemple

          • [^] # Re: Très bonne idée !

            Posté par  . Évalué à 2.

            D'accord, en fait j'avais vraiment pas compris le fonctionnement :)

            Ca devrais permettre […]

            C'est bien de montrer le potentiel et la direction que tu veux prendre mais il te reste beaucoup de chemin avant que les arguments que tu présentes ne soient plus au conditionnel. Ici, je ne juge que de l'état actuel comme n'importe quel utilisateur potentiel.

            d'éviter de décaler les sous-titres toutes les 5 min,

            Pour le moment, ce programme ne traite que d'un cas idéal qui est certes le décalage le plus pénible, mais qui est assez rare pour les séries car il y a souvent plusieurs décalages imbriqués.

            de ne pas te spoiler la fin de la video en passant par gnome-subtitles

            Vu que ton prog ne traite qu'un décalage progressif, ça se remarque rapidement dès les deux premières minutes, et tout comme un décalage dû à une recap sequence manquante tu n'as pas besoin d'aller plus loin dans le visionnage.
            Là où tu n'as pas le choix que de te spoiler pour vérifier c'est quand il y a des problèmes de synchro plus lourds comme des coupures pub, un film en deux CDs (pour les anciens DVDRip), un double épisode remis en un dans une édition DVD/BR ou encore les scènes additionnelles ou plus longues d'une director's cut et ça ton outil ne permet pas encore d'y remédier.

            et d'aller plus vite qu'avec gnome-subtitles.

            Je ne trouve pas que cette opération soit beaucoup plus lente à réaliser via un soft d'édition. Au départ oui parce qu'il faut apprendre un peu à utiliser l'outil mais après ça se fait en quelques clics, juste le temps de choisir les bonnes options de conversion des fps. C'est aussi peu compliqué que de désaturer une image avec The Gimp.
            Encore une fois, il n'y a pour l'instant pas de gain significatif de vitesse.

            Par la suite ca devrais aussi être plus simple en l’intégrant comme plugin dans kodi par exemple

            Le seul intérêt de ce programme c'est du confort et de la facilité en automatisant cette tâche et d'en faire un script puis comme tu le dis un plugin. C'est véritablement sur cet argument-là qu'en l'état actuel il sort du lot.

  • # SMPlayer

    Posté par  . Évalué à 10.

    Une fonctionnalité que j'aimais beaucoup dans SMPlayer et que je regrette dans mon VLC aujourd'hui est la possibilité de demander la prochaine ligne de sous-titre.

    En une touche on pouvait dire au sous-titres que "maintenant" affiche la prochaine ligne de dialogue, et décale tout pour que ça soit synchro comme ça.

    En général en quelques appui sur cette touche, je synchronisais. Et si cela se décalait petit à petit, une ou deux fois dans l'épisode un appui supplémentaire réglais la chose.

    Je ne comprends pas pourquoi cette fonctionnalité n'est pas en standard dans tout les logiciels qui gèrent les sous-titres.

    • [^] # Re: SMPlayer

      Posté par  . Évalué à 3.

      C'est vrai que c'est pas idiot comme mechanisme. Plus simple qu'un décalage temporel comme dans vlc ou kodi. J'imagine qu'il faut faire plus de lobbying pour faire connaître cette idée.

      • [^] # Re: SMPlayer

        Posté par  . Évalué à 2. Dernière modification le 27 décembre 2018 à 04:08.

        Plus simple qu'un décalage temporel comme dans vlc ou kodi.

        Ça ne marche que quand les subs sont en retard, pas quand ils sont en avance, d'où l'intérêt du décalage temporel.

        VLC a mis un pas de 50ms de décalage ce qui est ridicule. Je me souviens que BSPlayer avait une fonction similaire mais incrémentée à la seconde, chose qui facilite vraiment la correction à la volée.

        • [^] # Re: SMPlayer

          Posté par  . Évalué à 9. Dernière modification le 27 décembre 2018 à 09:05.

          Ça ne marche que quand les subs sont en retard, pas quand ils sont en avance, d'où l'intérêt du décalage temporel.

          Heu… non, ça marche dans les deux sens, car tu as aussi une touche pour demander la phrase précédente.

          Mon problème principal pour le décalage temporel de VLC n'est pas le pas, mais le fait que je ne sais jamais dans quel sens décaler. C'est peut-être que je suis limité mentalement, mais j'y arrives pas !

          • [^] # Re: SMPlayer

            Posté par  (Mastodon) . Évalué à 6.

            Je confirme que c'est pas évident. Je suis musicien, plutôt doué rythmiquement en plus, et il me faut un certain effort de concentration pour y arriver.

            En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

          • [^] # Re: SMPlayer

            Posté par  . Évalué à 2.

            Heu… non, ça marche dans les deux sens, car tu as aussi une touche pour demander la phrase précédente.

            Ton affirmation de départ parle uniquement du prochain sub, je ne fais que dire que en pratique le décalage se fait dans les deux directions donc une seule touche c'est pas suffisant. Là oui c'est plus cohérent.
            Mais il reste un soucis c'est que le temps que tu entendes le personnage et que tu fasses la manip, il y a un décalage de synchronisation de quelques secondes donc tu es tout de même obligé d'affiner avec le système classique d'offset.

            mais le fait que je ne sais jamais dans quel sens décaler.

            Tu gères le temps de retard (delay) d'affichage des sous-titres. En appuyant sur G le sous-titre s'affiche -100ms en retard, soi 100ms en avance. C'est un coup à prendre.
            Le fait d'avoir un pas assez conséquent te permet de constater rapidement que tu es allé dans le mauvais sens et te permet aussi de ne pas passer trois plombes à revenir à zéro et faire l'opération dans l'autre sens. Ça et le fait que VLC ne réaffiche pas à chaud plusieurs fois la même ligne de sous-titre même quand on fait l'opération dans l'autre sens ça rend la fonction pénible par rapport au vieux BSPlayer ou un Kodi/XBMC personnalisé bien plus agréables à utiliser en comparaison.

            • [^] # Re: SMPlayer

              Posté par  . Évalué à 7. Dernière modification le 27 décembre 2018 à 12:26.

              Mais il reste un soucis c'est que le temps que tu entendes le personnage et que tu fasses la manip, il y a un décalage de synchronisation de quelques secondes donc tu es tout de même obligé d'affiner avec le système classique d'offset.

              Pour l'avoir utilisé des années, ton affirmation prouve que tu n'as pas testé la fonctionnalité. J'arrivais à caler les sous-titres très facilement et de façon précise à l'aide de cette fonction, sans jamais utiliser le système classique d'offset :

              • Je constate que le sous titre est décalé
              • J'appuie plusieurs fois sur la touche avant/après afin de faire apparaître la phrase qui vient d'être dite par le personnage, je suis alors en retard sur le dialogue (très facile car à chaque appui sur une touche la ligne de texte s'affiche à l'écran, alors que lors de l'appui sur les touches de décalage temporel, parfois rien ne s'affiche (à part une valeur obscure de décalage en millisecondes et on ne sait pas alors à quoi s'attendre), parfois la phrase en cours est gardée affichée mais on ne sait pas alors quand cet affichage a commencé.
              • Si d'autres phrases ont été dites entre temps, il suffit d'appuyer n fois sur la touche "ligne de dialogue suivante" afin de rattraper son retard, encore une fois c'est facile.
              • Lorsqu'un personnage prends à nouveau la parole, j'appuie immédiatement sur la touche "ligne de dialogue suivante" (j'avais le doigt dessus). Je suis alors calé, à quelques milliseconde près, mon temps de réaction n'est pas de "quelques secondes" comme tu le dis dans ton commentaire. Si je veux un truc plus précis je peux éventuellement remonter le temps de la vidéo de quelques secondes et je pourrais alors anticiper précisément la ligne de dialogue.

              Tout ce process doit prendre quelques secondes tout au plus (a condition que les personnages parlent…). Et tu peux même le préparer pendant les silences.

              Tu gères le temps de retard (delay) d'affichage des sous-titres. En appuyant sur G le sous-titre s'affiche -100ms en retard, soi 100ms en avance. C'est un coup à prendre.

              Je dois être con mais même avec ton explication, je doit réfléchir intensément pour arriver à comprendre dans quel sens mon sous-titre va se décaler. Et encore je suis pas sur de comprendre :
              "s'affiche en avance" cela veut dire qu'il va s'afficher avant par rapport à ce qu'il était avant la modif ou est-ce qu'il va avancer par rapport à la vidéo (et donc s'afficher après) ? Je pense que c'est la première option mais à chaque fois que j'essaie de caler des sous-titres avec les fonctions temporelles je dois me reposer la question.

              Alors qu'avec ma méthode, pas de souci, car je synchro une ligne de dialogue (discrète) avec une ligne de temps et pas deux lignes de temps à la fois.

              • [^] # Re: SMPlayer

                Posté par  . Évalué à 1. Dernière modification le 27 décembre 2018 à 12:39.

                je confirme

                fini de me prendre la tête avec les décalages en ms !

                maintenant, je vais faire comme ça, sauf quand je devrai passer le sous-titre à un malheureux windowsien (auquel cas, je corrigerai dans un éditeur de sous-titres)

                comme quoi, on apprend des choses même en moulant

                Envoyé depuis mon Archlinux

              • [^] # Re: SMPlayer

                Posté par  . Évalué à 2.

                "s'affiche en avance" cela veut dire qu'il va s'afficher avant par rapport à ce qu'il était avant la modif

                oui c'est ça.
                Mais je pense que ce qui te trompe c'est de parler de caler un sous-titre au lieu de penser uniquement en terme de retard. La fonction s'appelle subdelay en anglais.

                Pour l'avoir utilisé des années, ton affirmation prouve que tu n'as pas testé la fonctionnalité.

                Non parce que tout simplement j'en ai pas l'utilité et j'ai fait autrement. J'ai assimilé la fonction de retard et c'était facile à utiliser avec BSPlayer.
                Puis après en passant à Linux et pour éviter de me battre avec VLC je vérifiais la disponibilité des subs avant de dl une version de la vidéo (en particulier les séries parce que pour les films c'est moins gênant). Et quand pas de hardsub ni de version synchro disponible, je passe par gnome-subtitles que j'ai appris à utiliser en faisant du fansub et en moins de 5 mn c'est résolu définitivement.
                Ça m'a aussi incité à sauter le pas et à me forcer à ne plus utiliser de trad ni même de sous-titres en VO pour du contenu anglophone, ce qui ouvre encore l'horizon sur d'autres contenus.

                Après c'est cool si ça marche.

    • [^] # Re: SMPlayer

      Posté par  . Évalué à 2.

      Par curiosité : pourquoi as-tu remplacé SMPlayer par VLC ?

      • [^] # Re: SMPlayer

        Posté par  . Évalué à 2.

        SMPlayer n'existe pas sur le système que j'utilise actuellement.

    • [^] # Re: SMPlayer

      Posté par  . Évalué à 3. Dernière modification le 27 décembre 2018 à 00:02.

      J'utilise smplayer.
      Comment utilise-t-on cette fonctionnalité dont j'ignorais l'existence ?
      Jusqu'à maintenant, j'ajoute ou enlève des centaines de millisecondes au pifomètre.

      Pardon pour le squat de journal, super projet.

      • [^] # Re: SMPlayer

        Posté par  . Évalué à 1.

        Après une petite recherche sur le web, je suis tombé là dessus : https://aboutdevice.com/top-smplayer-keyboard-shortcut-or-hotkeys/

        A priori il s'agirait des touches R et T (Take subtitle up/down). Ca m'a l'air facile à retenir car ce sont les deux lettres autour du "S" de "Subtitles" dans l'alphabet, et c'est deux touches côte à côte sur le clavier.

        Comme je l'ai expliqué SMPlayer n'est pas disponible sur ma plateforme donc je ne peux pas vérifier.

        • [^] # Re: SMPlayer

          Posté par  . Évalué à 5.

          non, pas le bon axe :-)

          les touches R/T permettent de monter/descendre les sous-titres dans l'espace vertical de l'écran

          les touches G/Y permettent de monter/descendre, dans le temps (phrase précédente/suivante)

          Envoyé depuis mon Archlinux

          • [^] # Re: SMPlayer

            Posté par  . Évalué à 2. Dernière modification le 27 décembre 2018 à 19:17.

            Super

            Merci à vous deux

  • # Aggressiveness

    Posté par  (Mastodon) . Évalué à 5. Dernière modification le 26 décembre 2018 à 11:44.

    Super projet, merci du partage !

    Juste une remarque sur le paramètre aggressiveness : à lire le README, on ne comprend pas trop à quoi il sert, ni quoi mettre comme valeurs.

    Quelques exemples (et la valeur par défaut) seraient les bienvenus :)

    En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

    • [^] # Re: Aggressiveness

      Posté par  . Évalué à 1.

      Bonne remarque, je vais corriger ça au plus vite.

      aggressiveness est une valeur entre 0 et 3 dont le valeur par défaut est 3 et qui caractérise la sensibilité de la détection d'activité vocale. 3 étant le plus sensible.

  • # ca tombe bien

    Posté par  . Évalué à 3. Dernière modification le 26 décembre 2018 à 12:57.

    j'ai un film russe avec des sous titre de qualité mais des décalages vraiment merdique, je ne peux pas proposer cela sans me faire expulser de mon groupe.

    vais essayer ca l'air sexy :)

    prépare toi a être célèbre si cela fonctionne pas trop mal

    • [^] # Re: ca tombe bien

      Posté par  . Évalué à 1.

      N'hésite pas à me faire remonter toutes difficultés. J'ai encore peu de recul sur son efficacité.

      Pour ce qui est de la célébrité, j'ai un peu rater mon coup en publiant le jour de Noël…

  • # Mais c'est génial

    Posté par  (site web personnel) . Évalué à 2. Dernière modification le 22 janvier 2019 à 05:17.

    Hello pums974,

    Je viens de tester ton outil avec un cas concret qui m'embêtait depuis quelques mois. J'ai ouvert la vidéo et… tu sais que tu es génial ? C'est INCROYABLEMENT efficace. Adopté !

    Je l'ai testé sous Windows ; l'installation était sportive, entre autres j'ai dû y installer un compilo C (j'en ferai bien un paquet auto-extractible avec cx_Freeze, que je partagerai ici si tu n'as rien contre).
    Je viens de t'envoyer une pull request pour corriger deux-trois soucis que j'ai rencontrés.

    Merci encore !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.