Как разделить музыкальный трек на составные части
Французская компания Deezer, известная своим одноименным музыкальным сервисом потоковой передачи музыки через Интернет, выложила в открытый доступ нейронную сеть, которая умеет разделять любую музыкальную композицию на составные части. Они выложили три варианта:
* разделение на голос и фонограмму
* разделение на голос, гитару, барабаны и остальное
* третий вариант дополнительно включает пианино
Над качественным решением данной задачи давно бьются исследователи. В интернете есть софт, онлайн-сервисы и гайды как это делать, например, в Audacity. Но результаты всегда оставляли желать лучшего или требовали существенной ручной доработки. И теперь мы на шаг ближе к полностью автоматическому решению этой задачи за счёт успехов в обучении нейронных сетей.
Посмотреть примеры можно в видео ниже. Видно что иногда артефакты проскакивают, но разделение в большинстве случаев происходит почти идеально. Этого удалось добиться за счёт использования огромного датасета для обучения, который в наличии у Deezer, чей каталог на данный момент включает 56 миллионов музыкальных композиций.
Софт для сплита треков написан на базе библиотеки tensorflow от google и выложен под полностью свободной лицензией на Github. Легко устанавливается и запускается с командной строки. Работает достаточно быстро даже на CPU.
Для желающих поиграться с разделением треков на базе spleeter, есть сервис, где это можно сделать в пару кликов онлайн: mvsep.com
Так же в своём пресс-релизе Deezer дали ссылку на похожий софт, от других исследователей со схожим качеством разделения треков. А так же на сайт где собирают работу различных нейронных сетей для решения этой задачи - тут интересно сравнить как один и тот же трек разбивают на части разные алгоритмы. На форуме программы пользователи предлагают доработки идеи, такие как добавить к spleeter музыкальные инструменты, например флейту или использовать spleeter для удаления музыки с фона спортивных видео чтобы Youtube не банил ролики за нарушение копирайта.