139 lines
4.3 KiB
Python
139 lines
4.3 KiB
Python
#!/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") |