Skip to content

MatysLep/TikTokGenerator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TikTokGenerator 🎬

Transformez n'importe quelle vidéo paysage en clips TikTok viraux, sous-titrés et recadrés par IA en quelques secondes.

Python Streamlit OpenAI Whisper OpenCV FFmpeg


💡 Contexte & Motivation

Pourquoi avoir construit cet outil ?

La création de contenu "short-form" demande une régularité extrême, mais le montage technique (sous-titrage karaoké, recadrage dynamique) est une tâche répétitive et chronophage.

J'ai développé TikTokGenerator pour résoudre ce problème de scalabilité : l'objectif était de concevoir un "monteur virtuel" capable de prendre des décisions intelligentes (suivi de visage, timing audio) sans aucune intervention humaine. Ce projet démontre comment l'IA peut transformer un workflow créatif manuel en un pipeline industriel automatisé.


🏗️ Aperçu Technique

TikTokGenerator est un pipeline de traitement vidéo automatisé conçu pour la création de contenu à grande échelle. Il orchestre des bibliothèques de Vision par Ordinateur et de Traitement du Langage Naturel via une interface Streamlit réactive. L'architecture suit une approche événementielle où le traitement vidéo lourd (téléchargement, analyse, montage) est géré de manière asynchrone pour ne pas bloquer l'interface utilisateur.

🌟 Fonctionnalités Clés

  • 🎯 Smart Crop (Recadrage Intelligent) : Utilise YuNet (OpenCV) pour scanner la vidéo et déterminer dynamiquement la zone d'intérêt, transformant automatiquement le format 16:9 (YouTube) en 9:16 (TikTok) sans couper le sujet.
  • 🗣️ Sous-titres style "CapCut" : Intègre faster-whisper pour transcrire l'audio avec des timestamps mot à mot, puis affiche 1 à 3 mots à la fois en Montserrat ExtraBold (police embarquée), majuscules, avec le mot actif en jaune et un effet "pop" — le style qui maximise la rétention. La transcription tourne en parallèle de l'analyse vidéo.
  • ✂️ Coupes alignées sur les phrases : Les clips (≤ 61 s) se terminent sur des fins de phrases détectées par Whisper — plus de coupe en plein mot. Coupes exactes garanties par des keyframes forcées à l'encodage.
  • 🧠 Sélection des meilleurs moments (optionnel) : Si ANTHROPIC_API_KEY est défini, l'API Claude analyse le transcript pour sélectionner les passages les plus viraux et générer un hook, une description SEO et des hashtags par clip. Sinon, découpage séquentiel aligné sur les phrases.
  • 📈 Optimisé pour l'algorithme TikTok : hook incrusté pendant les 3 premières secondes de chaque clip, barre de progression animée en bas de vidéo, image légèrement saturée/affûtée, audio normalisé à -14 LUFS (standard TikTok).
  • 🌐 Sources Flexibles : Téléchargement via yt-dlp (URL YouTube) ou upload de fichiers locaux (MP4, MKV, MOV).

🛠️ Stack Technique

Catégorie Technologies
Frontend / UI Streamlit + PyWebView (application de bureau native)
Backend / Core Python, Asyncio
AI & Vision YuNet (OpenCV, détection de visages), faster-whisper (ASR, timestamps mot à mot), API Claude (sélection des moments, optionnel)
Traitement Vidéo OpenCV, FFmpeg (via subprocess), yt-dlp
Sous-titres PySubs2 (ASS karaoké)

🚀 Installation & Usage

Prérequis

  • Python 3.10+
  • FFmpeg installé et accessible dans le PATH système.
  • Linux : dépendances GTK pour pywebview (sudo apt install python3-gi gir1.2-webkit2-4.1) ou variante Qt (pip install pywebview[qt]).
  • Windows : runtime WebView2 (préinstallé sur Windows 10/11 récents).
  • Optionnel : export ANTHROPIC_API_KEY=sk-ant-… pour activer la sélection des meilleurs moments et la génération de métadonnées par clip via l'API Claude.

Démarrage Rapide

# 1. Cloner le projet
git clone https://github.com/votre-username/TikTokGenerator.git
cd TikTokGenerator

# 2. Créer un environnement virtuel (recommandé)
python -m venv .venv
source .venv/bin/activate  # Sur Windows: .venv\Scripts\activate

# 3. Installer les dépendances
pip install -r requirements.txt

# 4. Lancer l'application de bureau
python desktop.py

Une fenêtre native s'ouvre avec l'interface (le serveur Streamlit tourne en local et s'arrête automatiquement à la fermeture de la fenêtre).

Packaging (optionnel)

Pour distribuer un exécutable autonome, utiliser PyInstaller sur la plateforme cible (un build par OS) :

pip install pyinstaller
pyinstaller --name TikTokGenerator --add-data "app.py:." desktop.py

🧠 Challenge & Apprentissage

Le Défi : Recadrage Vertical Automatisé (16:9 vers 9:16)

L'un des plus grands défis techniques a été de convertir des vidéos horizontales en format vertical sans perdre l'information visuelle essentielle (le locuteur). Un recadrage central "bête" coupait souvent les visages si le sujet n'était pas parfaitement au centre.

La Solution : Analyse Prédictive par Computer Vision

J'ai implémenté un système de "Smart Crop" en deux passes :

  1. Analyse : Le script scanne la vidéo image par image (avec un pas d'échantillonnage) utilisant MediaPipe pour détecter les cadres englobants (bounding boxes) des visages.
  2. Calcul de Marge : Il calcule les marges de sécurité minimales à gauche et à droite sur l'ensemble de la vidéo pour définir une fenêtre de recadrage fixe optimale qui garantit que le sujet reste dans le cadre 100% du temps.
  3. Fallback : Si la vidéo contient plusieurs sujets écartés ou aucun visage, l'algorithme bascule intelligemment sur un fond flouté ("Gaussian Blur background") pour préserver l'esthétique sans déformer l'image origine.

Projet réalisé par Lepretre Matys - 2025

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages