#!/usr/bin/env python3 """ Script de test direct de Whisper pour la création de sous-titres """ import os import subprocess import json import time def test_whisper_direct(): """Test direct de Whisper""" print("🧪 Test direct de Whisper") print("=" * 50) # Vérifier que le dossier record existe et contient des fichiers 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") # Prendre le premier fichier pour le test test_file = audio_files[0] test_file_path = os.path.join(record_dir, test_file) print(f"🎵 Test avec le fichier: {test_file}") # Test direct de Whisper try: print("🔍 Lancement de Whisper...") command = [ 'whisper', '--language', 'fr', test_file_path, '--device', 'cuda', '--model', 'large-v3' ] print(f"📝 Commande: {' '.join(command)}") # Exécuter Whisper result = subprocess.run(command, capture_output=True, text=True, timeout=60) if result.returncode == 0: print("✅ Whisper a fonctionné avec succès") # Vérifier si un fichier .txt a été créé 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 fichier de test os.remove(txt_file) print("🧹 Fichier de test 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 test_subtitle_storage(): """Test du stockage des sous-titres""" print("\n🧪 Test du stockage des sous-titres") print("=" * 50) # Créer un fichier de test pour le stockage storage_dir = "storage" if not os.path.exists(storage_dir): os.makedirs(storage_dir) print(f"✅ Dossier storage créé: {storage_dir}") # Test d'écriture/lecture test_data = { "test_time": "Test de sous-titre", "test_time_2": "Deuxième test" } subtitle_file = os.path.join(storage_dir, "subtitle_data.json") try: # Écrire des données de test with open(subtitle_file, 'w', encoding='utf-8') as f: json.dump(test_data, f, indent=4, ensure_ascii=False) print("✅ Données de test écrites") # Lire les données with open(subtitle_file, 'r', encoding='utf-8') as f: read_data = json.load(f) if read_data == test_data: print("✅ Lecture/écriture du stockage OK") return True else: print("❌ Données lues différentes des données écrites") return False except Exception as e: print(f"❌ Erreur stockage: {e}") return False if __name__ == '__main__': print("🚀 Test complet du système de sous-titres") print("=" * 60) # Test 1: Whisper direct whisper_ok = test_whisper_direct() # Test 2: Stockage storage_ok = test_subtitle_storage() print("\n" + "=" * 60) if whisper_ok and storage_ok: print("✅ Tous les tests sont réussis !") print("🎉 Le système de sous-titres est prêt à fonctionner") else: print("❌ Certains tests ont échoué") if not whisper_ok: print(" - Whisper ne fonctionne pas correctement") if not storage_ok: print(" - Le stockage ne fonctionne pas correctement")