import tensorflow as tf import numpy as np import cv2 import gradio as gr # Charger le modèle sans compilation (pour éviter les erreurs liées à batch_shape) try: generator = tf.keras.models.load_model('generator.h5', compile=False) # Charger sans compilation except ValueError as e: print("Erreur lors du chargement du modèle, vérifier batch_shape.") print(e) # Fonction pour générer une vidéo à partir d'un bruit aléatoire def generate_video(): # 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 # Normaliser les données générées video = (generated_video[0] * 255).astype(np.uint8) # Convertir en entier 8 bits filename = "/content/generated_video.mp4" # Sauvegarder la vidéo fourcc = cv2.VideoWriter_fourcc(*'mp4v') # Codec vidéo height, width, _ = video[0].shape out = cv2.VideoWriter(filename, fourcc, 15, (width, height)) # 15 FPS # Ajouter les frames dans le fichier vidéo for frame in video: out.write(frame) out.release() 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.Video(label="Vidéo générée"), # Vidéo en sortie 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)