Новости и статьи об искусственном интеллекте и нейросетях. Мы собираем и обрабатываем самую актуальную информацию из мира AI. О проекте

Статьи

Музыка, тексты и агентный ИИ: создание объяснителя песен

Статья описывает создание веб-приложения на Python, Streamlit и OpenAI для интерактивного объяснения текстов песен в стиле Genius с использованием агентного ИИ. Система включает генерацию собственных песен, анализ фрагментов и интеграцию веб-поиска для контекста. Проект подчеркивает модульность и потенциал ИИ в музыкальной аналитике, сохраняя роль человеческого эксперта.

15 ноября 2025 г.
7 мин
1

Рэп представляет собой уникальный жанр. Эта музыка способна вызывать эмоции, побуждать к пению и танцам, а также служит средством изучения английского языка. Вспоминается момент, когда впервые удалось разобраться в творчестве Biggie и Tupac, узнав о Бруклине, Калифорнии, сленге, жизненных трудностях и глубоких смыслах, скрытых в композициях.

Рэп идеально иллюстрирует, как именно тексты песен превращают музыку в настоящее произведение искусства. Многие выдающиеся хип-хоп треки состоят всего из семпла, ударных и поэтического речитатива на ритме 4/4.

Для тех, кто владеет языком, чтение текстов может быть необязательным, но для неанглоязычных слушателей ресурсы вроде Genius значительно упрощают задачу. Genius — это онлайн-платформа, собирающая тексты песен: если нужно найти слова композиции, это идеальный источник. Благодаря Genius даже сложные строки Biggie можно было прочесть, перевести через поисковые системы. Более того, платформа предоставляет пояснения к специфическим отсылкам в виде боковых заметок.

Пример аннотации текста песни на платформе Genius
Изображение с Genius [ссылка]

Как именно Genius создает такие информативные, актуальные и полезные заметки?

В 2009 году, на момент запуска Genius, такие аннотации в основном готовились вручную: пользователи добавляли комментарии, возможно, с последующей проверкой модераторами, и на этом процесс завершался.

В настоящее время, благодаря передовым технологиям искусственного интеллекта, этот процесс можно оптимизировать и сделать более эффективным. Хотя агентный ИИ не способен полностью заменить эксперта по музыке по множеству причин, он может существенно поддерживать специалиста с глубокими знаниями в этой области, предоставляя необходимые инструменты для создания аннотаций.

Именно этим мы займемся в этой статье. Будет разработано простое веб-приложение на базе Streamlit, Python и OpenAI, которое по тексту песни дает разъяснения к отдельным фрагментам. В частности, приложение позволит задавать вопросы о выбранном отрывке, делая идею Genius более интерактивной. Кроме того, агент ИИ получит доступ к результатам веб-поиска, чтобы анализировать другие песни и ресурсы при формировании ответов.

Для разнообразия и с учетом авторских прав также будет создан механизм генерации собственных песен с помощью другого ИИ-агента.

1. Проектирование системы

Сначала спроектируем систему. Вот как она выглядит:

Схема проектирования системы объяснителя песен
Изображение, созданное автором

Подробнее:

  1. Пользователь может сгенерировать песню с нуля с помощью ИИ-агента. Это опционально; уже существует набор готовых песен для использования.
  2. Пользователь выбирает фрагмент текста и формулирует вопрос.
  3. ИИ-агент формирует ответ в стиле Genius.

ИИ-агент оснащен:

a. "Внутренними знаниями о песне", включающими извлеченные характеристики и метаданные (например, атмосфера, название, тема и т.д.).
b. Инструментом веб-поиска, позволяющим просматривать интернет для поиска песен и добавления контекста к вопросу.

Такое проектирование обеспечивает высокую модульность, что упрощает добавление новых элементов для повышения сложности системы. Например, для усложнения генерации песен можно доработать только соответствующий агент, не затрагивая остальной код.

Теперь соберем систему поэтапно.

2. Код

2.1 Настройка

Структура проекта включает:

  1. Генератор текстов, реализованный в файле generate_madeup_lyrics.py.
  2. Модуль для ответов на вопросы о текстах, представленный в qa.py.
  3. Само веб-приложение (файл для запуска через Streamlit) — lyricsgpt_app.py.
  4. Вспомогательные модули (например, utils.py, constants.py, config.py и другие).

Данные хранятся в папке data.

Структура файлов проекта
Изображение, созданное автором

Чтобы избежать излишних деталей, опишем только ключевые компоненты. Начнем с основы: приложения Streamlit.

2.2 Приложение Streamlit

Для работы потребуется ключ API OpenAI, как для самого приложения, так и для генерации с помощью LLM. Вне приложения ключ можно установить через переменные окружения: os.getenv("OPENAI_API_KEY") = "api_key". В приложении ключ вводится вручную. Все происходит локально.

Запуск осуществляется командой:

streamlit run lyricsgpt_app.py

Файл lyricsgpt_app.py содержит следующий код:

Этот код довольно объемный, но прост: каждая строка соответствует элементу интерфейса.

  1. Заголовок приложения.
  2. Выбор песни, позволяющий загрузить текст из папки data (подробности ниже).
  3. Поле для вставки фрагмента текста.
  4. Поле для ввода вопроса о выбранном фрагменте.
  5. Поле для отображения ответа от LLM.

Это лишь исполнительная часть; основная логика реализована в модуле lyricsgpt и его функциях. Рассмотрим несколько из них.

2.3 Генератор текстов

Эта часть опциональна и не интегрирована в веб-приложение, фокусирующееся на объяснителе в стиле Genius. Ее можно пропустить, если интересен только объяснитель. Тем не менее, этот компонент интересен.

Процесс генерации текстов прост:

  • Пользователь предоставляет название, атмосферу, тему и скрытый поворот.
  • ИИ возвращает текст песни.

Например, такой ввод приводит к следующему результату:

Куплет 1
Под городскими огнями шепот танцует по горизонту, мы сияли в ночи, словно бриллианты в полночном небе. Но любовь была лишь мечтой небоскреба, построенной на хрупких швах, теперь я сворачиваю с шоссе, оставляя эхо между нами.

Припев
И все это блеск в зеркале заднего вида, угасающий в оттенках синего, каждый смех и каждая слеза уплывают из виду. Пока дорога разворачивается вперед, я позволяю воспоминаниям тлеть, это всего лишь блеск в зеркале заднего вида, отпускающий меня и тебя.

[Дополнительный текст, сгенерированный LLM]

Аутро
Так я еду в тишину, где прошлое не может исказить, оставляя блеск в зеркале заднего вида и осколки меня и тебя. Это всего лишь блеск в зеркале заднего вида, история любви, закончившаяся слишком рано.

Интересный результат, верно? Код для этого выглядит следующим образом:

Его можно настроить, изменяя SONG_PROMPTS, который имеет такую структуру:

Каждый сгенерированный текст сохраняется в JSON-файл, по умолчанию data/generated_lyrics.json. Генерация не обязательна; в файле уже есть примеры.

2.4 Объяснитель текстов

Одно из преимуществ эры агентного ИИ — значительная экономия времени на разработку. Вся логика вопрос-ответ, включая возможность веб-поиска, умещается в этот блок кода:

Этот код выполняет все: отвечает на вопрос, считывает метаданные песни и интегрирует онлайн-информацию при необходимости.

Чтобы не усложнять, агент оснащен инструментом web_search. Здесь информация парсится напрямую; с инструментом LLM сам решает, когда искать в сети.

Работает ли это? Как выглядят результаты? Давайте проверим.

3. Результаты работы

Вот пример работы веб-приложения.

  1. Вводится ключ API OpenAI, выбирается песня, например, “Glitter in the Rearview”.
Интерфейс приложения Streamlit с выбором песни
Изображение, созданное автором
Отображение текста песни в приложении

2. Выбирается интересующий фрагмент. Например, для итальянца, привыкшего к метрам, непонятна дистанция в миле. Также интересно, есть ли отсылка в строке о 13 милях (“Thirteen miles to freedom” — первая фраза в бридж).

Выбор фрагмента текста для анализа

3. Наблюдаем результат.

Ответ ИИ на вопрос о фрагменте текста
Изображение, созданное автором

Теперь попробуем сложнее. Вставлен весь второй куплет, вопрос: какой певец мог бы написать такое.

Анализ второго куплета и предложение исполнителей

ИИ упоминает Taylor Swift и Adele. Упоминание Taylor Swift особенно точное, поскольку песни о разрывах и любовных историях — ее хиты. Она также затрагивает темы популярности и влияния на жизнь в композициях вроде “I know places”:

Свет вспыхивает, и мы бежим к оградам, Пусть говорят что хотят, мы не услышим.

Taylor Swift – I know places

4. Размышления

Это далекое от идеала: проект выходного дня, ближе к прототипу, чем к полноценному продукту. Однако он дает три ключевых вывода:

  1. При наличии подходящих инструментов и метаданных LLM демонстрирует выдающиеся insights, как в случае с предложением Taylor Swift.
  2. Создание обертки для LLM стало значительно проще, чем даже пять месяцев назад. Эволюция технологий повышает продуктивность.
  3. Агентный ИИ применим повсеместно. Вместо опасений лучше принять его и исследовать возможности.

5. Заключение

В ходе работы была спроектирована система в духе Genius на базе агентного ИИ для интерактивного объяснения текстов песен.

  • Разработаны backend-компоненты на Python и Streamlit, от генератора текстов до движка Q&A.
  • Создан ИИ-агент с внутренними знаниями о песне и инструментом веб-поиска для контекстных ответов.
  • Построено приложение для интеллектуального анализа текстов.
  • Процесс оказался увлекательным.

В повседневной рутине, во время поездок, прослушиваются подкасты с интервью музыкантов, где они разбирают песни, отсылки и тексты. Замена таких артистов ИИ вызвала бы протест. Не только из-за симпатии к людям, но и потому, что они передают страсть, глубину и эмпатию, недоступные LLM и, вероятно, недостижимые в будущем.

В то же время предоставление таких ИИ-инструментов музыкальным критикам упрощает их труд и увеличивает продуктивность вдесятеро.