ajout du control denvoi de message et interface up
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Script de test pour simuler l'API de traitement manuel des sous-titres
|
||||
"""
|
||||
|
||||
import subprocess
|
||||
import os
|
||||
import json
|
||||
from datetime import datetime
|
||||
|
||||
def process_subtitles_manual():
|
||||
"""Simuler le traitement manuel des sous-titres"""
|
||||
print("🧪 Test du traitement manuel des sous-titres")
|
||||
print("=" * 50)
|
||||
|
||||
# Vérifier que le dossier record existe
|
||||
record_dir = "record"
|
||||
if not os.path.exists(record_dir):
|
||||
print(f"❌ Dossier record non trouvé: {record_dir}")
|
||||
return False
|
||||
|
||||
# Trouver les fichiers audio
|
||||
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")
|
||||
|
||||
subtitles_created = 0
|
||||
subtitles_data = {}
|
||||
|
||||
# Traiter chaque fichier audio (limiter à 2 pour le test)
|
||||
for audio_file in audio_files[:2]:
|
||||
audio_path = os.path.join(record_dir, audio_file)
|
||||
print(f"🎵 Traitement de: {audio_file}")
|
||||
|
||||
try:
|
||||
# Lancer Whisper
|
||||
command = [
|
||||
'whisper',
|
||||
'--language', 'fr',
|
||||
audio_path,
|
||||
'--device', 'cuda',
|
||||
'--model', 'large-v3'
|
||||
]
|
||||
|
||||
print(f"📝 Commande: {' '.join(command)}")
|
||||
result = subprocess.run(command, capture_output=True, text=True, timeout=60)
|
||||
|
||||
if result.returncode == 0:
|
||||
# Lire le fichier .txt généré
|
||||
txt_file = audio_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 brut: {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')
|
||||
subtitles_data[current_time] = cleaned_content
|
||||
|
||||
# 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)
|
||||
|
||||
subtitles_created += 1
|
||||
print(f"✅ Sous-titre créé et sauvegardé")
|
||||
|
||||
# Nettoyer les fichiers temporaires
|
||||
os.remove(txt_file)
|
||||
os.remove(audio_path) # Supprimer le fichier audio traité
|
||||
print(f"🧹 Fichiers temporaires nettoyés")
|
||||
|
||||
else:
|
||||
print(f"⚠️ Aucun fichier .txt généré pour {audio_file}")
|
||||
|
||||
else:
|
||||
print(f"❌ Erreur Whisper: {result.stderr}")
|
||||
|
||||
except subprocess.TimeoutExpired:
|
||||
print(f"⏰ Timeout pour {audio_file}")
|
||||
continue
|
||||
except Exception as e:
|
||||
print(f"❌ Erreur pour {audio_file}: {e}")
|
||||
continue
|
||||
|
||||
print(f"\n📊 Résumé: {subtitles_created} sous-titre(s) créé(s)")
|
||||
print("📝 Sous-titres générés:")
|
||||
for time_key, text in subtitles_data.items():
|
||||
print(f" {time_key}: {text}")
|
||||
|
||||
return subtitles_created > 0
|
||||
|
||||
if __name__ == '__main__':
|
||||
success = process_subtitles_manual()
|
||||
if success:
|
||||
print("\n✅ Test réussi ! Le traitement manuel fonctionne.")
|
||||
else:
|
||||
print("\n❌ Test échoué !")
|
||||
Reference in New Issue
Block a user