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

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

Но как Genius это делает? Как им удаётся создавать такие содержательные, актуальные и полезные статьи?
Ну, в 2009 году, когда Genius только появился, я бы сказал, что они в основном создавали подобные фрагменты вручную : пользователи просто добавляли свои комментарии, возможно, какой-нибудь модератор просматривал некоторые из них, и всё, дело было закрыто.
Однако сегодня , благодаря мощным технологиям искусственного интеллекта, этот процесс можно сделать гораздо более плавным и эффективным. Хотя я не верю, что агентный ИИ сможет справиться с работой музыкального эксперта (по многим причинам), я считаю, что человеку с такими знаниями в этой области может помочь агентный ИИ, который предоставит ему… правильные инструменты для создания фрагментов.
Именно этим мы сегодня и займемся. 🙂
Мы используем Streamlit , Python и OpenAI для создания очень простого веб-приложения, которое по тексту песни поясняет её смысл. В частности , мы позволим пользователю задавать вопросы по тексту, делая идею Genius более «интерактивной». Мы также предоставим нашему ИИ-агенту результаты веб-поиска , чтобы LLM мог использовать другие песни и ресурсы при составлении ответа.
Чтобы оживить игру (и в целях соблюдения авторских прав, ха-ха), мы также собираемся создать наши собственные песни, используя другого ИИ-агента.
Захватывающе! Давайте начнём! 🚀
Если вам интересен конечный результат этого эксперимента, переходите сразу к третьему разделу. Если хотите творить волшебство вместе со мной, начните со следующего. Без осуждения. 🙂
1. Проектирование системы
Давайте сначала спроектируем нашу систему. Вот как она выглядит:

Более конкретно:
- Пользователь может создать песню с нуля с помощью ИИ-агента. Это необязательно; пакет песен уже создан и может быть использован.
- Пользователь может выделить часть текста и задать вопрос.
- Агент ИИ может генерировать ответ в стиле «гения».
AI Agent также оснащен:
а. « Внутренние знания песни », которые состоят из извлеченных характеристик/метаданных песни (например, настроение, название, тема и т. д.).
б) Инструмент веб-поиска, который позволяет агенту просматривать веб-страницы в поисках песен и добавлять контекст к вопросу.
Эта архитектура отличается хорошей модульностью, что позволяет легко добавлять элементы для повышения сложности системы. Например, если вы хотите сделать генерацию песен более сложной, вы можете легко настроить агент генерации песен, не заморачиваясь с остальным кодом.
Давайте построим это по частям. 🧱
2. Код
2.1 Настройка
Весь код можно найти в этой папке Github.
Структура нашей работы будет следующей:
- Генератор текстов песен — generate_madeup_lyrics.py
- Ответ в тексте песни — qa.py
- Само веб-приложение (файл, который мы запустим через Streamlit), которое называется lyricsgpt_app.py
- Множество вспомогательных файлов (таких как utils.py, constants.py, config.py и т. д.)
Данные также будут сохранены в папке данных.

Не хочу утомлять вас мелкими подробностями, поэтому опишу лишь основные компоненты этой структуры. Начнём с самого главного: приложения Streamlit.
2.2 Приложение Streamlit
Обратите внимание : вам потребуется подготовить ключ API OpenAI как для приложения Streamlit, так и для всего, что требует генерации LLM. Вне приложения Streamlit проще всего установить его через ОС: os.getenv(“OPENAI_API_KEY”) = “api_key” . В приложении вам будет предложено скопировать и вставить его. Не волнуйтесь, всё локально.
Все это запускается с помощью следующей команды:
streamlit run lyricsgpt_app.py
Где lyricsgpt_app.py — это следующий блок кода:
Это довольно длинно, но довольно просто: каждая строка представляет собой часть веб-приложения:
- Название веб-приложения
- Селектор песен , который позволяет пользователю выбирать тексты песен из папки с данными (подробнее об этом позже)
- Поле для блока текста, куда пользователь может скопировать и вставить интересующую его часть текста песни.
- Поле вопросов , где пользователь может задать вопрос по выбранной выше части текста песни.
- Поле для ответов , где магистр права может ответить на вопрос.
Но это « только » исполнитель; грязную работу делает модуль lyricsgpt и его объекты/функции. Давайте рассмотрим несколько!
2.3 Генератор текстов песен
Эта часть необязательна и не включена в веб-приложение, которое фокусируется на объяснении текстов песен, подобном Genius. Можете пропустить, если вам это интересно. Но должен сказать: эта часть довольно интересная.
Для генерации текстов игра проста:
- Вы даете мне название , атмосферу , тему и некое скрытое послание в неожиданной форме .
- Я дам вам текст песни .
Например:
Производит:
Куплет 1
Под городскими огнями шёпот танцевал по горизонту, мы сияли в ночи, словно бриллианты в полночном небе. Но любовь была всего лишь мечтой, построенной на хрупких швах, и вот я съезжаю с шоссе, оставляя эхо между нами.Хор
И всё это мерцает в зеркале заднего вида, растворяясь в оттенках синего, каждый смех и каждая слеза исчезают из виду. Пока дорога уносится вперёд, я позволяю воспоминаниям бродить во мне, это просто мерцание в зеркале заднего вида, отпускающее нас с тобой.[Еще немного текста, сгенерированного LLM]
Аутро
И я еду в тишину, где прошлое не может быть неверно истолковано, оставляя блеск в зеркале заднего вида и осколки нас с тобой. Это всего лишь блеск в зеркале заднего вида, история любви, которая закончилась слишком рано.
Круто, правда? Вот код, который это делает:
Вы можете поэкспериментировать с этим, изменив SONG_PROMPTS , который выглядит следующим образом:
Каждый раз, когда вы генерируете песню, она сохраняется в JSON- файл. По умолчанию это data/generated_lyrics.json . Вам не обязательно генерировать песню; несколько примеров я уже сделал там.
2.4 Объяснение текстов песен
Самое крутое в эпоху Agentic — это количество времени, которое вы экономите на разработке всего этого. Вся логика «вопрос-ответ», а также способность ИИ использовать онлайн-поиск, заключены в этом блоке кода:
Он делает все: отвечает на вопросы, читает метаданные текста песни и интегрирует информацию онлайн, если это требуется/необходимо.
Я не хотел усложнять, но вы можете снабдить агента инструментом web_search. В этом случае я анализирую информацию напрямую; если же вы предоставите этот инструмент LLM, он сможет самостоятельно решать, когда и стоит ли выполнять поиск в интернете.
Хорошо, но работает ли это? Как выглядят результаты? Давайте узнаем!
3. Волшебство!
Это пример веб-приложения.
- Копируете и вставляете ключ API OpenAI , выбираете песню и говорите: «Glitter in the Rearview».


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

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

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

ИИ выделяет Тейлор Свифт и Адель . Особенно точное упоминание Тейлор Свифт, ведь песни о расставаниях и историях любви — её главные хиты. Она также рассказывает о своей популярности и о том, как она повлияла на её жизнь, в таких песнях, как «I know places»:
Вспыхнут огни, и мы побежим к ограде. Пусть говорят, что хотят, мы не услышим.
Тейлор Свифт – Я знаю места
Признаюсь, мне пришлось поискать это в Google.
4. Некоторые размышления…
Конечно, это далеко не идеально: это проект выходного дня, который можно запустить и запустить, а не MVP. Тем не менее, он позволяет сделать три основных вывода:
- При наличии правильных инструментов и метаданных степень магистра права действительно раскрывается и предоставляет полезную информацию (например, совет Тейлор Свифт)
- Создание оболочки LLM стало гораздо проще, чем было ещё 5 месяцев назад. Развитие этой технологии позволяет вам работать продуктивнее, чем когда-либо.
- Агентный ИИ действительно можно применять где угодно . Вместо того, чтобы бояться его, лучше принять его и посмотреть, что с ним можно сделать.
5. Выводы
Спасибо, что уделяете мне время; это очень много значит для меня ❤️. Вот что мы сделали вместе:
- Разработана система на основе Genius, работающая на основе искусственного интеллекта Agentic AI , которая может интерактивно объяснять тексты песен.
- Разработал внутренние компоненты на Python и Streamlit : от генератора текстов песен до движка вопросов и ответов.
- Создал ИИ-агента с внутренними знаниями песен и веб-инструментом поиска для контекстных ответов.
- Создано приложение, которое может грамотно интерпретировать тексты песен.
- Надеюсь, мне было весело . 🙂
Хочу вставить свои пять копеек. Ежедневно по дороге на работу я слушаю подкасты (обычно интервью) с музыкантами , которые объясняют песни, отсылки и тексты. Если кто-то заменит этих музыкантов искусственным интеллектом, я устрою RIOT . Не только потому, что мне нравятся сами эти люди , но и потому, что я верю, что они будут объяснять всё с такой страстью, глубиной и эмпатией, которых не могут дать магистратуры права (и, думаю, никогда не смогут).
Однако если мы предоставим музыкальным критикам подобные инструменты ИИ, их работа станет намного проще, и они смогут в 10 раз повысить свою производительность.
7. Прежде чем отправиться в путь!
Ещё раз спасибо за уделённое время. Это очень много значит ❤️
Меня зовут Пьеро Паялунга, и я вот этот парень:

Я родом из Италии, имею докторскую степень Университета Цинциннати и работаю специалистом по анализу данных в The Trade Desk в Нью-Йорке. Я пишу об искусственном интеллекте, машинном обучении и меняющейся роли специалистов по анализу данных как здесь, на TDS, так и на LinkedIn. Если вам понравилась статья и вы хотите узнать больше о машинном обучении и следить за моими исследованиями, вы можете:
А. Подписывайтесь на меня в Linkedin , где я публикую все свои истории.
B. Подпишитесь на меня на GitHub , где вы можете увидеть весь мой код.
C. Если у вас есть вопросы, отправьте мне письмо по адресу piero.paialunga@hotmail.
Источник: towardsdatascience.com























