web-dev-qa-db-fra.com

Comment extraire une transcription de sous-titrage d'une vidéo YouTube?

Est-il possible d'extraire la transcription de la légende fermée à partir de vidéos Youtube?

Nous diffusons plus de 200 webémissions sur youtube, d’une durée d’au moins une heure. Youtube a des sous-titres codés pour toutes les vidéos, mais il semble que les utilisateurs n’ont aucun moyen de les obtenir.

J'ai essayé l'URL dans ce blog mais cela ne fonctionne pas avec nos vidéos.

http://googlesystem.blogspot.com/2010/10/download-youtube-captions.html

Je vous remercie

39
Minghui Yu

Le document suivant indique que seul le propriétaire de la chaîne peut le faire via l’interface youtube standard: https://developers.google.com/youtube/2.0/developers_guide_protocol_captions?hl=fr

Solution économique: Vous pouvez cliquer sur le bouton "transscript interactif" - et copier le contenu de cette façon . Bien sûr, vous perdez ainsi les millisecondes.

Solution extrêmement bon marché: Un compte youtube partagé - Afin que plusieurs personnes puissent modifier et télécharger des fichiers de légende.

Solution difficile: L’API youtube permet de télécharger et de télécharger des fichiers de légende via HTTP .... Vous pouvez écrire une application pour youtube afin de fournir une interface utilisateur de navigateur permettant le chargement ou le téléchargement de TOUT utilisateur ou utilisateur particulier.

Voici un exemple de projet pour cela en Java http://apiblog.youtube.com/2011/01/youtube-captions-uploader-web-app.html

Voici un exemple très simple de téléchargement efficace pour tout le monde: http://yt-captions-uploader.appspot.com/

15
Peter Buchmann

Voici comment obtenir la transcription d'une vidéo YouTube (si disponible):

  • Allez sur YouTube et ouvrez la vidéo de votre choix. 
  • Cliquez sur le bouton "Plus d'actions" (3 points horizontaux) situé à côté du bouton Partager.
  • Cliquez sur "Ouvrir la transcription"

Bien que la syntaxe soit un peu maladroite, c'est une très bonne solution.

Source: http://ccm.net/faq/40644-youtube-how-to-get-the-transcript-of-a-video

25
Will

Vous pouvez afficher/copier/télécharger un fichier xml codé en timbre du fichier de sous-titres codés sur youtube en accédant

http://video.google.com/timedtext?lang=[LANGUAGE]&v=[YOUTUBE VIDEO IDENTIFIER]

Par exemple http://video.google.com/timedtext?lang=pt&v=WSVKbw7LC2w

REMARQUE: cette méthode ne télécharge pas les sous-titres codés générés automatiquement, même si la langue est correcte (il existe peut-être un code spécial pour les langues générées automatiquement).

14
tony gil

(Obligatoire 'il s'agit probablement d'une interface youtube.com interne susceptible de se rompre à tout moment')

Au lieu de faire un lien vers un autre outil qui fait cela, voici une réponse à la question "comment faire cela"

J'ai utilisé fiddler pour inspecter le trafic HTTP de youtube.com, et la réponse de /api/timedtext contient les informations de sous-titre codé au format XML.

Il semble qu'une réponse comme celle-ci:

    <p t="0" d="5430" w="1">
        <s p="2" ac="136">we&#39;ve</s>
        <s t="780" ac="252"> got</s>
    </p>
    <p t="2280" d="7170" w="1">
        <s ac="243">we&#39;re</s>
        <s t="810" ac="233"> going</s>
    </p>

signifie à l'heure 0 est le mot we've et à l'heure 0+780 est le mot got et à l'heure 2280+810 est le mot going, etc. Cette heure est exprimée en millisecondes, donc pour 3090 vous souhaitez ajouter &t=3 à l'URL.

Vous pouvez utiliser n’importe quel outil pour assembler le XML en quelque chose de lisible, mais voici mon Power BI Desktop script pour trouver des mots comme "privilège":

let
    Source = Xml.Tables(File.Contents("C:\Download\body.xml")),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Attribute:format", Int64.Type}}),
    body = #"Changed Type"{0}[body],
    p = body{0}[p],
    #"Changed Type1" = Table.TransformColumnTypes(p,{{"Attribute:t", Int64.Type}, {"Attribute:d", Int64.Type}, {"Attribute:w", Int64.Type}, {"Attribute:a", Int64.Type}, {"Attribute:p", Int64.Type}}),
    #"Expanded s" = Table.ExpandTableColumn(#"Changed Type1", "s", {"Attribute:ac", "Attribute:p", "Attribute:t", "Element:Text"}, {"s.Attribute:ac", "s.Attribute:p", "s.Attribute:t", "s.Element:Text"}),
    #"Changed Type2" = Table.TransformColumnTypes(#"Expanded s",{{"s.Attribute:t", Int64.Type}}),
    #"Removed Other Columns" = Table.SelectColumns(#"Changed Type2",{"s.Attribute:t", "s.Element:Text", "Attribute:t"}),
    #"Replaced Value" = Table.ReplaceValue(#"Removed Other Columns",null,0,Replacer.ReplaceValue,{"s.Attribute:t"}),
    #"Filtered Rows" = Table.SelectRows(#"Replaced Value", each [#"s.Element:Text"] <> null),
    #"Added Custom" = Table.AddColumn(#"Filtered Rows", "Time", each [#"Attribute:t"] + [#"s.Attribute:t"]),
    #"Filtered Rows1" = Table.SelectRows(#"Added Custom", each ([#"s.Element:Text"] = " privilege" or [#"s.Element:Text"] = " privileged" or [#"s.Element:Text"] = " privileges" or [#"s.Element:Text"] = "privilege" or [#"s.Element:Text"] = "privileges"))
in
    #"Filtered Rows1"
4
Carl Walsh

Choisissez Open Transcript dans la liste déroulante ... située à droite du vote haut/bas et partagez les liens.

Cela ouvrira un div à défilement Transcript sur le côté droit.

Vous pouvez ensuite utiliser Copy. Notez que vous ne pouvez pas utiliser Select All, mais que vous devez cliquer sur la ligne supérieure, puis faites défiler vers le bas à l'aide de la molette de défilement, puis faites un clic droit sur la dernière ligne.

Notez que vous pouvez également effectuer une recherche dans ce texte à l'aide de la recherche de page Web normale.

2
PeterVermont

Vous pouvez télécharger les sous-titres en streaming de YouTube avec KeepSubs DownSub

Vous pouvez choisir parmi la transcription automatique ou les sous-titres fournis par l'auteur. Il offre également la possibilité de traduire automatiquement les sous-titres anglais dans d'autres langues via Google Translate. 

1
Palimondo

Une autre option consiste à utiliser youtube-dl:

youtube-dl --skip-download --write-auto-sub $youtube_url

Le format par défaut est vtt et l'autre format disponible est ttml (--sub-format ttml).

--write-sub
       Write subtitle file

--write-auto-sub
       Write automatically generated subtitle file (YouTube only)

--all-subs
       Download all the available subtitles of the video

--list-subs
       List all available subtitles for the video

--sub-format FORMAT
       Subtitle format, accepts formats preference, for example: "srt" or "ass/srt/best"

--sub-lang LANGS
       Languages of the subtitles to download (optional) separated by commas, use --list-subs for available language tags

Vous pouvez utiliser ffmpeg pour convertir le fichier de sous-titre dans un autre format:

ffmpeg -i input.vtt output.srt
0
nisetama

Je viens de le faire facilement en ouvrant la transcription au début de la vidéo, en cliquant à gauche et en faisant glisser le marqueur 00:00 avec la touche Maj enfoncée sur quelques lignes au début.

J'ai ensuite avancé la vidéo vers la fin. Lorsque la vidéo s'est arrêtée, j'ai cliqué sur la fin de la dernière phrase tout en maintenant la touche Maj enfoncée. Avec CTRL-C, je copiais le texte dans le presse-papier et le collais dans un éditeur.

Terminé!

Mise en garde: assurez-vous qu'aucune RDP-Windows ne partage le presse-papiers ou qu'un logiciel tel que Teamviewer ne s'exécute en même temps, car cette procédure débordera de la mémoire tampon où une grande quantité de texte est copiée.

0
Carey G. Butler