import streamlit as st from transformers import pipeline from diffusers import StableDiffusionPipeline import torch import os import tempfile # 1. Pipeline pour la transcription vocale (Wav2Vec2) asr_pipeline = pipeline("automatic-speech-recognition", model="facebook/wav2vec2-large-960h") # 2. Pipeline pour la génération de résumé (BART ou T5) summarizer_pipeline = pipeline("summarization", model="facebook/bart-large-cnn") # 3. Pipeline pour la génération d'images (Stable Diffusion) device = "cuda" if torch.cuda.is_available() else "cpu" image_pipeline = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4").to(device) # Fonction pour transcrire l'audio def transcribe(audio_path): transcription = asr_pipeline(audio_path)["text"] return transcription # Fonction pour résumer le texte transcrit def summarize(transcription): summary = summarizer_pipeline(transcription, max_length=130, min_length=30, do_sample=False)[0]["summary_text"] return summary # Fonction pour générer une image basée sur le résumé def generate_image(summary): image = image_pipeline(summary).images[0] return image # Interface utilisateur avec Streamlit st.title("Générateur de diapositives intelligent") # Étape 1 : Upload d'un fichier audio audio_file = st.file_uploader("Téléchargez un fichier audio", type=["wav", "mp3"]) if audio_file is not None: # Sauvegarde temporaire du fichier audio with tempfile.NamedTemporaryFile(delete=False) as tmp_file: tmp_file.write(audio_file.read()) tmp_filename = tmp_file.name st.audio(audio_file, format='audio/wav') # Étape 2 : Transcription de l'audio if st.button("Transcrire l'audio"): transcription = transcribe(tmp_filename) st.text_area("Transcription", transcription) # Étape 3 : Résumer la transcription if st.button("Résumer la transcription"): summary = summarize(transcription) st.text_area("Résumé", summary) # Étape 4 : Générer une image correspondante if st.button("Générer une image basée sur le résumé"): image = generate_image(summary) st.image(image, caption="Image générée à partir du résumé") # Nettoyage du fichier temporaire if audio_file is not None: os.remove(tmp_filename)