Files
twitchBot-intelligent/test_auto_subtitle.py
T

154 lines
5.8 KiB
Python

#!/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")