Files
twitchBot-intelligent/test_whisper_direct.py
T

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")