Spaces:
Sleeping
Sleeping
| 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) | |