Polymath: Преобразование музыкальных библиотек с использованием ИИ
Polymath представляет собой мощный инструмент, который использует машинное обучение для преобразования любых музыкальных библиотек (например, с жесткого диска или YouTube) в выборочную библиотеку для производства музыки.
Основные возможности
- Разделение песен на составляющие: Инструмент автоматически разделяет песни на стеки (ритм, бас, и т.д.), квантизирует их к одному темпу и ритмической сетке (например, 120 бпм), анализирует музыкальную структуру (например, куплет, припев, и т.д.), ключ (например, C4, E3, и т.д.) и другие сведения (тон, громкость, и т.д.), а также преобразует аудио в MIDI.
- Поиск похожих треков: С помощью возможности поиска Polymath легко находить связанные треки. Это позволяет создавать уникальные композиции, комбинируя элементы из разных песен. Например, можно взять ритм из трека Funkadelic, бас-линию из трека Tito Puente и соответствующие трубы из трека Fela Kuti и без проблем интегрировать их в свой DAW.
Практические применения
- Для музыкальных производителей: Polymath упрощает процесс создания новых композиций, предоставляя доступ к большому количеству музыкальных элементов, которые можно комбинировать и использовать в своих работах.
- Для DJ: С помощью Polymath можно легко создать полированные, часовые миксы DJ-сетов, используя функцию поиска похожих треков и квантизируя треки к одному темпу.
- Для разработчиков ML-аудио: Инструмент упрощает процесс создания больших музыкальных наборов данных для обучения генеративных моделей.
Как работает
- Разделение музыкального источника: Выполняется с использованием нейронной сети Demucs.
- Сегментация/метка музыкальной структуры: Выполняется с использованием нейронной сети sf_segmenter.
- Отслеживание тональности и обнаружение ключа: Выполняется с использованием нейронной сети Crepe.
- Транскрипция музыки в MIDI: Выполняется с использованием нейронной сети Basic Pitch.
- Квантизация и выравнивание музыки: Выполняется с использованием pyrubberband.
- Извлечение и обработка музыкальной информации: Выполняется с использованием librosa.
Требования и установка
Для использования Polymath вам необходимо иметь установленное на системе следующее программное обеспечение: ffmpeg.
Нужно Python версии >=3.7 и <=3.10. Для установки выполните следующие команды из терминала:
git clone https://github.com/samim23/polymath
cd polymath
pip install -r requirements.txt
Если при попытке запустить Polymath возникают проблемы с basic-pitch, выполните следующую команду после установки: pip install git+https://github.com/spotify/basic-pitch.git
Поддержка GPU
Большинство библиотек, используемых Polymath, имеют встроенную поддержку GPU через cuda. Чтобы настроить tensorflow для использования с cuda, следуйте инструкциям на .
Установка в Docker
Если у вас установлен Docker на системе, вы можете использовать предоставленный Dockerfile для быстрого построения образа polymath docker (если ваш пользователь не является частью группы docker, не забудьте добавить sudo перед следующей командой):
docker build -t polymath./
Для обмена входными и выходными файлами между системой хоста и контейнером polymath docker вам нужно создать следующие четыре директории: ./input
, ./library
, ./processed
, ./separated
.
Затем поместите любые файлы, которые хотите обработать с помощью Polymath, в папку input
. После этого можно запустить Polymath через docker, используя команду docker run
и передавая любые аргументы, которые вы бы обычно передавали команде python.
Работа с Polymath
- Добавление песен в библиотеку Polymath:
- Добавление YouTube-видео в библиотеку (автоматическое скачивание):
python polymath.py -a n6DAqMFe97E
- Добавление аудио-файла (wav или mp3):
python polymath.py -a /path/to/audiolib/song.wav
- Добавление нескольких файлов сразу:
python polymath.py -a n6DAqMFe97E,eaPzCHEQExs,RijB8wnJCN0
илиpython polymath.py -a /path/to/audiolib/song1.wav,/path/to/audiolib/song2.wav
- Добавление YouTube-видео в библиотеку (автоматическое скачивание):
Песни автоматически анализируются один раз, что занимает некоторое время. После того, как они находятся в базе данных, к ним можно быстро получить доступ. База данных хранится в папке "/library/database.p". Чтобы сбросить все, просто удалите эту папку.
- Квантизация песен в библиотеке Polymath:
- Квантизация конкретной песни в библиотеке до темпа 120 БПМ (-q = идентификатор аудио-файла в базе данных, -t = темп в БПМ):
python polymath.py -q n6DAqMFe97E -t 120
- Квантизация всех песен в библиотеке до темпа 120 БПМ:
python polymath.py -q all -t 120
- Квантизация конкретной песни в библиотеке до темпа песни (-k):
python polymath.py -q n6DAqMFe97E -k
- Квантизация конкретной песни в библиотеке до темпа 120 БПМ (-q = идентификатор аудио-файла в базе данных, -t = темп в БПМ):
Песни автоматически квантизируются к одному темпу и ритмической сетке и сохраняются в папку "/processed".
- Поиск похожих песен в библиотеке Polymath:
- Поиск 10 похожих песен на основе конкретной песни в библиотеке (-s = идентификатор аудио-файла в базе данных, -sa = количество результатов):
python polymath.py -s n6DAqMFe97E -sa 10
- Поиск похожих песен на основе конкретной песни в библиотеке и квантизация всех из них до темпа 120 БПМ:
python polymath.py -s n6DAqMFe97E -sa 10 -q all -t 120
- Включение темпа в критерии поиска (-st):
python polymath.py -s n6DAqMFe97E -sa 10 -q all -t 120 -st -k
- Поиск 10 похожих песен на основе конкретной песни в библиотеке (-s = идентификатор аудио-файла в базе данных, -sa = количество результатов):
Похожие песни автоматически находятся и, по желанию, квантизируются и сохраняются в папку "/processed". Это позволяет легко создать, например, часовой микс песен, которые идеально совпадают друг с другом.
- Преобразование аудио в MIDI:
- Преобразование всех обработанных аудио-файлов и стеки в MIDI (-m):
python polymath.py -a n6DAqMFe97E -q all -t 120 -m
- Преобразование всех обработанных аудио-файлов и стеки в MIDI (-m):
Генерируемые MIDI-файлы в настоящее время всегда имеют темп 120 БПМ и нуждаются в корректировке времени в вашем DAW. Это будет решено в будущем.
Аудио-фичи и извлеченные стеки
- Извлеченные стеки: Нейронная сеть Demucs имеет настройки, которые можно изменить в python-файле. Они включают: бас, ударные, гитара, другие, пианино, вокал.
- Извлеченные фичи: Аудио-фичи-экстракторы имеют настройки, которые можно изменить в python-файле. Они включают: темп, длительность, тон, кадры_тон, тональность, кадры_тоналности, интенсивность, кадры_интенсивности, громкость, средняя_громкость, громкость, ритм, границы_сегментов, метки_сегментов, кадры_частоты, частота, ключ.
Лицензия
Polymath выпущен под лицензией MIT, как указано в файле LICENSE.
Таким образом, Polymath представляет собой очень полезный инструмент для музыкальных производителей, DJ и разработчиков ML-аудио, упрощающий процесс работы с музыкальными библиотеками и предоставляя новые возможности для создания уникальных композиций и наборов данных.