#!/usr/bin/env python3 """ Script de test pour la génération automatique de sous-titres """ import subprocess import os import json import time from datetime import datetime def test_auto_subtitle_system(): """Test du système de génération automatique de sous-titres""" print("🧪 Test du système de génération automatique de sous-titres") print("=" * 60) # 1. Vérifier les fichiers audio disponibles 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]}") # 2. Simuler le traitement d'un fichier test_file = audio_files[0] audio_path = os.path.join(record_dir, test_file) print(f"\n🎵 Simulation du traitement de: {test_file}") try: # Lancer Whisper command = [ 'whisper', '--language', 'fr', audio_path, '--device', 'cuda', '--model', 'large-v3' ] print(f"📝 Commande: {' '.join(command)}") print("⏳ Traitement en cours...") result = subprocess.run(command, capture_output=True, text=True, timeout=60) if result.returncode == 0: print("✅ Whisper a fonctionné avec succès") # Lire le fichier .txt généré txt_file = test_file.replace('.mp3', '.txt') if os.path.exists(txt_file): with open(txt_file, 'r', encoding='utf-8') as f: content = f.read().strip() print(f"📝 Contenu généré: {content}") # Nettoyer le contenu content = content.replace("'", "").replace('"', "").replace("\n", " ").replace(",", "") # Supprimer les répétitions de mots words = content.split() seen = set() result_words = [] for word in words: if word not in seen: result_words.append(word) seen.add(word) cleaned_content = " ".join(result_words) print(f"🧹 Contenu nettoyé: {cleaned_content}") # Sauvegarder dans le stockage current_time = datetime.now().strftime('%H:%M:%S') # Sauvegarder dans le fichier de stockage storage_dir = "storage" if not os.path.exists(storage_dir): os.makedirs(storage_dir) subtitle_file = os.path.join(storage_dir, "subtitle_data.json") try: with open(subtitle_file, 'r', encoding='utf-8') as f: existing_data = json.load(f) except (FileNotFoundError, json.JSONDecodeError): existing_data = {} existing_data[current_time] = cleaned_content with open(subtitle_file, 'w', encoding='utf-8') as f: json.dump(existing_data, f, indent=4, ensure_ascii=False) print(f"💾 Sous-titre sauvegardé à {current_time}") # Nettoyer les fichiers temporaires os.remove(txt_file) print("🧹 Fichier temporaire nettoyé") return True else: print("⚠️ Aucun fichier .txt généré") return False else: print(f"❌ Erreur Whisper: {result.stderr}") return False except subprocess.TimeoutExpired: print("⏰ Timeout - Whisper a pris trop de temps") return False except Exception as e: print(f"❌ Erreur: {e}") return False def demo_auto_subtitle_interface(): """Démonstration de l'interface de génération automatique""" print("\n🌐 Démonstration de l'interface:") print(" 1. Ouvrir http://localhost:5000") print(" 2. Dans le tableau de bord (sidebar gauche)") print(" 3. Trouver le switch 'Génération Auto Sous-titres'") print(" 4. Activer le switch pour démarrer la génération automatique") print(" 5. Aller dans l'onglet 'Sous-titres' pour voir le fichier en cours") print(" 6. Les sous-titres seront créés automatiquement fichier par fichier") print("\n📋 Fonctionnalités ajoutées:") print(" ✅ Bouton slide dans le tableau de bord") print(" ✅ Indicateur de fichier en cours de traitement") print(" ✅ Traitement automatique fichier par fichier") print(" ✅ Retour en temps réel via Socket.IO") print(" ✅ Sauvegarde automatique dans le stockage") print(" ✅ Nettoyage automatique des fichiers temporaires") if __name__ == '__main__': print("🚀 Test du système de génération automatique de sous-titres") print("=" * 60) # Test du traitement automatique success = test_auto_subtitle_system() # Démonstration de l'interface demo_auto_subtitle_interface() print("\n" + "=" * 60) if success: print("✅ Test réussi !") print("🎉 Le système de génération automatique est prêt") print("💡 Utilisez le switch dans l'interface web pour l'activer") else: print("❌ Test échoué !") print("🔧 Vérifiez que Whisper fonctionne correctement")