import gradio as gr import torch from PIL import Image from diffusers import DiffusionPipeline from transformers import pipeline import numpy as np modelo_descripcion = pipeline("image-to-text", model="Salesforce/blip-image-captioning-base") audioModelo = pipeline("text-to-speech", model="suno/bark-small") def describir_imagen(imagen): descripcion = modelo_descripcion(Image.fromarray(imagen))[0]['generated_text'] return descripcion def generar_audio(texto): audio = audioModelo(texto) array_audio = np.array(audio["audio"][0], dtype=np.float32) return (audio["sampling_rate"], array_audio) with gr.Blocks() as demo: gr.Markdown( """ # Asistente Accesible para Personas con Discapacidad Visual Este sistema **describe imágenes** automáticamente y **lee en voz alta** lo que aparece. """ ) with gr.Row(): with gr.Column(scale=1): imagen_input = gr.Image(label="Sube una imagen") generar_btn = gr.Button("Obtener descripción") with gr.Column(scale=1): descripcion_output = gr.Textbox(label="Descripción generada") audio_output = gr.Audio(label="Audio descriptivo") generar_btn.click(fn=describir_imagen, inputs=imagen_input, outputs=descripcion_output) descripcion_output.change(fn=generar_audio, inputs=descripcion_output, outputs=audio_output) demo.launch(theme=gr.themes.Soft())