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