DanLeBossDeESGI commited on
Commit
0ce2084
·
1 Parent(s): 42e6944

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -15
app.py CHANGED
@@ -7,7 +7,7 @@ import torch
7
  from diffusers import AudioLDMPipeline
8
  from transformers import AutoProcessor, ClapModel, BlipProcessor, BlipForConditionalGeneration
9
 
10
- # make Space compatible with CPU duplicates
11
  if torch.cuda.is_available():
12
  device = "cuda"
13
  torch_dtype = torch.float16
@@ -15,28 +15,28 @@ else:
15
  device = "cpu"
16
  torch_dtype = torch.float32
17
 
18
- # load the diffusers pipeline
19
  repo_id = "cvssp/audioldm-m-full"
20
  pipe = AudioLDMPipeline.from_pretrained(repo_id, torch_dtype=torch_dtype).to(device)
21
  pipe.unet = torch.compile(pipe.unet)
22
 
23
- # CLAP model (only required for automatic scoring)
24
  clap_model = ClapModel.from_pretrained("sanchit-gandhi/clap-htsat-unfused-m-full").to(device)
25
  processor = AutoProcessor.from_pretrained("sanchit-gandhi/clap-htsat-unfused-m-full")
26
 
27
  generator = torch.Generator(device)
28
 
29
- # Charger le modèle et le processeur Blip pour la description d'images
30
  image_caption_processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base")
31
  image_caption_model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-base")
32
 
33
- # Streamlit app setup
34
  st.set_page_config(
35
  page_title="Text to Media",
36
  page_icon="📷 🎵",
37
  )
38
 
39
- st.title("Générateur de Diaporama Vidéo et Musique")
40
 
41
  # Sélectionnez les images
42
  uploaded_files = st.file_uploader("Sélectionnez des images (PNG, JPG, JPEG)", type=["png", "jpg", "jpeg"], accept_multiple_files=True)
@@ -70,7 +70,7 @@ if uploaded_files:
70
  st.image(image_path, caption=f"Description : {descriptions[i]}", use_column_width=True)
71
 
72
  # Créez une vidéo à partir des images
73
- st.header("Création d'une Diapositive Vidéo")
74
 
75
  # Sélectionnez la durée d'affichage de chaque image avec une barre horizontale (en secondes)
76
  image_duration = st.slider("Sélectionnez la durée d'affichage de chaque image (en secondes)", 1, 10, 4)
@@ -85,9 +85,6 @@ if uploaded_files:
85
  final_clip_path = os.path.join(temp_dir, "slideshow.mp4")
86
  final_clip.write_videofile(final_clip_path, codec='libx264', fps=frame_rate)
87
 
88
- # Afficher la vidéo
89
- st.video(open(final_clip_path, 'rb').read())
90
-
91
  # Générez de la musique à partir des descriptions
92
  st.header("Génération de Musique à partir des Descriptions")
93
 
@@ -105,9 +102,9 @@ if uploaded_files:
105
  inputs = processor(text=text, audios=list(waveforms), return_tensors="pt", padding=True)
106
  inputs = {key: inputs[key].to(device) for key in inputs}
107
  with torch.no_grad():
108
- logits_per_text = clap_model(**inputs).logits_per_text # this is the audio-text similarity score
109
- probs = logits_per_text.softmax(dim=-1) # we can take the softmax to get the label probabilities
110
- most_probable = torch.argmax(probs) # and now select the most likely audio waveform
111
  waveform = waveforms[most_probable]
112
  return waveform
113
 
@@ -126,5 +123,12 @@ if uploaded_files:
126
  else:
127
  waveform = waveforms[0]
128
 
129
- # Afficher le lecteur audio
130
- st.audio(waveform, format="audio/wav", sample_rate=16000)
 
 
 
 
 
 
 
 
7
  from diffusers import AudioLDMPipeline
8
  from transformers import AutoProcessor, ClapModel, BlipProcessor, BlipForConditionalGeneration
9
 
10
+ # Vérifier si une carte GPU est disponible
11
  if torch.cuda.is_available():
12
  device = "cuda"
13
  torch_dtype = torch.float16
 
15
  device = "cpu"
16
  torch_dtype = torch.float32
17
 
18
+ # Charger le modèle AudioLDMPipeline
19
  repo_id = "cvssp/audioldm-m-full"
20
  pipe = AudioLDMPipeline.from_pretrained(repo_id, torch_dtype=torch_dtype).to(device)
21
  pipe.unet = torch.compile(pipe.unet)
22
 
23
+ # Charger le modèle CLAP pour la similarité audio-texte
24
  clap_model = ClapModel.from_pretrained("sanchit-gandhi/clap-htsat-unfused-m-full").to(device)
25
  processor = AutoProcessor.from_pretrained("sanchit-gandhi/clap-htsat-unfused-m-full")
26
 
27
  generator = torch.Generator(device)
28
 
29
+ # Charger le modèle Blip pour la description d'images
30
  image_caption_processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base")
31
  image_caption_model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-base")
32
 
33
+ # Configuration de l'application Streamlit
34
  st.set_page_config(
35
  page_title="Text to Media",
36
  page_icon="📷 🎵",
37
  )
38
 
39
+ st.title("Générateur de Diaporama Vidéo avec Musique")
40
 
41
  # Sélectionnez les images
42
  uploaded_files = st.file_uploader("Sélectionnez des images (PNG, JPG, JPEG)", type=["png", "jpg", "jpeg"], accept_multiple_files=True)
 
70
  st.image(image_path, caption=f"Description : {descriptions[i]}", use_column_width=True)
71
 
72
  # Créez une vidéo à partir des images
73
+ st.header("Création d'une Diapositive Vidéo avec Musique")
74
 
75
  # Sélectionnez la durée d'affichage de chaque image avec une barre horizontale (en secondes)
76
  image_duration = st.slider("Sélectionnez la durée d'affichage de chaque image (en secondes)", 1, 10, 4)
 
85
  final_clip_path = os.path.join(temp_dir, "slideshow.mp4")
86
  final_clip.write_videofile(final_clip_path, codec='libx264', fps=frame_rate)
87
 
 
 
 
88
  # Générez de la musique à partir des descriptions
89
  st.header("Génération de Musique à partir des Descriptions")
90
 
 
102
  inputs = processor(text=text, audios=list(waveforms), return_tensors="pt", padding=True)
103
  inputs = {key: inputs[key].to(device) for key in inputs}
104
  with torch.no_grad():
105
+ logits_per_text = clap_model(**inputs).logits_per_text # il s'agit du score de similarité audio-texte
106
+ probs = logits_per_text.softmax(dim=-1) # nous pouvons prendre le softmax pour obtenir les probabilités des étiquettes
107
+ most_probable = torch.argmax(probs) # et maintenant sélectionner l'onde audio la plus probable
108
  waveform = waveforms[most_probable]
109
  return waveform
110
 
 
123
  else:
124
  waveform = waveforms[0]
125
 
126
+ # Intégrer la musique dans la vidéo
127
+ final_clip = final_clip.set_audio(waveform.to("cpu").numpy())
128
+
129
+ # Afficher la vidéo mise à jour avec la musique
130
+ st.header("Vidéo avec Musique Générée")
131
+ video_with_music_path = os.path.join(temp_dir, "slideshow_with_music.mp4")
132
+ final_clip.write_videofile(video_with_music_path, codec='libx264', fps=frame_rate)
133
+
134
+ st.video(open(video_with_music_path, 'rb').read())