ajout du control denvoi de message et interface up
This commit is contained in:
@@ -0,0 +1,154 @@
|
||||
#!/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")
|
||||
Reference in New Issue
Block a user