es rap.
La música rap me hizo llorar, cantar y bailar, y también fue la forma en que aprendí el idioma inglés. Todavía recuerdo la primera vez que me senté y traté de entender a Biggie y Tupac. Recuerdo haber aprendido sobre Brooklyn, California, la jerga, las luchas y todos los demás mensajes poderosos detrás de esas canciones.
La música rap es el mejor ejemplo de cómo las letras por sí solas pueden hacer de la música una obra de arte. Algunas de las mejores canciones de hip-hop son literalmente una muestra, algunos tambores y una persona que canta poesía en un tempo de 4/4.
Y aunque para alguien que ni siquiera sea necesario leer la letra, ya que conoce el idioma, para quienes no hablan inglés como yo, herramientas como Genius hicieron la vida increíblemente más fácil. Genius es un coleccionista de letras de música en línea: si estás buscando la letra de una canción, Genius es tu opción. Gracias a Genius, incluso si no entendía lo que decía Biggie, podía sentarme y leer las letras, luego buscarlas en Google y traducirlas. No solo eso: cuando un rapero (o un cantante en general) hace una referencia específica que es demasiado difícil de entender, Genius te lo aclarará a través de algunos fragmentos de la barra lateral.
¿Pero cómo hace Genius eso? ¿Cómo producen fragmentos tan reveladores, actualizados y útiles?
Bueno, en 2009, cuando nació Genius, diría que principalmente producían este tipo de fragmentos manualmente: los usuarios simplemente agregaban sus comentarios, tal vez algún moderador podría revisar algunos de ellos, y listo, trato cerrado.
Sin embargo, hoy en día, con las poderosas tecnologías de inteligencia artificial que tenemos, el proceso puede ser mucho más fluido y eficiente. Si bien no creo que una IA agente pueda hacer el trabajo de un experto en música (por muchas razones), creo que una persona con tal conocimiento del dominio podría recibir ayuda de la IA agente, que le proporcionaría las herramientas adecuadas para crear los fragmentos.
Y eso es lo que estamos haciendo hoy. 🙂
Usaremos Streamlit, Python y OpenAI para crear una aplicación web súper simple que, dada la letra de una canción, aclare lo que significa el texto. Más específicamente, permitiremos que el usuario haga preguntas sobre el texto, haciendo que la idea Genius sea más “interactiva”. También le daremos a nuestro agente de IA los resultados de la búsqueda web para permitir que el LLM busque otras canciones y recursos al elaborar la respuesta.
Para darle vida a las cosas (y por motivos de derechos de autor jajaja), también crearemos nuestras propias canciones, utilizando otro agente de IA.
¡Emocionante! ¡Empecemos! 🚀
Si está interesado en el resultado final de este experimento, pase a la tercera sección. Si quieres crear magia conmigo, comienza desde la siguiente sección. Sin juicios. 🙂
1. Diseño del sistema
Primero diseñemos nuestro sistema. Así es como se ve:
Más específicamente:
El Usuario tiene la posibilidad de crear la canción desde cero utilizando un Agente de IA. Eso es opcional; Ya se ha generado un lote de canciones que se pueden utilizar en su lugar. El Usuario puede seleccionar una parte del texto y realizar una pregunta. El Agente de IA puede generar la respuesta en un estilo “genial”.
El Agente AI también está equipado con:
a. El “Conocimiento interno de la canción”, que consta de las características/metadatos extraídos de la canción (por ejemplo, ambiente, título, tema, etc.).
b. La herramienta de búsqueda web, que permite al agente navegar por la web para buscar canciones y agregar contexto a la pregunta.
Este diseño tiene buena modularidad, lo que significa que es fácil agregar partes para aumentar la complejidad del sistema. Por ejemplo, si desea que la generación de canciones sea más sofisticada, puede modificar fácilmente el Agente de generación de canciones sin volverse loco con las otras partes del código.
Construyamos esto pieza por pieza. 🧱
2. Código
2.1 Configuración
El código completo se puede encontrar en esta carpeta de Github.
La estructura de nuestro trabajo será la siguiente:
Un generador de letras, que es generate_madeup_lyrics.py La respuesta de las letras, que es qa.py La aplicación web en sí (el archivo que ejecutaremos a través de Streamlit), que es letrasgpt_app.py Un grupo de ayudas (como utils.py, constantes.py, config.py, etc.)
Los datos también se almacenarán en una carpeta de datos.
No quiero aburrirte con todos los pequeños detalles, así que sólo describiré los componentes principales de esta estructura. Comencemos con el núcleo: la aplicación Streamlit.
2.2 Aplicación Streamlit
Tenga en cuenta: deberá tener lista una clave API de OpenAI, tanto para la aplicación Streamlit como para cualquier cosa que requiera la generación de LLM. Fuera de la aplicación Streamlit, la forma más sencilla es configurarla usando el sistema operativo: os.getenv(“OPENAI_API_KEY”) = “api_key”. Dentro de la aplicación, se le pedirá que la copie y pegue. No te preocupes, todo es local.
Todo se ejecuta con el siguiente comando:
Streamlit ejecutar letrasgpt_app.py
Donde letrasgpt_app.py es el siguiente bloque de código:
Esto es bastante largo, pero bastante sencillo: cada línea representa una parte de la aplicación web:
El título de la aplicación web El selector de canciones, que permite al usuario seleccionar la letra de la carpeta de datos (más sobre esto más adelante) El cuadro para el bloque de texto, donde el usuario puede copiar y pegar la parte de la letra de interés El cuadro de preguntas, donde el usuario puede hacer una pregunta sobre la parte de la letra de interés seleccionada arriba El cuadro de respuesta, donde el LLM puede responder la pregunta.
Pero éste es “sólo” el albacea; el trabajo sucio lo hace el módulo letrasgpt y sus objetos/funciones. ¡Veamos algunos!
2.3 Generador de letras
Esta parte es opcional y no está incluida en la aplicación web, que se centra en el Explicador de letras tipo Genius. Siéntete libre de omitir esto si estás interesado en eso. Pero tengo que decirlo: esta parte es genial.
Para la generación de letras, el juego es sencillo:
Me das un título, una vibra, un tema y algún mensaje oculto en un giro. Os dejo la letra.
Por ejemplo:
Produce:
Verso 1
Debajo de las luces de la ciudad, los susurros bailaban a lo largo del horizonte, brillamos en la noche, como diamantes en un cielo de medianoche. Pero el amor era sólo un sueño de gran altura, construido sobre costuras frágiles, ahora me estoy saliendo de la autopista, dejando ecos en el medio.Coro
Y todo es brillo en el retrovisor, desvaneciéndose en tonos de azul, cada risa y cada lágrima, desapareciendo de la vista. A medida que el camino avanza, dejo que los recuerdos se cocinen, solo brillan en el retrovisor, soltándonos a ti y a mí.[Some more LLM Generated Text]
Outro
Así que conduzco hacia el silencio, donde el pasado no puede malinterpretarse, dejando brillo en el retrovisor y fragmentos de ti y de mí. Es sólo brillo en el retrovisor, una historia de amor que se acabó demasiado pronto.
Muy bien, ¿verdad? El código para hacer eso es el siguiente:
Puedes jugar con él modificando SONG_PROMPTS, que se ve así:
Cada vez que generes una canción, irá a un archivo JSON. De forma predeterminada, es data/generated_lyrics.json. No es necesario que generes una canción; Ya hay algunos ejemplos que hice allí.
2.4 Explicación de letras
Lo mejor de toda esta era Agentic es la cantidad de tiempo que ahorras para construir estas cosas. Toda la lógica de preguntas y respuestas, además de la capacidad de la IA para utilizar la búsqueda web en línea, se encuentra en este bloque de código:
Esto lo hace todo: responde la pregunta, lee los metadatos de las letras e integra información en línea si se le solicita o es necesario.
No quería ser demasiado sofisticado, pero puedes equipar al agente con la herramienta web_search. En este caso, estoy analizando la información directamente; Si le proporciona la herramienta al LLM, este puede decidir cuándo y si buscar en línea.
Ok, pero ¿esto funciona? ¿Cómo se ven los resultados? ¡Descubrámoslo!
3. ¡La magia!
Este es un ejemplo de la aplicación web.
Copias y pegas tu clave API de OpenAI y seleccionas una canción. Diga “Brillo en el retrovisor”.
2. Seleccione la parte de interés. Por ejemplo, digamos que soy un chico italiano (que lo soy jajaja) y uso metros, así que no sé qué tan lejos es una milla. También me gustaría saber si hay una referencia a algo específico cuando el cantante dice 13 millas (“Trece millas hacia la libertad” es la primera frase del puente)
3. ¡Mira la magia!
Intentemos algo más difícil. Aquí pegué todo el segundo verso y le pedí a la IA que me dijera qué cantante escribiría algo como esto.
La IA señala a Taylor Swift y Adele. Especialmente la referencia a Taylor Swift es extremadamente precisa, ya que las canciones sobre rupturas e historias de amor son sus mayores éxitos. También habla de su popularidad y de cómo ésta afecta su vida en canciones como “Conozco lugares”:
Las luces parpadean y correremos hacia las vallas, déjales decir lo que quieran, no lo escucharemos.
Taylor Swift – Conozco lugares
Admito que tuve que buscarlo en Google.
4. Algunos piensan…
Ahora bien, esto está lejos de ser perfecto: es un proyecto de fin de semana plug-and-play, menos que un MVP. Sin embargo, ofrece tres conclusiones generalizadas:
Cuando se le proporcionan las herramientas y los metadatos adecuados, el LLM realmente brilla y proporciona información valiosa (como la sugerencia de Taylor Swift). Crear un contenedor de LLM es mucho más fácil que hace cinco meses. La forma en que está evolucionando esta tecnología le permite ser más productivo que nunca. La IA agente realmente se puede aplicar en todas partes. En lugar de asustarnos, es mejor aceptarlo y ver qué podemos hacer con él.
5. Conclusiones
Gracias por pasar tiempo conmigo; significa mucho ❤️. Esto es lo que hemos hecho juntos:
Diseñó un sistema inspirado en Genius impulsado por Agentic AI que puede explicar las letras de las canciones de forma interactiva. Desarrollé los componentes backend en Python y Streamlit, desde el generador de letras hasta el motor de preguntas y respuestas. Creó el agente de IA con conocimiento interno de las canciones y una herramienta de búsqueda web para respuestas contextuales. Creó una aplicación que puede interpretar letras de manera inteligente. Me divertí un poco mientras hacía eso, espero. 🙂
Quiero cerrar con mis 2 centavos. En mi viaje diario al trabajo escucho podcasts (normalmente entrevistas) de artistas que hacen música y me explican las canciones, las referencias y las letras. Si alguien reemplaza a esos músicos con una IA, voy a RIOT. No (solo) porque me agradan las personas mismas, sino porque creo que explicarán las cosas con una pasión, profundidad y empatía que los LLM no pueden brindar (y creo que nunca lo harán).
Sin embargo, si proporcionamos a los críticos musicales este tipo de herramientas de inteligencia artificial, su trabajo se vuelve mucho más fácil y pueden multiplicar por diez su productividad.
7. ¡Antes de salir!
Gracias de nuevo por tu tiempo. Significa mucho ❤️
Mi nombre es Piero Paialunga y soy este chico:
Soy originario de Italia, tengo un doctorado. de la Universidad de Cincinnati y trabaja como científico de datos en The Trade Desk en la ciudad de Nueva York. Escribo sobre IA, aprendizaje automático y la evolución del papel de los científicos de datos tanto aquí en TDS como en LinkedIn. Si te gustó el artículo y quieres saber más sobre el aprendizaje automático y seguir mis estudios, puedes:
R. Sígueme en Linkedin, donde publico todas mis historias.
B. Sígueme en GitHub, donde podrás ver todo mi código.
C. Si tienes dudas puedes enviarme un correo electrónico a piero.paialunga@hotmail