Projet IA Automation - Vue d'ensemble
Essayez l'application ici : https://video-automation.littlenuage.com/
Ce projet est une plateforme de production video entierement automatisee propulsee par l'IA. A partir d'un simple sujet textuel, le systeme genere un script structure, cree des images, synthetise la narration, applique des animations de camera, ajoute des sous-titres et de la musique de fond, et livre une video prete a publier - le tout orchestre via une interface web Streamlit avec gestion de file d'attente et notifications Discord.
Contexte du projet
Developpe comme projet personnel pour industrialiser la creation de contenu video, cette plateforme elimine le besoin de montage manuel. Elle prend en charge plusieurs categories de videos (biographies de celebrites, documentaires geographiques, reportages d'actualite, analyses de films, monuments, oeuvres d'art), plusieurs langues (francais, anglais, espagnol) et deux modes de production (format court et format long). L'application est deployee en ligne et accessible a tous.
Vue d'ensemble de l'architecture
Le systeme suit une architecture modulaire orientee services avec une separation claire des responsabilites :
IA Automation Project Overview
Try the application here: https://video-automation.littlenuage.com/
This project is a fully automated video production platform powered by AI. From a simple text topic, the system generates a structured script, creates images, synthesizes narration, applies camera animations, adds subtitles and background music, and delivers a ready-to-publish video -- all orchestrated through a Streamlit web interface with job queue management and Discord notifications.
Project Context
Developed as a personal project to industrialize video content creation, this platform eliminates the need for manual editing. It supports multiple video categories (celebrity biographies, geography documentaries, news reports, movie analyses, monuments, artworks), multiple languages (French, English, Spanish), and two production modes (short-form and long-form). The application is deployed online and accessible to anyone.
Architecture Overview
The system follows a modular, service-oriented architecture with clear separation of concerns:
User (Streamlit UI)
|
v
app2.py --> queue_manager.py --> run_pipeline.py --> pipeline_executor.py
|
+---------------------+---------------------+
v v v
services/ scripts/ AI Models
(script, image, (generation & (SD, TTS, LLM,
audio, video) processing) CLIP, Whisper...)
Ce que j'ai developpe
1. Application Web Streamlit (app2.py)
L'interface utilisateur principale construite avec Streamlit, remplacant le premier prototype Flask :
- Acces authentifie via
streamlit_authenticatoravec identifiants YAML - Configuration video : selection du type (celebrite, geographie, actu, film, oeuvre, monument), categorie, entite, mode (court/long), langue (FR/EN/ES)
- Interface a trois onglets : Generation (flux de travail etape par etape), File d'attente (gestion des taches), Historique (productions passees)
- Controle WebUI : surveillance et lancement du serveur WebUI Stable Diffusion directement depuis l'interface
- Preferences utilisateur : parametres persistants sauvegardes entre les sessions (
user_preferences.json) - Integration Excel : listes d'entites chargees depuis des fichiers Excel par categorie
2. Moteur d'execution du pipeline (pipeline_executor.py)
L'orchestrateur principal implementant un pipeline robuste en 6 etapes :
What I Developed
1. Streamlit Web Application (app2.py)
The main user interface built with Streamlit, replacing the earlier Flask prototype:
- Authenticated access via
streamlit_authenticatorwith YAML-based credentials - Video configuration: type selection (celebrity, geography, actu, movie, oeuvre, monument), category, entity, mode (short/long), language (FR/EN/ES)
- Three-tab interface: Generation (step-by-step workflow), Queue (job management), History (past productions)
- WebUI control: monitor and launch the Stable Diffusion WebUI server directly from the interface
- User preferences: persistent settings saved between sessions (
user_preferences.json) - Excel integration: entity lists loaded from category-specific Excel files
2. Pipeline Execution Engine (pipeline_executor.py)
The core orchestrator implementing a robust 6-step pipeline:
| Step | Description | Script |
|---|---|---|
| 1 | Script Generation | generate_script.py / generate_script_actu.py |
| 2 | Image Generation | generate_image.py / get_image_pexels.py |
| 3 | Audio Synthesis | generate_audio.py |
| 4 | Camera Movement & Animation | generate_movement.py / generate_movement_from_db.py |
| 5 | Subtitle Alignment | align_subtitles.py (short mode) |
| 6 | Music Generation | generate_music.py (short mode) |
Fonctionnalites cles :
- Execution parallele : les etapes 2 (images) et 3 (audio) s'executent simultanement
- Reessai automatique : jusqu'a 2 tentatives par etape en cas d'echec
- Gestion des processus : arret des processus orphelins avant chaque etape pour eviter les conflits de ressources
- Suivi d'execution : metriques de temps completes par etape et duree totale du pipeline
3. Systeme de file d'attente (queue_manager.py)
Une file d'attente thread-safe pour la production video sequentielle :
- Etat persistant stocke dans
generation_queue.json - Cycle de vie des taches : en attente - en cours - termine/echoue
- Reprise apres echec : redemarrage d'une tache echouee a partir de l'etape exacte qui a echoue
- Historique : stocke les 50 dernieres taches terminees/echouees
- Statistiques : comptages en temps reel des taches en attente, en cours, terminees, echouees
- Thread worker global : traite les taches sequentiellement en arriere-plan
4. Couche de services (services/)
Quatre classes de services encapsulent les E/S fichiers et l'execution de sous-processus :
- script_service.py : charger, sauvegarder, generer et valider les fichiers JSON de scripts
- image_service.py : gerer les images/videos generees, suppression par scene, recuperation d'images avec mapping de scenes
- audio_service.py : resolution des chemins audio, verifications d'existence, segmentation audio, orchestration de generation
- video_service.py : generation de mouvements, alignement de sous-titres, overlay texte, integration musique, upload YouTube, decoupage TikTok
Tous les services suivent un pattern coherent avec des chemins organises :
Key features:
- Parallel execution: steps 2 (images) and 3 (audio) run concurrently
- Automatic retry: up to 2 retries per step on failure
- Process management: kills orphan processes before each step to prevent resource conflicts
- Execution tracking: full timing metrics per step and total pipeline duration
3. Job Queue System (queue_manager.py)
A thread-safe job queue for sequential video production:
- Persistent state stored in
generation_queue.json - Job lifecycle: pending - running - completed/failed
- Retry from failure: restart a failed job from the exact step that failed
- History: stores the last 50 completed/failed jobs
- Statistics: real-time counts of pending, running, completed, failed jobs
- Global worker thread: processes jobs sequentially in the background
4. Service Layer (services/)
Four service classes encapsulate file I/O and subprocess execution:
- script_service.py: load, save, generate, and validate script JSON files
- image_service.py: manage generated images/videos, scene-level deletion, image retrieval with scene mapping
- audio_service.py: audio path resolution, existence checks, audio segmentation, generation orchestration
- video_service.py: movement generation, subtitle alignment, text overlay, music integration, YouTube upload, TikTok cutting
All services follow a consistent pattern with organized paths:
output/{type}/{video}/{category}/{entity_name}/{mode}/{language_code}/
5. Composants UI (ui/)
Composants Streamlit modulaires separes pour la maintenabilite :
- generation_tab.py : flux de travail progressif en 9 sections (script - images - audio - mouvement - sous-titres - overlay texte - musique - TikTok - YouTube)
- queue_tab.py : surveillance de file d'attente, gestion des taches, reessai, navigation historique, upload YouTube rapide
- components.py : utilitaires reutilisables (arret de processus, preferences, controle WebUI)
- styles.py : CSS personnalise pour indicateurs de statut, boutons, lecteurs video, cartes de metriques
6. Modules d'infrastructure
Gestionnaire de cache (cache_manager.py) :
- Generation de cles de cache basee sur MD5 par categorie (scripts, images, audio)
- Index de cache stocke dans
cache/cache_index.json - Nettoyage du cache obsolete avec age configurable
- Prevention de la regeneration inutile des ressources existantes
Logger (logger.py) :
- Handlers de fichiers rotatifs (10 Mo max, 5 sauvegardes)
- Fichiers de logs specifiques aux taches (
logs/job_{id}.log) - Loggers dedies pour le pipeline, la file d'attente et l'application
- Journalisation structuree du cycle de vie des etapes (debut, fin, echec)
Notifications (notifications.py) :
- Integration webhook Discord avec embeds enrichis
- Messages de statut codes par couleur (vert=succes, rouge=erreur, orange=avertissement, bleu=info)
- Notifications du cycle de vie des taches (demarrage, progression des etapes, fin, echec)
7. Organisation des scripts (scripts/)
Tous les scripts de traitement sont organises par domaine :
5. UI Components (ui/)
Modular Streamlit components split for maintainability:
- generation_tab.py: 9-section progressive workflow (script - images - audio - movement - subtitles - text overlay - music - TikTok - YouTube)
- queue_tab.py: queue monitoring, job management, retry, history browsing, quick YouTube upload
- components.py: reusable utilities (process killing, preferences, WebUI control)
- styles.py: custom CSS for status indicators, buttons, video players, metric cards
6. Infrastructure Modules
Cache Manager (cache_manager.py):
- MD5-based cache key generation per category (scripts, images, audio)
- Cache index stored in
cache/cache_index.json - Stale cache cleanup with configurable age
- Prevents unnecessary regeneration of existing assets
Logger (logger.py):
- Rotating file handlers (10 MB max, 5 backups)
- Job-specific log files (
logs/job_{id}.log) - Dedicated loggers for pipeline, queue, and application
- Structured step lifecycle logging (start, complete, fail)
Notifications (notifications.py):
- Discord webhook integration with rich embeds
- Color-coded status messages (green=success, red=error, orange=warning, blue=info)
- Job lifecycle notifications (started, step progress, completed, failed)
7. Scripts Organization (scripts/)
All processing scripts are organized by domain:
scripts/
├── script/ # LLM-based script generation & verification
├── images/ # Image generation, validation & thumbnails
├── audio/ # TTS synthesis & audio processing
├── video/ # Video editing, animation & subtitles
├── music/ # Background music generation
├── batch/ # Batch operations
├── publishing/ # Publishing & promotion
└── experimental/ # Experimental features
Organisation des fichiers
File Organization
.
├── app2.py # Streamlit web application
├── pipeline_executor.py # 6-step pipeline engine
├── queue_manager.py # Job queue management
├── run_pipeline.py # Subprocess launcher
├── utils.py # Configuration & environment utilities
├── cache_manager.py # Intelligent caching system
├── logger.py # Structured logging
├── notifications.py # Discord webhook notifications
├── config.xml # Application configuration
├── services/
│ ├── script_service.py
│ ├── image_service.py
│ ├── audio_service.py
│ └── video_service.py
├── ui/
│ ├── generation_tab.py
│ ├── queue_tab.py
│ ├── components.py
│ └── styles.py
├── scripts/ # Processing scripts
├── input/
│ ├── Audio/ # Voice reference files (FR/EN/ES)
│ └── Video_List/ # Excel entity lists per category
├── output/ # Generated content
├── logs/ # Rotating log files
├── cache/ # Cache index & metadata
└── stable-diffusion-webui/ # AUTOMATIC1111 WebUI (submodule)
Flux de travail du pipeline automatise
Pipeline complet (mode file d'attente)
- L'utilisateur configure le type de video, la categorie, l'entite, le mode et la langue dans l'interface Streamlit
- La tache est ajoutee a la file d'attente persistante via
queue_manager.py - Le thread worker prend la tache et lance
run_pipeline.pycomme sous-processus - PipelineExecutor orchestre les 6 etapes :
- Etape 1 : Le LLM genere un script JSON structure (scenes, prompts, titres)
- Etapes 2-3 : Images et audio s'executent en parallele - Stable Diffusion ou Pexels pour les images, XTTS v2 pour le clonage vocal
- Etape 4 : Animation de mouvement de camera appliquee a chaque scene (zoom, pan, slide)
- Etape 5 : Alignement des sous-titres base sur Whisper (mode court)
- Etape 6 : Generation de musique de fond MusicGen (mode court)
- Notification Discord envoyee au demarrage, a la fin ou en cas d'echec de la tache
- L'utilisateur consulte le resultat dans l'onglet Historique, peut uploader sur YouTube directement
Mode manuel (onglet Generation)
Chaque etape peut aussi etre executee individuellement avec apercu en direct :
- Editer le JSON du script directement dans l'interface
- Previsualiser les images generees en grille
- Ecouter l'audio par scene avec edition des prompts
- Regarder les previsualisations video animees
- Editer le JSON des sous-titres avec rendu en direct
- Decouper les videos pour TikTok avec selection temporelle
- Uploader sur YouTube avec miniature et metadonnees
Configuration (config.xml)
Automated Pipeline Workflow
Full Pipeline (Queue Mode)
- User configures video type, category, entity, mode, language in the Streamlit UI
- Job added to the persistent queue via
queue_manager.py - Worker thread picks up the job and spawns
run_pipeline.pyas a subprocess - PipelineExecutor orchestrates the 6 steps:
- Step 1: LLM generates a structured JSON script (scenes, prompts, titles)
- Steps 2-3: Images and audio run in parallel - Stable Diffusion or Pexels for images, XTTS v2 for voice cloning
- Step 4: Camera movement animation applied to each scene (zoom, pan, slide)
- Step 5: Whisper-based subtitle alignment (short mode)
- Step 6: MusicGen background music generation (short mode)
- Discord notification sent at job start, completion, or failure
- User reviews the result in the History tab, can upload to YouTube directly
Manual Mode (Generation Tab)
Each step can also be executed individually with live preview:
- Edit the script JSON directly in the UI
- Preview generated images in a grid view
- Listen to audio per scene with prompt editing
- Watch animated video previews
- Edit subtitle JSON with live rendering
- Cut videos for TikTok with time-based selection
- Upload to YouTube with thumbnail and metadata
Configuration (config.xml)
<!-- Languages with voice reference files -->
<languages>
<language name="Francais" code="fr" audio="Enregistrement-francais.wav" />
<language name="English" code="en" audio="Enregistrement-anglais.wav" />
<language name="Espanol" code="es" audio="Enregistrement-espagnol.wav" />
</languages>
<!-- Production modes -->
<modes>
<mode name="short" nb_scenes="5" nb_images="3" width="1024" height="1024" />
<mode name="long" nb_scenes="20" nb_images="3" width="1280" height="720" />
</modes>
<!-- AI Models -->
<models>
<model name="juggernaut-xl" type="image" />
<model name="xtts_v2" type="audio" />
<script_models>gemma, deepseek-r1, ministral</script_models>
</models>
Architecture technique
Stack backend :
- Python 3.9+ : Langage principal
- Streamlit : Framework web avec authentification
- XML/YAML/JSON : Gestion de la configuration
- Threading : Execution parallele et worker de file d'attente
Modeles IA (8 modeles integres) :
- Stable Diffusion (AUTOMATIC1111 WebUI) - Generation d'images
- Coqui TTS (XTTS v2) - Clonage vocal multilingue
- Ollama (Gemma, DeepSeek, Ministral) - Generation de scripts via LLM
- CLIP (OpenAI) - Verification de similarite image-texte
- Whisper (OpenAI) - Alignement de sous-titres depuis l'audio
- MediaPipe - Detection de visages dans les images generees
- Facebook MusicGen - Musique de fond generee par IA
- MoviePy + OpenCV - Edition video, animation, effets
APIs externes :
- API Stable Diffusion (
http://127.0.0.1:7860) - API Ollama (
http://localhost:11434) - API Pexels (images/videos stock pour geographie/actu)
- API YouTube Data v3 (uploads automatises)
- Webhooks Discord (notifications)
Categories de traitement :
Technical Architecture
Backend Stack:
- Python 3.9+: Core language
- Streamlit: Web framework with authentication
- XML/YAML/JSON: Configuration management
- Threading: Parallel execution and queue worker
AI Models (8 models integrated):
- Stable Diffusion (AUTOMATIC1111 WebUI) - Image generation
- Coqui TTS (XTTS v2) - Multilingual voice cloning
- Ollama (Gemma, DeepSeek, Ministral) - Script generation via LLM
- CLIP (OpenAI) - Image-text similarity verification
- Whisper (OpenAI) - Subtitle alignment from audio
- MediaPipe - Face detection in generated images
- Facebook MusicGen - AI-generated background music
- MoviePy + OpenCV - Video editing, animation, effects
External APIs:
- Stable Diffusion API (
http://127.0.0.1:7860) - Ollama API (
http://localhost:11434) - Pexels API (stock images/videos for geography/actu)
- YouTube Data API v3 (automated uploads)
- Discord Webhooks (notifications)
Processing Categories:
| Category | Image Source | Script Model | Description |
|---|---|---|---|
| Celebrity | Stable Diffusion | LLM | Biography and career videos |
| Geography | Pexels API | LLM | Location and travel documentaries |
| Actu (News) | Pexels API | LLM (actu variant) | Current events reports |
| Movie | Pexels API | LLM | Film analysis and summaries |
| Monument | Stable Diffusion | LLM | Historical and architectural features |
| Oeuvre (Art) | Stable Diffusion | LLM | Artistic works and analysis |
Defis de developpement et solutions
Defi 1 : Fiabilite du pipeline
- Probleme : Les pipelines de longue duree (5-20 scenes) pouvaient echouer en cours d'execution, gaspillant tout le travail precedent
- Solution : Execution etape par etape avec reessai automatique (2 tentatives par etape), gestion des processus pour arreter les orphelins, et redemarrage des taches de la file d'attente a partir de l'etape exacte d'echec
Defi 2 : Synchronisation audio-visuelle
- Probleme : S'assurer que la narration audio correspond parfaitement a la duree video sur toutes les scenes
- Solution : Calcul dynamique du timing, alignement des sous-titres base sur Whisper, et ajustement du debit d'images avec MoviePy
Defi 3 : Contention des ressources
- Probleme : Plusieurs modeles IA (SD, TTS, LLM) en competition pour le GPU et la memoire
- Solution : Execution sequentielle des taches via le worker de file d'attente, etapes image/audio paralleles au sein d'une tache, et arret des processus avant chaque etape pour liberer les ressources
Defi 4 : Coherence de qualite
- Probleme : Le contenu genere par IA varie en qualite entre les scenes
- Solution : Pipeline de verification multi-etapes (score CLIP pour les images, detection de visages via MediaPipe, validation du script via LLM), avec points d'intervention manuelle dans l'interface
Defi 5 : Support multilingue
- Probleme : Prendre en charge plusieurs langues pour la narration, les scripts et les sous-titres
- Solution : Fichiers de reference vocale par langue, repertoires de sortie par langue, et prompts LLM adaptes pour chaque langue
Defi 6 : Observabilite
- Probleme : Deboguer les taches echouees dans un pipeline automatise avec plusieurs modeles IA
- Solution : Journalisation structuree avec fichiers rotatifs, fichiers de logs specifiques aux taches, suivi du cycle de vie des etapes, et notifications Discord avec details d'erreur
Prerequis
- Python 3.9+
- ffmpeg installe sur le systeme
- GPU recommande (NVIDIA pour le support CUDA)
Packages Python :
Development Challenges and Solutions
Challenge 1: Pipeline Reliability
- Problem: Long-running pipelines (5-20 scenes) could fail mid-execution, wasting all prior work
- Solution: Step-by-step execution with automatic retry (2 attempts per step), process management to kill orphans, and queue-based job restart from the exact failed step
Challenge 2: Audio-Visual Synchronization
- Problem: Ensuring audio narration perfectly matches video duration across scenes
- Solution: Dynamic timing calculation, Whisper-based subtitle alignment, and frame rate adjustment with MoviePy
Challenge 3: Resource Contention
- Problem: Multiple AI models (SD, TTS, LLM) competing for GPU and memory
- Solution: Sequential job execution via queue worker, parallel image/audio steps within a job, and process killing before each step to release resources
Challenge 4: Quality Consistency
- Problem: AI-generated content varies in quality across scenes
- Solution: Multi-stage verification pipeline (CLIP score for images, face detection via MediaPipe, script validation via LLM), with manual intervention points in the UI
Challenge 5: Multi-language Support
- Problem: Supporting multiple languages for narration, scripts, and subtitles
- Solution: Language-specific voice reference files, per-language output directories, and LLM prompts adapted for each language
Challenge 6: Observability
- Problem: Debugging failed jobs in an automated pipeline with multiple AI models
- Solution: Structured logging with rotating files, job-specific log files, step lifecycle tracking, and Discord notifications with error details
Prerequisites
- Python 3.9+
- ffmpeg installed on the system
- GPU recommended (NVIDIA for CUDA support)
Python packages:
pip install streamlit streamlit-authenticator
pip install moviepy requests TTS openai-whisper
pip install transformers mediapipe ollama
pip install pydub soundfile openpyxl pyyaml
pip install -r stable-diffusion-webui/requirements.txt
Services a executer :
Services to run:
# Stable Diffusion WebUI (image generation)
cd stable-diffusion-webui && ./webui.sh --api
# Ollama (LLM for script generation)
ollama serve
ollama pull gemma3:12b
# Streamlit application
streamlit run app2.py
Depannage
- Erreur API Stable Diffusion : verifier que le WebUI est en cours d'execution sur le port 7860 avec le flag
--api - Connexion Ollama refusee : s'assurer que
ollama serveest en cours d'execution sur le port 11434 - Audio non genere : verifier le chemin du fichier WAV de reference vocale dans
config.xml - File d'attente bloquee : verifier
logs/queue.logetlogs/job_{id}.logpour les details d'erreur - Notifications Discord non envoyees : verifier l'URL du webhook dans
.env - Decalage image/audio : s'assurer que les numeros de scenes correspondent dans le JSON du script
- Conflits de processus : utiliser le bouton "kill process" dans l'interface ou verifier les processus Python orphelins
Cas d'utilisation et applications
- Contenu educatif : Videos explicatives sur n'importe quel sujet avec narration IA
- Reseaux sociaux : Contenu format court pret pour TikTok avec decoupage automatique
- Actualites : Reportages automatises avec images stock Pexels
- Documentaire : Documentaires geographiques et monumentaux avec images
- Divertissement : Biographies de celebrites, analyses de films, presentations d'oeuvres d'art
- Marketing : Presentations de produits avec voix et musique personnalisees
Ameliorations futures
- Apercu et streaming de generation video en temps reel
- Effets d'animation avances (transitions 3D, particules)
- Transfert de style video et filtres artistiques
- Integration avec d'autres modeles TTS (ElevenLabs, Bark)
- Deploiement cloud pour scalabilite horizontale
- Tests A/B pour l'optimisation des miniatures et titres
- Tableau de bord analytique pour les performances du contenu genere
Metriques de performance
- Generation de script : ~10-30 secondes (selon le LLM)
- Generation d'images : ~5-10 secondes par scene (selon le GPU)
- Synthese audio : ~3-5 secondes par scene
- Animation video : ~2-4 secondes par scene
- Alignement sous-titres : ~5-10 secondes au total
- Generation musique : ~15-30 secondes
- Pipeline total (court, 5 scenes) : ~3-5 minutes
- Pipeline total (long, 20 scenes) : ~15-25 minutes
Modeles IA detailles
1. Stable Diffusion (AUTOMATIC1111 WebUI)
Modele : Juggernaut-XL avec LoRA de detail de visage. Utilise pour la generation d'images a partir de prompts textuels (scenes, miniatures). Prerequis : WebUI en cours d'execution avec le flag --api, modeles .safetensors dans models/Stable-diffusion/.
2. Coqui TTS (XTTS v2)
Modele : tts_models/multilingual/multi-dataset/xtts_v2. Clonage vocal multilingue a partir d'un fichier WAV de reference. Prerequis : pip install TTS, fichier WAV de reference par langue.
3. Ollama (Gemma, DeepSeek, Ministral)
Modeles : gemma3:12b, deepseek-r1:latest, ministral-3:14b. Generation de scripts basee sur LLM, verification, traduction. Sortie JSON structuree avec scenes, titres et prompts.
4. CLIP (OpenAI)
Modele : openai/clip-vit-base-patch32. Scoring de similarite image-texte pour la verification de qualite. Filtrage automatique des images a faible pertinence.
5. Whisper (OpenAI)
Modele : Whisper base. Alignement automatique des sous-titres a partir de la transcription audio. Timing au niveau des mots et export JSON des sous-titres.
6. MediaPipe (Detection de visages)
Detection de visages dans les images generees pour le filtrage qualite. Rejet automatique des images sans visages attendus.
7. Facebook MusicGen
Modele : facebook/musicgen-medium. Musique de fond generee par IA a partir de prompts textuels. Correspondance automatique de la duree et integration directe dans le pipeline.
8. MoviePy + OpenCV
Edition video, animation de camera (zoom, pan, slide), synchronisation audio, overlay de sous-titres. Recadrage TikTok/YouTube, rendu de sous-titres, concatenation video, mixage musical.
Ressources et credits
- Stable Diffusion WebUI
- Coqui TTS
- Ollama
- MoviePy
- OpenAI Whisper
- Facebook MusicGen
- Pexels API
- Developpeur : Cedric Chanfreau
- Application Web : video-automation.littlenuage.com
Essayez vous-meme !
Acceder a l'application : https://video-automation.littlenuage.com/
- Selectionnez votre type de video et categorie
- Choisissez une entite dans la liste (ou ajoutez la votre)
- Choisissez une langue et un mode de production (court/long)
- Ajoutez la tache a la file d'attente ou generez etape par etape
- Suivez la progression via les notifications Discord
- Telechargez ou uploadez directement sur YouTube
Troubleshooting
- Stable Diffusion API error: check that the WebUI is running on port 7860 with
--apiflag - Ollama connection refused: ensure
ollama serveis running on port 11434 - Audio not generated: verify the voice reference WAV file path in
config.xml - Queue stuck: check
logs/queue.logandlogs/job_{id}.logfor error details - Discord notifications not sent: verify the webhook URL in
.env - Image/audio mismatch: ensure scene numbers match in the script JSON
- Process conflicts: use the "kill process" button in the UI or check for orphan Python processes
Use Cases and Applications
- Educational Content: Explainer videos on any topic with AI narration
- Social Media: TikTok-ready short-form content with automatic cutting
- News: Automated news reports with Pexels stock footage
- Documentary: Geography and monument documentaries with images
- Entertainment: Celebrity biographies, movie analyses, art features
- Marketing: Product presentations with custom voice and music
Future Enhancements
- Real-time video generation preview and streaming
- Advanced animation effects (3D transitions, particles)
- Video style transfer and artistic filters
- Integration with more TTS models (ElevenLabs, Bark)
- Cloud deployment for horizontal scalability
- A/B testing for thumbnail and title optimization
- Analytics dashboard for generated content performance
Performance Metrics
- Script Generation: ~10-30 seconds (LLM-dependent)
- Image Generation: ~5-10 seconds per scene (GPU-dependent)
- Audio Synthesis: ~3-5 seconds per scene
- Video Animation: ~2-4 seconds per scene
- Subtitle Alignment: ~5-10 seconds total
- Music Generation: ~15-30 seconds
- Total Pipeline (short, 5 scenes): ~3-5 minutes
- Total Pipeline (long, 20 scenes): ~15-25 minutes
Detailed AI Models
1. Stable Diffusion (AUTOMATIC1111 WebUI)
Model: Juggernaut-XL with face detail LoRA. Used for image generation from text prompts (scenes, thumbnails). Prerequisites: WebUI running with --api flag, .safetensors models in models/Stable-diffusion/.
2. Coqui TTS (XTTS v2)
Model: tts_models/multilingual/multi-dataset/xtts_v2. Multilingual voice cloning from a WAV reference file. Prerequisites: pip install TTS, WAV reference file per language.
3. Ollama (Gemma, DeepSeek, Ministral)
Models: gemma3:12b, deepseek-r1:latest, ministral-3:14b. LLM-based script generation, verification, translation. Structured JSON output with scenes, titles, and prompts.
4. CLIP (OpenAI)
Model: openai/clip-vit-base-patch32. Image-text similarity scoring for quality verification. Automatic filtering of low-relevance images.
5. Whisper (OpenAI)
Model: Whisper base. Automatic subtitle alignment from audio transcription. Word-level timing and subtitle JSON export.
6. MediaPipe (Face Detection)
Face detection in generated images for quality filtering. Automatic rejection of images without expected faces.
7. Facebook MusicGen
Model: facebook/musicgen-medium. AI-generated background music from text prompts. Automatic duration matching and direct pipeline integration.
8. MoviePy + OpenCV
Video editing, camera animation (zoom, pan, slide), audio synchronization, subtitle overlay. TikTok/YouTube crop, subtitle rendering, video concatenation, music mixing.
Resources and Credits
- Stable Diffusion WebUI
- Coqui TTS
- Ollama
- MoviePy
- OpenAI Whisper
- Facebook MusicGen
- Pexels API
- Developer: Cedric Chanfreau
- Web Application: video-automation.littlenuage.com
Try It Yourself!
Access the application: https://video-automation.littlenuage.com/
- Select your video type and category
- Choose an entity from the list (or add your own)
- Pick a language and production mode (short/long)
- Add the job to the queue or generate step-by-step
- Monitor progress via Discord notifications
- Download or upload directly to YouTube
