import tensorflow as tf import numpy as np import cv2 import gradio as gr import os # Fonction pour chercher le modèle dans tout le système de fichiers def find_model_file(filename="generator.h5"): for root, dirs, files in os.walk("/"): if filename in files: return os.path.join(root, filename) return None # Fonction pour charger le modèle en toute sécurité def load_model_safe(model_path): try: model = tf.keras.models.load_model(model_path, compile=False) return model except ValueError: return None # Chercher le modèle 'generator.h5' dans le système model_path = find_model_file("generator.h5") # Vérifier si le modèle est trouvé et charger if model_path is not None: generator = load_model_safe(model_path) else: generator = None # Fonction pour générer une vidéo à partir du générateur def generate_video(): if generator is None: # Créer un fichier d'erreur générique sans message personnalisé error_file_path = "/content/error_file.txt" with open(error_file_path, "w") as f: pass # Crée un fichier vide return error_file_path # Générer un bruit aléatoire (entrée pour le générateur) noise = np.random.normal(0, 1, (1, 16, 64, 64, 3)) # Exemple de bruit pour 16 frames de 64x64x3 generated_video = generator.predict(noise) # Générer la vidéo # Vérifier la forme des données générées if len(generated_video.shape) != 4 or generated_video.shape[0] != 16: return "Erreur dans les dimensions de la vidéo générée." # Créer le répertoire pour la vidéo output_dir = "/content/generated_videos" os.makedirs(output_dir, exist_ok=True) filename = os.path.join(output_dir, "generated_video.mp4") # Enregistrer la vidéo avec OpenCV fourcc = cv2.VideoWriter_fourcc(*'mp4v') # Codec vidéo height, width, _ = generated_video[0].shape out = cv2.VideoWriter(filename, fourcc, 15, (width, height)) # 15 FPS # Ajouter les frames dans le fichier vidéo for frame in generated_video: out.write(frame) out.release() # Retourner le chemin de la vidéo générée return filename # Interface Gradio def interface_function(): # Appeler la fonction de génération et retourner la vidéo générée video_file = generate_video() return video_file # Définir l'interface avec Gradio gr.Interface( fn=interface_function, # Fonction à exécuter inputs=[], # Pas d'entrée utilisateur outputs=gr.File(label="Vidéo générée"), # Utiliser gr.File pour le téléchargement du fichier title="Générateur de Vidéos avec IA", description="Cliquez sur le bouton ci-dessous pour générer une vidéo aléatoire avec l'IA." ).launch(server_name="0.0.0.0", server_port=7860)