File size: 2,368 Bytes
5c78fe7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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)