IA / app.py
B1J1M1's picture
Update app.py
dbe26df verified
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)