126 lines
4.4 KiB
Python
126 lines
4.4 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Script de démonstration du système de sous-titres
|
|
"""
|
|
|
|
import os
|
|
import json
|
|
from datetime import datetime
|
|
|
|
def demo_subtitle_system():
|
|
"""Démonstration du système de sous-titres"""
|
|
print("🎬 Démonstration du système de sous-titres")
|
|
print("=" * 60)
|
|
|
|
# 1. Vérifier les fichiers audio
|
|
record_dir = "record"
|
|
if not os.path.exists(record_dir):
|
|
print(f"❌ Dossier record non trouvé: {record_dir}")
|
|
return False
|
|
|
|
audio_files = [f for f in os.listdir(record_dir) if f.endswith('.mp3')]
|
|
if not audio_files:
|
|
print(f"❌ Aucun fichier audio trouvé dans {record_dir}")
|
|
return False
|
|
|
|
print(f"✅ {len(audio_files)} fichiers audio trouvés")
|
|
print(f"📁 Premier fichier: {audio_files[0]}")
|
|
print(f"📁 Dernier fichier: {audio_files[-1]}")
|
|
|
|
# 2. Vérifier le stockage
|
|
storage_dir = "storage"
|
|
subtitle_file = os.path.join(storage_dir, "subtitle_data.json")
|
|
|
|
if os.path.exists(subtitle_file):
|
|
try:
|
|
with open(subtitle_file, 'r', encoding='utf-8') as f:
|
|
subtitle_data = json.load(f)
|
|
print(f"✅ Stockage existant avec {len(subtitle_data)} sous-titre(s)")
|
|
|
|
if subtitle_data:
|
|
print("📝 Derniers sous-titres:")
|
|
sorted_keys = sorted(subtitle_data.keys())
|
|
for key in sorted_keys[-3:]: # Afficher les 3 derniers
|
|
print(f" {key}: {subtitle_data[key]}")
|
|
except Exception as e:
|
|
print(f"⚠️ Erreur lecture stockage: {e}")
|
|
else:
|
|
print("📝 Aucun stockage existant")
|
|
|
|
# 3. Simuler le traitement manuel
|
|
print("\n🔧 Simulation du traitement manuel:")
|
|
print(" 1. Détection des fichiers audio ✅")
|
|
print(" 2. Lancement de Whisper sur chaque fichier")
|
|
print(" 3. Nettoyage et suppression des répétitions")
|
|
print(" 4. Sauvegarde dans le stockage")
|
|
print(" 5. Nettoyage des fichiers temporaires")
|
|
|
|
# 4. Créer un exemple de sous-titre
|
|
example_subtitle = {
|
|
"03:52:30": "Voici un exemple de sous-titre généré",
|
|
"03:52:35": "Le système fonctionne correctement",
|
|
"03:52:40": "Whisper traite les fichiers audio"
|
|
}
|
|
|
|
# Sauvegarder l'exemple
|
|
if not os.path.exists(storage_dir):
|
|
os.makedirs(storage_dir)
|
|
|
|
try:
|
|
with open(subtitle_file, 'w', encoding='utf-8') as f:
|
|
json.dump(example_subtitle, f, indent=4, ensure_ascii=False)
|
|
print("✅ Exemple de sous-titres sauvegardé")
|
|
except Exception as e:
|
|
print(f"❌ Erreur sauvegarde: {e}")
|
|
|
|
# 5. Afficher les instructions pour l'interface web
|
|
print("\n🌐 Instructions pour l'interface web:")
|
|
print(" 1. Ouvrir http://localhost:5000")
|
|
print(" 2. Aller dans l'onglet 'Sous-titres'")
|
|
print(" 3. Cliquer sur 'Traitement Manuel'")
|
|
print(" 4. Attendre le traitement des fichiers audio")
|
|
print(" 5. Voir les sous-titres générés")
|
|
|
|
return True
|
|
|
|
def test_whisper_availability():
|
|
"""Tester la disponibilité de Whisper"""
|
|
print("\n🔍 Test de Whisper:")
|
|
|
|
try:
|
|
import subprocess
|
|
result = subprocess.run(['whisper', '--help'], capture_output=True, text=True, timeout=10)
|
|
if result.returncode == 0:
|
|
print("✅ Whisper est disponible et fonctionnel")
|
|
return True
|
|
else:
|
|
print("❌ Whisper ne répond pas correctement")
|
|
return False
|
|
except FileNotFoundError:
|
|
print("❌ Whisper n'est pas installé")
|
|
return False
|
|
except Exception as e:
|
|
print(f"❌ Erreur test Whisper: {e}")
|
|
return False
|
|
|
|
if __name__ == '__main__':
|
|
print("🚀 Démonstration du système de sous-titres")
|
|
print("=" * 60)
|
|
|
|
# Test 1: Système de base
|
|
system_ok = demo_subtitle_system()
|
|
|
|
# Test 2: Whisper
|
|
whisper_ok = test_whisper_availability()
|
|
|
|
print("\n" + "=" * 60)
|
|
if system_ok and whisper_ok:
|
|
print("✅ Système prêt !")
|
|
print("🎉 Vous pouvez maintenant utiliser le bouton 'Traitement Manuel'")
|
|
print(" dans l'interface web pour créer des sous-titres.")
|
|
else:
|
|
print("❌ Problèmes détectés")
|
|
if not system_ok:
|
|
print(" - Problème avec le système de base")
|
|
if not whisper_ok:
|
|
print(" - Problème avec Whisper") |