Download diffusers_disc.py from Apedlop/prueba: direct link, hf CLI and curl.
- Browser
- Download file 1.89 kB
-
https://huggingface.co/spaces/Apedlop/prueba/resolve/main/diffusers_disc.py
- Command line
-
hf download hf://spaces/Apedlop/prueba/diffusers_disc.py
-
curl -L -o diffusers_disc.py https://huggingface.co/spaces/Apedlop/prueba/resolve/main/diffusers_disc.py
1.89 kB
| import gradio as gr | |
| from PIL import Image | |
| from transformers import pipeline | |
| import torch | |
| from diffusers import AudioLDMPipeline | |
| device = "cuda" if torch.cuda.is_available() else "cpu" | |
| print(f"Usando dispositivo: {device}") | |
| # Imagen -> Texto | |
| modelo_imagen_texto = pipeline( | |
| "image-to-text", | |
| model="Salesforce/blip-image-captioning-base", | |
| device=0 if device=="cuda" else -1 | |
| ) | |
| # Texto -> Audio (AudioLDMPipeline) | |
| pipe_audio = AudioLDMPipeline.from_pretrained( | |
| "cvssp/audioldm-s-full-v2", | |
| torch_dtype=torch.float16 if device=="cuda" else torch.float32 | |
| ).to(device) | |
| def imagen_a_audio(imagen): | |
| """ | |
| 1. Convierte la imagen en descripción de texto. | |
| 2. Convierte la descripción en audio usando AudioLDMPipeline. | |
| """ | |
| # Imagen -> Texto | |
| resultado = modelo_imagen_texto(Image.fromarray(imagen)) | |
| descripcion = resultado[0]["generated_text"] | |
| print(f"Descripción generada: {descripcion}") | |
| # Texto -> Audio | |
| audio_result = pipe_audio( | |
| prompt=descripcion, | |
| num_inference_steps=50, | |
| audio_length_in_s=5.0 | |
| ) | |
| # El resultado contiene .audios | |
| audio_array = audio_result.audios[0] | |
| # AudioLDMPipeline usa 22050 Hz como sampling rate por defecto | |
| sampling_rate = 22050 | |
| return descripcion, (sampling_rate, audio_array) | |
| demo = gr.Interface( | |
| fn=imagen_a_audio, | |
| inputs=gr.Image(type="numpy", label="Sube una imagen"), | |
| outputs=[ | |
| gr.Textbox(label="Descripción de la imagen"), | |
| gr.Audio(label="Audio generado") | |
| ], | |
| title="Imagen a Audio para accesibilidad", | |
| description=( | |
| "Esta aplicación analiza una imagen y genera una descripción textual. " | |
| "Luego crea un audio a partir de esa descripción usando AudioLDMPipeline, " | |
| "para ayudar a personas con discapacidad visual a percibir el contenido visual." | |
| ), | |
| ) | |
| demo.launch(share=True) | |