| 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()) |
|
|