4 méthodes gratuites pour télécharger les sous titres d’une vidéo YouTube
Dans ma quête de faire un article à partir d’une vidéo YouTube, j’ai découvert pas mal de choses que j’avais envie de vous partager. Voici les différentes méthodes que j’ai trouvées, vous en trouverez bien une qui vous conviendra ! J’en profite pour vous dire que certains des outils que j’ai trouvés proposaient un programme d’affiliation, quelques-uns des liens sont donc des liens affiliés et me permettent de toucher un revenu pour le temps que je passe à chercher et à écrire ces tutoriels pour vous. Ce ne sont pas des contenus sponsorisés ; si un outil est nul, je ne vous en parlerai pas.
Voici les différentes méthodes, je les ai classées de la plus simple à la plus difficile.
Méthode 1 : Télécharger les transcriptions de vos propres vidéos YouTube
Bon, il va de soi que si c’est pour télécharger les sous-titres d’une de vos propres vidéos, vous pouvez le faire directement depuis votre compte YouTube. Voici comment procéder :
Étape 1 : Accéder à YouTube Studio
Connectez-vous à votre compte YouTube et cliquez sur « YouTube Studio » dans le menu déroulant de votre profil.
Étape 2 : Naviguer vers la section Sous-titres
Dans YouTube Studio, allez dans « Vidéos », sélectionnez la vidéo souhaitée, puis cliquez sur « Sous-titres ».
Étape 3 : Trouver le sous-titre auto-généré
Recherchez la ligne de langue indiquant « Automatique » dans l’onglet des sous-titres.
Étape 4 : Télécharger votre transcription
Cliquez sur les trois points à côté de « Automatique » et sélectionnez « Télécharger ». La transcription sera téléchargée au format .sbv.
Méthode 2 : Utiliser un site pour télécharger les sous-titres
Voici la méthode la plus simple pour télécharger les sous-titres de n’importe quelle vidéo. Il existe probablement des dizaines de sites, je vais vous en donner plusieurs comme ça au cas où un des liens ne fonctionnerait plus, vous pourrez en essayer d’autres.
Il existe 2 types de sous-titres : ceux avec simplement le texte, et ceux avec ce qu’on appelle le timestamp.
Les sites pour télécharger juste les sous-titres
Je vais commencer avec un exemple → Editby.ai
Pour cette méthode, pas besoin de s’inscrire, vous pouvez directement mettre le lien de votre vidéo YouTube et vous aurez le texte du sous-titre tout d’affilée. Vous pouvez ensuite le télécharger en fichier txt ou le copier dans votre presse-papier.
Voici d’autres sites qui proposent exactement la même fonctionnalité :
- YoutubeChannelTranscripts → lui ne propose que le téléchargement des sous-titres, vous n’avez pas la possibilité de les voir directement sur le site web.
- Yukitools.com → pareil que le premier site, mais juste avec les sous-titres en brut affichés, on ne peut pas télécharger de fichier texte.
Après avoir testé, je me suis dit pas mal, mais est-ce qu’on peut faire mieux ?
Les sites pour télécharger les sous-titres avec le timestamp
Ce qui peut être pratique avec les timestamps, c’est de savoir quand le texte a été prononcé. Si vous souhaitez rédiger un résumé avec l’IA par exemple, cette information supplémentaire lui permettra d’être plus efficace car dans les sites précédents, vous n’avez que le texte sans aucune ponctuation, pas évident.
- VidScript → Ce que j’aime bien avec lui, c’est qu’on a les 3 options : le texte brut, le fichier txt avec les retours à la ligne de chaque phrase, et le fichier csv avec les codes temporels (timestamps).
-
DownSub → Permet de voir le
fichier brut, et de télécharger un fichier
.srt
, type de fichier officiel pour les sous-titres, avec les timestamps inclus. Il permet aussi de traduire les sous-titres directement dans la langue de son choix avant téléchargement. Pourquoi pas. - Youtube-Transcript → Celui-là est très cool, car on peut cliquer sur les sous-titres et cela lance la vidéo à l’endroit où la phrase est prononcée. Vous pouvez aussi voir toutes les langues de sous-titres trouvées sur la vidéo YouTube. Vous pouvez même générer un résumé directement sur leur page. Le seul problème, c’est que j’ai dû relancer l’outil 3 fois avant que ça fonctionne car YouTube bloquait leur programme.
Méthode 3 : Utiliser un outil qui va écouter le son de la vidéo pour recréer des sous-titres
Il y a 2 façons de faire, une gratuite est d’utiliser la reconnaissance vocale de Google Docs, oui oui. Il suffit de la lancer dans un document vierge, de monter le son à fond sur la vidéo avec les sous-titres que vous souhaitez récupérer, et de laisser le texte s’écrire. On est d’accord, c’est quand même long et relou.
La deuxième méthode est d’utiliser des sites web qui proposent cette solution, le problème c’est qu’ils sont tous payants.
Je vous en montre un qui est sympa, il s’appelle Maestra
Comme vous le voyez, vous avez carrément un éditeur de type professionnel pour gérer vos sous-titres sur une vidéo, mais si votre objectif n’est que de récupérer les sous-titres, vous pouvez faire « exporter » en haut à droite et choisir parmi les options.
Il en existe d’autres :
- HappyScribe → je ne l’ai pas testé mais ça a l’air d’être un truc bien pro.
- AmberScript → un autre outil professionnel où la transcription peut carrément être faite par des humains, mais assez cher du coup.
Méthode 4 : Créer son propre script Python pour télécharger les sous-titres d’une vidéo YouTube
Il existe un package Python qui s’appelle
youtube-transcript-api
et qui permet de faire exactement ce
dont on a besoin.
On va créer un nouveau dossier qui contiendra le projet, une fois dedans avec le terminal on installe le package :
- J’utilise poetry pour gérer
mes packages, et je vous recommande de faire de même
poetry add youtube-transcript-api
Vous pouvez ensuite demander à ChatGPT de vous aider à faire le script, exemple :
Je vous donne le script :
from youtube_transcript_api import YouTubeTranscriptApi, TranscriptsDisabled, NoTranscriptFound | |
def get_video_id(url): | |
""" | |
Extract the video ID from a YouTube URL | |
""" | |
if 'youtube.com/watch?v=' in url: | |
return url.split('v=')[1] | |
elif 'youtu.be/' in url: | |
return url.split('be/')[1] | |
else: | |
raise ValueError("Invalid YouTube URL") | |
def fetch_available_languages(video_id): | |
""" | |
Fetch available languages for the YouTube video transcript. | |
""" | |
try: | |
transcript_list = YouTubeTranscriptApi.list_transcripts(video_id) | |
languages = [] | |
# Iterate over the transcript list to get the languages | |
for transcript in transcript_list: | |
languages.append((transcript.language, transcript.language_code)) | |
return languages | |
except TranscriptsDisabled: | |
print("Transcripts are disabled for this video.") | |
return [] | |
except NoTranscriptFound: | |
print("No transcripts found for this video.") | |
return [] | |
def choose_language(languages): | |
""" | |
Display available languages and allow the user to choose one. | |
""" | |
print("\nAvailable languages:") | |
for idx, (language, code) in enumerate(languages): | |
print(f"{idx + 1}. {language} ({code})") | |
choice = int(input("\nEnter the number of the language you want to select: ")) - 1 | |
if choice < 0 or choice >= len(languages): | |
print("Invalid choice. Please run the program again.") | |
exit() | |
return languages[choice][1] | |
def download_transcript(video_id, language_code, output_file): | |
""" | |
Download the YouTube transcript in the selected language and save it to a .txt file. | |
""" | |
try: | |
transcript = YouTubeTranscriptApi.get_transcript(video_id, languages=[language_code]) | |
with open(output_file, 'w', encoding='utf-8') as f: | |
for entry in transcript: | |
timestamp = format_time(entry['start']) | |
f.write(f"{timestamp} - {entry['text']}\n") | |
print(f"Transcript saved to {output_file}") | |
except Exception as e: | |
print(f"Error fetching transcript: {e}") | |
def format_time(seconds): | |
""" | |
Format timestamp from seconds to HH:MM:SS. | |
""" | |
mins, secs = divmod(int(seconds), 60) | |
hrs, mins = divmod(mins, 60) | |
return f"{hrs:02}:{mins:02}:{secs:02}" | |
def preview_transcript(output_file, lines=5): | |
""" | |
Display the first 'n' lines of the transcript. | |
""" | |
try: | |
with open(output_file, 'r', encoding='utf-8') as f: | |
transcript_lines = f.readlines() | |
print("\nPreview of the transcript:") | |
for line in transcript_lines[:lines]: | |
print(line.strip()) | |
except Exception as e: | |
print(f"Error reading the transcript file: {e}") | |
if __name__ == "__main__": | |
url = input("Enter the YouTube video URL: ") | |
video_id = get_video_id(url) | |
# Fetch available languages | |
languages = fetch_available_languages(video_id) | |
if languages: | |
# Ask user to select a language | |
language_code = choose_language(languages) | |
# Download transcript and save to file | |
output_file = f"youtube_transcript_{video_id}_{language_code}.txt" | |
download_transcript(video_id, language_code, output_file) | |
# Preview the first 5 sentences of the transcript | |
preview_transcript(output_file, 5) | |
else: | |
print("No available languages for this video.") |
Et quand on utilise le script, ça donne ça
Avec ça, vous devriez pouvoir intégrer facilement la récupération de transcript dans un projet plus gros, d’automatisation de rédaction d’articles par exemple.
J’espère que vous avez pu trouver la solution qui vous convient.
Passionné(e) par l’IA et avide d’articles comme celui-ci ? Ne rate pas une miette de l’actu et des astuces sur l’intelligence artificielle.
Rejoins la communauté grandissante de La Minute IA, la newsletter qui fait vibrer des milliers de curieux tech comme toi. Inscris-toi maintenant et plonge dans le futur de l’IA, expliqué simplement, en français !
Si tu préfères les contenus vidéos, je t’invite à t’abonner à ma chaîne YouTube.
Mathieu | IA & SEO sur X (Twitter), LinkedIn
Comments