Image

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

Вот как создать Song Explainer на базе искусственного интеллекта с использованием Python и OpenAI.

Делиться

0b5b4dc9aeba4b76e1a07659ce415d0c

Мой любимый жанр музыки — рэп .

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

Рэп — лучший пример того, как текст сам по себе может превратить музыку в произведение искусства . Некоторые из лучших хип-хоп-песен — это буквально сэмплы, некоторые барабаны и человек, декламирующий стихи в темпе 4/4.

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

401d96400c551ad7a8e394c0ec7cbdde

Но как Genius это делает? Как им удаётся создавать такие содержательные, актуальные и полезные статьи?

Ну, в 2009 году, когда Genius только появился, я бы сказал, что они в основном создавали подобные фрагменты вручную : пользователи просто добавляли свои комментарии, возможно, какой-нибудь модератор просматривал некоторые из них, и всё, дело было закрыто.

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

Именно этим мы сегодня и займемся. 🙂

Мы используем Streamlit , Python и OpenAI для создания очень простого веб-приложения, которое по тексту песни поясняет её смысл. В частности , мы позволим пользователю задавать вопросы по тексту, делая идею Genius более «интерактивной». Мы также предоставим нашему ИИ-агенту результаты веб-поиска , чтобы LLM мог использовать другие песни и ресурсы при составлении ответа.

Чтобы оживить игру (и в целях соблюдения авторских прав, ха-ха), мы также собираемся создать наши собственные песни, используя другого ИИ-агента.

Захватывающе! Давайте начнём! 🚀

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

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

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

0f307b7231a8783f2302dbd81fb171b0

Более конкретно:

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

AI Agent также оснащен:

а. « Внутренние знания песни », которые состоят из извлеченных характеристик/метаданных песни (например, настроение, название, тема и т. д.).
б) Инструмент веб-поиска, который позволяет агенту просматривать веб-страницы в поисках песен и добавлять контекст к вопросу.

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

Давайте построим это по частям. 🧱

2. Код

2.1 Настройка

Весь код можно найти в этой папке Github.

Структура нашей работы будет следующей:

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

Данные также будут сохранены в папке данных.

ac5bc8071a8a4e471e66a67e41a7a22c

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

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

Обратите внимание : вам потребуется подготовить ключ API OpenAI как для приложения Streamlit, так и для всего, что требует генерации LLM. Вне приложения Streamlit проще всего установить его через ОС: os.getenv(“OPENAI_API_KEY”) = “api_key” . В приложении вам будет предложено скопировать и вставить его. Не волнуйтесь, всё локально.

Все это запускается с помощью следующей команды:

streamlit run lyricsgpt_app.py

Где lyricsgpt_app.py — это следующий блок кода:

Это довольно длинно, но довольно просто: каждая строка представляет собой часть веб-приложения:

  1. Название веб-приложения
  2. Селектор песен , который позволяет пользователю выбирать тексты песен из папки с данными (подробнее об этом позже)
  3. Поле для блока текста, куда пользователь может скопировать и вставить интересующую его часть текста песни.
  4. Поле вопросов , где пользователь может задать вопрос по выбранной выше части текста песни.
  5. Поле для ответов , где магистр права может ответить на вопрос.

Но это « только » исполнитель; грязную работу делает модуль lyricsgpt и его объекты/функции. Давайте рассмотрим несколько!

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

Эта часть необязательна и не включена в веб-приложение, которое фокусируется на объяснении текстов песен, подобном Genius. Можете пропустить, если вам это интересно. Но должен сказать: эта часть довольно интересная.

Для генерации текстов игра проста:

  • Вы даете мне название , атмосферу , тему и некое скрытое послание в неожиданной форме .
  • Я дам вам текст песни .

Например:

Производит:

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

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

[Еще немного текста, сгенерированного LLM]

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

Круто, правда? Вот код, который это делает:

Вы можете поэкспериментировать с этим, изменив SONG_PROMPTS , который выглядит следующим образом:

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

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

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

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

Я не хотел усложнять, но вы можете снабдить агента инструментом web_search. В этом случае я анализирую информацию напрямую; если же вы предоставите этот инструмент LLM, он сможет самостоятельно решать, когда и стоит ли выполнять поиск в интернете.

Хорошо, но работает ли это? Как выглядят результаты? Давайте узнаем!

3. Волшебство!

Это пример веб-приложения.

  1. Копируете и вставляете ключ API OpenAI , выбираете песню и говорите: «Glitter in the Rearview».
d0f91a0cb8eade9f32bf9d8d74967dda
52bf7a8b0532ca8a7c79ec1a7f645180

2. Выберите интересующую вас часть. Например, я итальянец (а я им и являюсь, лол), и я использую метры , поэтому не знаю, сколько составляет миля . Также хотелось бы узнать, есть ли отсылка к чему-то конкретному, когда певец говорит о 13 милях («Тринадцать миль до свободы» — первое предложение в припеве).

066dbe117a31d2f6fb73edb7e12be09b

3. Увидьте волшебство!

91ffcc130dd8370f6d30aba0154d09f3

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

8f3cdf6fb5fa816cce3dedf609e6a1b3

ИИ выделяет Тейлор Свифт и Адель . Особенно точное упоминание Тейлор Свифт, ведь песни о расставаниях и историях любви — её главные хиты. Она также рассказывает о своей популярности и о том, как она повлияла на её жизнь, в таких песнях, как «I know places»:

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

Тейлор Свифт – Я знаю места

Признаюсь, мне пришлось поискать это в Google.

4. Некоторые размышления…

Конечно, это далеко не идеально: это проект выходного дня, который можно запустить и запустить, а не MVP. Тем не менее, он позволяет сделать три основных вывода:

  1. При наличии правильных инструментов и метаданных степень магистра права действительно раскрывается и предоставляет полезную информацию (например, совет Тейлор Свифт)
  2. Создание оболочки LLM стало гораздо проще, чем было ещё 5 месяцев назад. Развитие этой технологии позволяет вам работать продуктивнее, чем когда-либо.
  3. Агентный ИИ действительно можно применять где угодно . Вместо того, чтобы бояться его, лучше принять его и посмотреть, что с ним можно сделать.

5. Выводы

Спасибо, что уделяете мне время; это очень много значит для меня ❤️. Вот что мы сделали вместе:

  • Разработана система на основе Genius, работающая на основе искусственного интеллекта Agentic AI , которая может интерактивно объяснять тексты песен.
  • Разработал внутренние компоненты на Python и Streamlit : от генератора текстов песен до движка вопросов и ответов.
  • Создал ИИ-агента с внутренними знаниями песен и веб-инструментом поиска для контекстных ответов.
  • Создано приложение, которое может грамотно интерпретировать тексты песен.
  • Надеюсь, мне было весело . 🙂

Хочу вставить свои пять копеек. Ежедневно по дороге на работу я слушаю подкасты (обычно интервью) с музыкантами , которые объясняют песни, отсылки и тексты. Если кто-то заменит этих музыкантов искусственным интеллектом, я устрою RIOT . Не только потому, что мне нравятся сами эти люди , но и потому, что я верю, что они будут объяснять всё с такой страстью, глубиной и эмпатией, которых не могут дать магистратуры права (и, думаю, никогда не смогут).

Однако если мы предоставим музыкальным критикам подобные инструменты ИИ, их работа станет намного проще, и они смогут в 10 раз повысить свою производительность.

7. Прежде чем отправиться в путь!

Ещё раз спасибо за уделённое время. Это очень много значит ❤️

Меня зовут Пьеро Паялунга, и я вот этот парень:

89b00cadb6b5025e6c3ef9df97989713

Я родом из Италии, имею докторскую степень Университета Цинциннати и работаю специалистом по анализу данных в The Trade Desk в Нью-Йорке. Я пишу об искусственном интеллекте, машинном обучении и меняющейся роли специалистов по анализу данных как здесь, на TDS, так и на LinkedIn. Если вам понравилась статья и вы хотите узнать больше о машинном обучении и следить за моими исследованиями, вы можете:

А. Подписывайтесь на меня в Linkedin , где я публикую все свои истории.
B. Подпишитесь на меня на GitHub , где вы можете увидеть весь мой код.
C. Если у вас есть вопросы, отправьте мне письмо по адресу piero.paialunga@hotmail.

Источник: towardsdatascience.com

✅ Найденные теги: Музыка, новости

ОСТАВЬТЕ СВОЙ КОММЕНТАРИЙ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

Звёздное небо с галактиками и туманностями, космос, Вселенная, астрофотография.
Женщина с длинными тёмными волосами в синем свете, нейтральный фон.
Спутник исследует черную дыру в космосе, испускающий световой луч.
Пикачу использует электрический разряд на фоне неба.
Черный углеродное волокно с текстурой плетения, отражающий свет.
Круглый экран с изображением замка и горы, рядом электронная плата.
Код на экране компьютера, программирование, интерфейс разработчика.
Статистика использования видеокарт NVIDIA RTX, показывающая изменения за октябрь-февраль.
Макросъемка клетки под микроскопом, текстура и форма на голубом фоне.
Image Not Found
Звёздное небо с галактиками и туманностями, космос, Вселенная, астрофотография.

Система оповещения обсерватории Рубина отправила 800 000 сигналов в первую ночь наблюдений.

Астрономы будут получать оповещения о небесных явлениях в течение нескольких минут после их обнаружения. Теренс О'Брайен, редактор раздела «Выходные». Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной…

Мар 2, 2026
Женщина с длинными тёмными волосами в синем свете, нейтральный фон.

Расследование в отношении 61-фунтовой машины, которая «пожирает» пластик и выплевывает кирпичи.

Обзор компактного пресса для мягкого пластика Clear Drop — и что будет дальше. Шон Холлистер, старший редактор Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной странице вашего…

Мар 2, 2026
Черный углеродное волокно с текстурой плетения, отражающий свет.

Материал будущего: как работает «бессмертный» композит

Учёные из Университета штата Северная Каролина представили композит нового поколения, способный самостоятельно восстанавливаться после серьёзных повреждений.  Речь идёт о модифицированном армированном волокном полимере (FRP), который не просто сохраняет прочность при малом весе, но и способен «залечивать» внутренние…

Мар 2, 2026
Круглый экран с изображением замка и горы, рядом электронная плата.

Круглый дисплей Waveshare для креативных проектов

Круглый 7-дюймовый сенсорный дисплей от Waveshare создан для разработчиков и дизайнеров, которым нужен нестандартный экран.  Это IPS-панель с разрешением 1 080×1 080 пикселей, поддержкой 10-точечного ёмкостного сенсора, оптической склейкой и защитным закалённым стеклом, выполненная в круглом форм-факторе.…

Мар 2, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых