Spaces:
Sleeping
A newer version of the Gradio SDK is available:
5.28.0
title: CommentImage
emoji: 🖼️
colorFrom: blue
colorTo: green
sdk: gradio
sdk_version: 5.6.0
app_file: app.py
pinned: false
short_description: Comment on an image in writing and through audio.
Descripción del Proyecto: Cocktail Descriptions
Problema:
El objetivo es crear una interfaz interactiva para que los usuarios puedan elegir un cóctel de una lista, visualizar su nombre, imagen, instrucciones de preparación y escuchar las instrucciones y descripciones del cóctel de manera hablada. Para ello, se utilizarán APIs externas y modelos de inteligencia artificial para generar descripciones de imágenes y convertir texto en audio.
El desafío consiste en:
- Obtener información sobre cócteles desde una API externa (TheCocktailDB).
- Generar una descripción de la imagen del cóctel utilizando un modelo de procesamiento de imágenes.
- Convertir el texto de las instrucciones del cóctel y la descripción de la imagen en audio utilizando un modelo de síntesis de voz.
- Presentar todo esto en una interfaz interactiva con Gradio, que permita seleccionar un cóctel, ver su imagen, leer las instrucciones y escuchar tanto las instrucciones como la descripción de la imagen.
Solución Propuesta:
Input:
- Selección de Cóctel: El usuario puede elegir un cóctel de una lista cargada desde la API TheCocktailDB.
- Modelo de Descripción de Imagen: El modelo BLIP (Bootstrapping Language-Image Pretraining) se usará para generar una descripción textual de la imagen del cóctel seleccionada.
- Modelo de Síntesis de Voz: El modelo SpeechT5 se usará para convertir tanto las instrucciones del cóctel como la descripción de la imagen en audio, con voz personalizada mediante embeddings de hablante (Speaker Embedding).
Output Esperado:
- Nombre del Cóctel: El nombre del cóctel seleccionado.
- Imagen del Cóctel: Una imagen del cóctel obtenida de la API.
- Instrucciones del Cóctel: Un texto con las instrucciones para preparar el cóctel.
- Audio con Instrucciones: Un archivo de audio con las instrucciones habladas.
- Descripción de la Imagen: Un texto con la descripción de la imagen generada por el modelo BLIP.
- Audio de la Descripción de la Imagen: Un archivo de audio con la descripción hablada de la imagen.
Tecnologías Utilizadas:
- Gradio: Para la creación de la interfaz interactiva en la que los usuarios puedan elegir cócteles y ver las descripciones e imágenes.
- Transformers de Hugging Face:
- BLIP (Image-to-Text) para la descripción de imágenes.
- SpeechT5 (Text-to-Speech) para la conversión de texto a audio.
- API TheCocktailDB: Para obtener información sobre los cócteles (nombres, imágenes, instrucciones).
- Torch y Datasets de Hugging Face: Para cargar los embeddings de voz y personalizar la voz utilizada para la síntesis.
Modelos Utilizados:
BLIP (Bootstrapping Language-Image Pretraining):
- Clasificación: Generación de texto a partir de una imagen.
- Descripción: BLIP es un modelo de preentrenamiento en imágenes y lenguaje, ideal para tareas de descripción de imágenes.
- Limitaciones:
- Aunque es eficaz en describir imágenes, puede generar descripciones genéricas o incorrectas si la imagen no contiene suficiente contexto relevante para el modelo.
- No tiene conocimiento específico sobre cócteles o bebidas, por lo que las descripciones pueden no ser siempre precisas.
SpeechT5 (Text-to-Speech):
- Clasificación: Síntesis de voz a partir de texto.
- Descripción: SpeechT5 es un modelo de transformación de texto a voz, utilizando una arquitectura basada en transformadores. En este proyecto, se utiliza para generar audios personalizados con las instrucciones del cóctel y la descripción de la imagen.
- Limitaciones:
- La calidad de la voz puede depender de los embeddings del hablante, y en ciertos casos puede no sonar completamente natural.
- Aunque soporta varios idiomas, la pronunciación puede ser imperfecta en idiomas no entrenados explícitamente.
Embeddings de Voz (Speaker Embeddings):
- Clasificación: Adaptación de la voz en la síntesis de texto a voz.
- Descripción: Los embeddings de voz permiten personalizar la voz generada por el modelo SpeechT5, adaptándola a una voz específica (en este caso, un hablante masculino de un dataset predefinido).
- Limitaciones:
- Puede haber limitaciones en la personalización de la voz, ya que solo se utilizan los embeddings disponibles en el dataset (CMU Arctic).
Flujo del Proyecto:
- Selección del Cóctel: El usuario selecciona un cóctel de la lista cargada desde la API (por ejemplo, "Margarita").
- Obtención de Información: El sistema obtiene información detallada sobre el cóctel: nombre, instrucciones y la imagen del cóctel.
- Generación de Descripción de la Imagen: Utilizando el modelo BLIP, se genera una descripción de la imagen del cóctel.
- Síntesis de Voz para Instrucciones: El texto de las instrucciones se convierte en audio utilizando el modelo SpeechT5.
- Síntesis de Voz para la Descripción de la Imagen: La descripción de la imagen también se convierte en audio utilizando SpeechT5.
- Presentación en la Interfaz: Los resultados (nombre, imagen, instrucciones, descripciones y audios) se muestran en la interfaz de usuario de Gradio.
Posibles Limitaciones:
- Conexión a la API de TheCocktailDB: Si hay problemas de conectividad o si la API no devuelve datos válidos, el sistema puede fallar al cargar la lista de cócteles.
- Precisión en la Descripción de la Imagen: El modelo BLIP puede no generar descripciones precisas de las imágenes, especialmente si los cócteles tienen decoraciones complejas o inusuales.
- Limitaciones de los Modelos TTS: Los audios generados pueden no ser completamente naturales o adecuados para todos los usuarios debido a las limitaciones del modelo SpeechT5 y los embeddings de voz disponibles.
Conclusión:
Este proyecto crea una experiencia interactiva donde los usuarios pueden elegir un cóctel, visualizar su imagen y obtener tanto las instrucciones habladas como la descripción de la imagen. La solución combina procesamiento de imágenes, generación de texto y síntesis de voz para ofrecer una experiencia única. Sin embargo, existen algunas limitaciones inherentes a los modelos y la conectividad a la API externa que pueden afectar la precisión o el rendimiento del sistema.