Découpeur Vidéo Intelligent avec IA local
Objectifs :
- Automatiser le découpage de vidéos d'interviews par thématiques
- Exploiter l'IA locale (Ollama) pour l'analyse sémantique
- Transcription audio précise avec Whisper
- Génération automatique de segments vidéo pertinents
Contexte du projet
Application desktop Windows permettant de traiter automatiquement des vidéos d'interviews pour identifier et extraire des segments thématiques cohérents, sans nécessiter de découpe manuelle chronophage.
Environnement :
- Windows 10/11 (64 bits)
- Python 3.12 avec PyQt5
- FFmpeg pour le traitement vidéo
- Ollama pour l'analyse IA en local
Architecture du système
Pipeline de traitement
1. Vidéos sources (MTS/MP4/AVI)
↓
2. Concaténation automatique (si plusieurs fichiers)
↓
3. Extraction audio → WAV
↓
4. Transcription → Whisper (OpenAI)
↓
5. Analyse thématique → Ollama (local)
↓
6. Génération des segments → FFmpeg
↓
7. Export final → MP4 optimisés
Stack technique
Backend:
whisper: Transcription audio multilingueollama: Modèles LLM locaux pour l'analyseffmpeg-python: Manipulation vidéo/audiotorch: Framework ML pour Whisper
Frontend:
PyQt5: Interface graphique nativelibrosa: Traitement audio- Système de logs intégré
Étape 1 : Installation des prérequis
FFmpeg (traitement vidéo)
Installation :
# Télécharger depuis https://www.gyan.dev/ffmpeg/builds/
# Extraire dans C:\ffmpeg
# Ajouter au PATH : C:\ffmpeg\bin
Vérification :
ffmpeg -version
Explication :
- FFmpeg = Outil de référence pour manipuler vidéos/audio
- Utilisé pour concaténer, extraire audio, découper les segments
- Version complète nécessaire (incluant libx264, aac)
Ollama (modèles IA locaux)
Installation :
# Télécharger depuis https://ollama.ai/download
# Installer l'application
# Télécharger un modèle :
ollama pull qwen2.5:3b
Modèles disponibles :
| Modèle | Taille | RAM | Forces | Cas d'usage |
|---|---|---|---|---|
| qwen2.5:3b | 2 GB | 4 GB | Léger, rapide, bon raisonnement | Recommandé - Analyse de texte, thématisation |
| gemma2:2b | 1.6 GB | 3 GB | Très léger, rapide | PC limités en RAM, tests |
| mistral:7b | 4 GB | 8 GB | Excellent raisonnement, précis | Analyse complexe, nuances fines |
| llama3.1:8b | 4.7 GB | 10 GB | Multilingue, polyvalent | Multilangue, transcriptions mixtes |
| phi3:3.8b | 2.3 GB | 6 GB | Optimisé Microsoft, efficace | Alternative à Qwen |
Explication :
- Ollama = Plateforme pour exécuter des LLM en local (sans cloud)
- Analyse le contenu textuel pour détecter les changements de thème
- Pas de coût API, confidentialité des données garantie
- Modèles optimisés pour CPU (pas de GPU requis)
Configuration dans le projet :
Fichier src/config.py:23
OLLAMA_MODEL = "qwen2.5:3b" # Modifier ici pour changer de modèle
Python et dépendances
Installation automatique :
# Double-cliquer sur install.bat
# OU manuellement :
python -m venv venv_312
venv_312\Scripts\activate
pip install -r requirements.txt
Dépendances principales :
openai-whisper: Modèle de transcriptiontorch: Backend pour Whisperollama: Client Python pour OllamaPyQt5: Interface graphiqueffmpeg-python: Wrapper Python pour FFmpeg
Étape 2 : Configuration des modèles
Whisper (transcription)
Fichier src/config.py:18
WHISPER_MODEL = "medium" # Options : tiny, base, small, medium, large
WHISPER_LANGUAGE = "fr"
Comparaif des modèles Whisper :
| Modèle | Taille | RAM | Vitesse | Qualité | Usage |
|---|---|---|---|---|---|
| tiny | 75 MB | 1 GB | 32x | Moyenne | Tests rapides |
| base | 145 MB | 1 GB | 16x | Correcte | Vidéos courtes |
| small | 488 MB | 2 GB | 6x | Bonne | Bon compromis |
| medium | 1.5 GB | 5 GB | 2x | Excellente | Recommandé |
| large | 3 GB | 10 GB | 1x | Maximale | Production finale |
Explication :
- Whisper = Modèle ML d'OpenAI pour speech-to-text
- Exécution locale (pas de cloud)
- Supporte 99 langues avec timestamps précis
- Vitesse relative :
tiny= 32× plus rapide quelarge
Ollama (analyse IA)
Fichier src/config.py:23-24
OLLAMA_MODEL = "qwen2.5:3b"
MAX_TOKENS_PER_ANALYSIS = 4000
Choisir son modèle selon les besoins :
PC limité (4-8 GB RAM) :
OLLAMA_MODEL = "gemma2:2b" # Léger et rapide
PC standard (8-16 GB RAM) :
OLLAMA_MODEL = "qwen2.5:3b" # Recommandé (défaut)
PC puissant (16+ GB RAM) :
OLLAMA_MODEL = "mistral:7b" # Meilleure précision
Multilingue :
OLLAMA_MODEL = "llama3.1:8b" # Multilangue
Explication du rôle d'Ollama :
- Reçoit la transcription découpée en chunks (~4000 tokens)
- Identifie les thèmes principaux et transitions
- Génère des titres descriptifs pour chaque segment
- Propose des timestamps de découpe cohérents
Prompt système utilisé :
Analyse cette transcription d'interview et identifie les différents
thèmes abordés. Pour chaque thème, fournis :
- Un titre court et descriptif
- Le timestamp de début/fin
- Une justification du découpage
Étape 3 : Utilisation de l'application
Lancement
# Double-cliquer sur launch.bat
# OU :
venv_312\Scripts\python src\main.py
Workflow type
1. Sélection des fichiers
- Cliquer sur "Sélectionner les fichiers vidéo"
- Choisir un ou plusieurs fichiers (MTS, MP4, AVI, MOV, MKV)
- Les MTS multiples sont automatiquement concaténés
2. Traitement automatique
- Cliquer sur "Démarrer l'analyse"
- Suivre la progression dans l'interface :
- ✅ Concaténation des fichiers (si nécessaire)
- ✅ Extraction audio → WAV
- ✅ Transcription Whisper (la plus longue étape)
- ✅ Export transcription → TXT + JSON
- ✅ Analyse IA Ollama par chunks
- ✅ Génération des segments proposés
3. Validation des segments
- Consulter la liste des segments détectés
- Double-cliquer pour éditer :
- Modifier le titre
- Ajuster les timestamps
- Fusionner/diviser des segments
- Prévisualiser avec le lecteur intégré
4. Export final
- Choisir le dossier de destination
- Cliquer sur "Exporter tous les segments"
- Les fichiers MP4 sont générés avec nommage séquentiel
Étape 4 : Performances et optimisations
Temps de traitement (vidéo 1h)
Configuration standard (Whisper medium + Qwen 3B) :
| Étape | Durée | Facteurs |
|---|---|---|
| Concaténation | 1-2 min | Nombre de fichiers sources |
| Extraction audio | 10 sec | Taille de la vidéo |
| Transcription | 35-42 min | Modèle Whisper, CPU |
| Analyse IA | 8-12 min | Modèle Ollama, longueur texte |
| Export segments | 10-15 min | Nombre de segments, qualité |
| TOTAL | 60-90 min |
Optimisations possibles
Pour accélérer (sacrifie qualité) :
WHISPER_MODEL = "small" # Divise temps par 3
OLLAMA_MODEL = "gemma2:2b" # Divise RAM par 2
VIDEO_QUALITY = 28 # Fichiers plus légers
Pour qualité max (plus lent) :
WHISPER_MODEL = "large" # Transcription parfaite
OLLAMA_MODEL = "mistral:7b" # Analyse fine
VIDEO_QUALITY = 18 # Qualité visuelle maximale
Étape 5 : Structure des fichiers générés
OPCI-VIDEO-TEST-N2/
│
├── output/
│ └── transcriptions/
│ ├── interview_transcription.txt # Texte lisible avec timestamps
│ └── interview_transcription.json # Données structurées (words + segments)
│
├── [dossier_choisi]/
│ ├── 01_Introduction_et_parcours.mp4
│ ├── 02_Defis_techniques_rencontres.mp4
│ ├── 03_Vision_future_du_projet.mp4
│ └── ...
│
├── logs/
│ └── video_cutter.log # Logs détaillés du traitement
│
└── temp/
└── [fichiers_temporaires] # Nettoyés après export
Explication des formats :
TXT :
[00:00:05] Bonjour, je suis ravi de...
[00:00:42] Donc le projet a commencé en...
JSON :
{
"text": "Transcription complète...",
"segments": [
{
"start": 5.2,
"end": 42.8,
"text": "Bonjour, je suis ravi de...",
"words": [...]
}
]
}
Étape 6 : Dépannage
Ollama ne répond pas
# Vérifier qu'Ollama est lancé
ollama list
# Relancer Ollama
taskkill /F /IM ollama.exe
ollama serve
# Vérifier le modèle
ollama pull qwen2.5:3b
Explication :
- Ollama doit tourner en arrière-plan (service)
- Icône visible dans la barre des tâches Windows
- Port par défaut :
http://localhost:11434
Whisper trop lent
Solution 1 : Modèle plus léger
WHISPER_MODEL = "small" # Au lieu de "medium"
Solution 2 : GPU (si disponible)
- Installer
torchavec support CUDA - Whisper utilisera automatiquement le GPU NVIDIA
- Gain de vitesse : 5-10×
Solution 3 : Découper la vidéo
- Traiter par tranches de 30 min
- Concaténer les transcriptions manuellement
Erreur de mémoire (OOM)
Symptômes :
RuntimeError: CUDA out of memory
MemoryError: Unable to allocate...
Solutions :
# 1. Réduire le modèle Whisper
WHISPER_MODEL = "base"
# 2. Réduire le modèle Ollama
OLLAMA_MODEL = "gemma2:2b"
# 3. Réduire chunk size
MAX_TOKENS_PER_ANALYSIS = 2000
Segments mal découpés
Causes possibles :
- Transcription imprécise → Tester
mediumoularge - Modèle Ollama trop léger → Essayer
mistral:7b - Transitions abruptes dans l'interview → Ajustement manuel
Améliorer la détection :
# Tester un modèle plus puissant
OLLAMA_MODEL = "mistral:7b"
# Ou un modèle spécialisé français
ollama pull vigogne:7b # Modèle français
Avantages de l'approche locale (Ollama)
vs API Cloud (GPT-4, Claude, etc.)
| Critère | Ollama (local) | API Cloud |
|---|---|---|
| Coût | Gratuit, illimité | 0.01-0.10€ par analyse |
| Confidentialité | Données restent en local | Envoyées au cloud |
| Vitesse | Dépend du CPU local | Dépend du réseau |
| Disponibilité | Offline OK | Nécessite Internet |
| Qualité | Bonne (modèles 3-7B) | Excellente (70B+) |
Cas d'usage idéal pour Ollama :
- Vidéos confidentielles (entreprise, médical)
- Traitement par lots sans limite
- Pas de connexion Internet fiable
- Coût récurrent inacceptable
Évolutions futures
Fonctionnalités prévues :
- Export multi-formats (MOV, AVI, etc.)
- Support multilangue simultané
- Mode batch (dossier complet)
Modèles IA à tester :
nous-hermes2:10.7b: Excellent suiveur d'instructionssolar:10.7b: Performance/taille optimale
Ressources et références
Documentation officielle :
Comparaison modèles :
Configuration matérielle recommandée
Minimum (workflow ralenti) :
- CPU : Intel i5 / AMD Ryzen 5 (4 cœurs)
- RAM : 8 GB
- Stockage : 50 GB SSD
- Modèles :
small+gemma2:2b
Recommandé (workflow fluide) :
- CPU : Intel i7 / AMD Ryzen 7 (8 cœurs)
- RAM : 16 GB
- Stockage : 100 GB SSD
- Modèles :
medium+qwen2.5:3b
Optimal (vitesse maximale) :
- CPU : Intel i9 / AMD Ryzen 9 (16 cœurs)
- RAM : 32 GB
- GPU : NVIDIA RTX 3060+ (support CUDA)
- Stockage : 256 GB NVMe SSD
- Modèles :
large+mistral:7b
Version : 1.0 Dernière mise à jour : Novembre 2024 Licence : MIT Auteur : OPCI Productions
No comments to display
No comments to display