--- 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: 1. **Obtener información sobre cócteles** desde una API externa (TheCocktailDB). 2. **Generar una descripción** de la imagen del cóctel utilizando un modelo de procesamiento de imágenes. 3. **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. 4. **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:** 1. **Selección de Cóctel:** El usuario puede elegir un cóctel de una lista cargada desde la API TheCocktailDB. 2. **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. 3. **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:** 1. **Nombre del Cóctel:** El nombre del cóctel seleccionado. 2. **Imagen del Cóctel:** Una imagen del cóctel obtenida de la API. 3. **Instrucciones del Cóctel:** Un texto con las instrucciones para preparar el cóctel. 4. **Audio con Instrucciones:** Un archivo de audio con las instrucciones habladas. 5. **Descripción de la Imagen:** Un texto con la descripción de la imagen generada por el modelo BLIP. 6. **Audio de la Descripción de la Imagen:** Un archivo de audio con la descripción hablada de la imagen. ### **Tecnologías Utilizadas:** 1. **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. 2. **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. 3. **API TheCocktailDB:** Para obtener información sobre los cócteles (nombres, imágenes, instrucciones). 4. **Torch y Datasets de Hugging Face:** Para cargar los embeddings de voz y personalizar la voz utilizada para la síntesis. ### **Modelos Utilizados:** 1. **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. 2. **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. 3. **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:** 1. **Selección del Cóctel:** El usuario selecciona un cóctel de la lista cargada desde la API (por ejemplo, "Margarita"). 2. **Obtención de Información:** El sistema obtiene información detallada sobre el cóctel: nombre, instrucciones y la imagen del cóctel. 3. **Generación de Descripción de la Imagen:** Utilizando el modelo BLIP, se genera una descripción de la imagen del cóctel. 4. **Síntesis de Voz para Instrucciones:** El texto de las instrucciones se convierte en audio utilizando el modelo SpeechT5. 5. **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. 6. **Presentación en la Interfaz:** Los resultados (nombre, imagen, instrucciones, descripciones y audios) se muestran en la interfaz de usuario de Gradio. ## **Posibles Limitaciones:** 1. **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. 2. **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. 3. **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.