Comment générer et ajouter des sous-titres aux vidéos à l'aide de Python, OpenAI Whisper et FFmpeg
Introduction
À l'heure actuelle, la consommation de contenus vidéo est en pleine expansion, et les sous-titres s'imposent comme un élément clé pour rendre ces contenus accessibles au plus grand nombre. Ils facilitent la compréhension pour les personnes malentendantes ou sourdes, améliorent l'expérience des utilisateurs dans des environnements bruyants et aident à la compréhension des langues étrangères.
La création manuelle de sous-titres est souvent une tâche longue et laborieuse. Heureusement, les progrès de l'apprentissage automatique ont permis le développement d'outils efficaces pour la transcription automatique des vidéos, ouvrant la voie à des solutions de sous-titrage plus rapides et accessibles.
Dans cet article, nous allons détailler l'utilisation de Python, d'OpenAI Whisper et de FFmpeg pour créer et intégrer des sous-titres dans vos vidéos de manière simple et efficace. OpenAI Whisper est un modèle de reconnaissance vocale automatique (RVA) puissant et précis, tandis que FFmpeg est un outil polyvalent pour la manipulation de fichiers multimédias, notamment l'ajout de sous-titres aux vidéos.
Installation des Outils Nécessaires
Avant de débuter, il est impératif d'installer les outils suivants :
1. Python : Téléchargez et installez la dernière version de Python depuis le site officiel : https://www.python.org/
2. OpenAI Whisper : Installez OpenAI Whisper via pip : pip install openai-whisper
3. FFmpeg : Téléchargez et installez FFmpeg adapté à votre système d'exploitation : https://ffmpeg.org/download.html
1. Transcription de la vidéo avec OpenAI Whisper
1.1 Importation des bibliothèques et chargement du modèle
python
import whisper
from pathlib import Path
python
model = whisper.load_model("base")
Ici, nous chargeons le modèle de base de Whisper.
1.2 Chargement et transcription de la vidéo
python
audio_path = Path("./video.mp4")
python
result = model.transcribe(audio_path)
La variable result est un dictionnaire contenant la transcription textuelle, la probabilité de chaque mot, ainsi que leurs temps de début et de fin.
2. Génération d'un fichier de sous-titres (SRT)
2.1 Conversion des données de Whisper au format SRT
python
import srt
python
def create_srt_file(result, output_path):
"""Convertit les données de sortie de Whisper en un fichier SRT."""
python
subs = []
for segment in result["segments"]:
start_time = segment["start"]
end_time = segment["end"]
text = segment["text"]
python
start_time_str = format_time(start_time)
end_time_str = format_time(end_time)
python
sub = srt.Subtitle(index=len(subs) + 1, start=start_time_str, end=end_time_str, content=text)
subs.append(sub)
python
with open(output_path, "w", encoding="utf-8") as f:
for sub in subs:
f.write(str(sub))
python
def format_time(seconds):
"""Formate le temps en secondes au format SRT."""
python
hours, remainder = divmod(seconds, 3600)
minutes, seconds = divmod(remainder, 60)
python
return f"{int(hours):02}:{int(minutes):02}:{int(seconds):02},{int((seconds - int(seconds)) * 1000):03}"
python
output_path = Path("./video.srt")
create_srt_file(result, output_path)
3. Ajout des sous-titres à la vidéo avec FFmpeg
python
import subprocess
python
video_path = Path("./video.mp4")
srt_path = Path("./video.srt")
python
ffmpeg_command = [
'ffmpeg',
'-i', str(video_path),
'-i', str(srt_path),
'-map', '0:v', '-map', '1:s',
'-c:v', 'copy',
'-c:a', 'copy',
'-metadata:s:s:0', 'language=fr',
'-y',
str(video_path.parent / 'video_with_subtitles.mp4')
]
python
subprocess.run(ffmpeg_command)
Cette commande FFmpeg reprend les flux vidéo et audio d'origine, y ajoute les sous-titres du fichier SRT et produit une nouvelle vidéo sous-titrée.
Conclusion
En combinant Python, OpenAI Whisper et FFmpeg, vous êtes en mesure d'automatiser la création de sous-titres pour vos vidéos de manière efficace, ce qui vous permet de gagner du temps et de rendre vos contenus plus accessibles.
Voici quelques points essentiels à retenir :
* Sélection du modèle OpenAI Whisper approprié : Il existe divers modèles Whisper, chacun avec des niveaux de précision et de complexité différents. Choisissez celui qui correspond le mieux à vos besoins et à la qualité audio de votre vidéo.
* Vérification de la justesse des sous-titres : Bien que Whisper soit un modèle de RVA puissant, il est conseillé de vérifier l'exactitude des sous-titres générés et de les corriger si nécessaire.
* Options de personnalisation : FFmpeg offre de nombreuses options pour personnaliser l'apparence de vos sous-titres, telles que leur taille, police, couleur, position et synchronisation.
Questions Fréquentes
1. OpenAI Whisper peut-il transcrire des vidéos en plusieurs langues ? Oui, OpenAI Whisper est capable de transcrire des vidéos dans diverses langues. La langue cible peut être spécifiée lors du chargement du modèle.
2. Comment améliorer la précision des sous-titres ? Pour améliorer la précision, utilisez un modèle Whisper plus performant, améliorez la qualité audio de votre vidéo ou corrigez manuellement les erreurs de transcription.
3. Est-il possible d'ajouter des options de sous-titrage dynamiques avec FFmpeg ? Oui, FFmpeg permet de créer des sous-titres dynamiques avec des effets de fondu, des animations et des options de style.
4. Comment utiliser Whisper pour transcrire uniquement des fichiers audio ? Utilisez la fonction whisper.transcribe() en indiquant le chemin du fichier audio comme argument.
5. Y a-t-il des alternatives à OpenAI Whisper ? Oui, il existe d'autres modèles de RVA open source et commerciaux tels que Google Cloud Speech-to-Text, Amazon Transcribe et DeepSpeech.
6. FFmpeg peut-il ajouter des sous-titres à d'autres formats de vidéo ? Oui, FFmpeg prend en charge de nombreux formats vidéo, tels que MP4, AVI, MKV, etc.
7. Comment créer des sous-titres avec différents styles et formats ? Utilisez des bibliothèques Python comme srt pour personnaliser le format des sous-titres et les options de FFmpeg pour le style.
8. Peut-on utiliser cet outil pour sous-titrer des vidéos YouTube ? Oui, téléchargez la vidéo YouTube, ajoutez les sous-titres et republiez la vidéo modifiée sur YouTube.
9. Est-il possible d'intégrer cette fonction dans une application web ? Oui, en utilisant des frameworks comme Flask ou Django, et en intégrant les bibliothèques Python mentionnées, vous pouvez intégrer les fonctionnalités de transcription et d'ajout de sous-titres dans une application web.
10. Où trouver de la documentation supplémentaire sur OpenAI Whisper et FFmpeg ? Consultez la documentation officielle de Whisper sur https://github.com/openai/whisper et celle de FFmpeg sur https://ffmpeg.org/ffmpeg-doc.html.
Mots-clés : #python #openai #whisper #ffmpeg #sous-titres #transcription #vidéo #accessibilité #apprentissage-automatique #RVA #reconnaissance-vocale #traitement-du-langage-naturel #TLN #technologie #programmation #développement #web #applications #youtube #outils #documentation