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
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/
Voici comment obtenir la transcription d'une vidéo YouTube (si disponible):
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
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).
(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've</s>
<s t="780" ac="252"> got</s>
</p>
<p t="2280" d="7170" w="1">
<s ac="243">we'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"
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.
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.
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
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.