File size: 1,437 Bytes
5095b37
 
 
 
 
 
 
 
bad0877
5095b37
 
 
 
 
 
bad0877
5095b37
 
 
65beaec
5095b37
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5edac7b
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
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())