В прошлом месяце меня очень вдохновил пост Леона Феддена, в котором сравниваются методы уменьшения размерности, такие как UMAP и TSNE, по таким функциям, как STFT (кратковременное преобразование Фурье) и функции WaveNet. Этот пост появился как раз в то же время, что и последний проект, который я выполнял с Avneesh Sarwate для курса по анализу аудиоконтента. Наш проект начался с предпосылки использования приемов из Infinite Drum Machine Кайла Макдональда, чтобы разрешить худший кошмар продюсера: бесконечное прокручивание сэмплов!

Вся наша работа (включая извлеченные функции и вложения) доступна в виде автономного контейнера докеров на моем GitHub. Если вы не знаете, как использовать Docker, следуйте инструкциям в нашей хорошо подготовленной записной книжке jupyter.

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

Из речи, изображений и входных данных с датчиков данные из мира природы часто бывают многомерными. Однако вместо того, чтобы напрямую взаимодействовать с этими многомерными данными, сбор аудиосэмплов часто организуется с использованием простых высокоуровневых дескрипторов, таких как тип звука, например «vocal_shout». Однако эти метки часто недоступны и, когда они доступны, не отражают нюансы взаимоотношений между звуками. Насколько похожи vocal_shout_1.wav` и vocal_shout_2.wav`, а как насчет vocal_shout_7.wav?

Чтобы построить отношения между семплами на уровне тембра, мы должны сформировать представления, взятые из аудиоданных высокой размерности. Обычно они представлены в форме функций STFT или MFCC, но даже они имеют размеры порядка нескольких тысяч. Наша работа представляет собой подход, позволяющий пользователям ориентироваться в этих относительно многомерных объектах в 2D-пространстве.

Наше исследование дало множество красивых сюжетов, окрашенных цветом в зависимости от типа образца (например, черный = бочки, красный = малые барабаны…). В тетрадке jupyter собраны все сюжеты наших исследований.

Мы определили набор оценок, которые оценивают «визуальное качество» встраивания - комбинацию оценки силуэта и таких показателей, как «округлость», которые использовали тест Полсби Поппера, чтобы определить, насколько разбросаны образцы. в 2D пространстве. Это позволило нам отобрать совокупность встраиваний с различными гиперпараметрами TSNE, PCA и UMAP, чтобы найти удобные вложения, которые могли бы использоваться музыкантами для навигации по своей коллекции сэмплов.

Мы также хотим отметить, что UMAP (Uniform Manifold Approximation and Projection) - БЫСТРЫЙ. Расчет TSNE может занять 45 минут, тогда как UMAP может занять всего пару минут, чтобы вычислить вложения. Нам удалось сократить время внедрения, сначала спроецировав функции STFT в его первые 14 компонентов PCA, а затем уменьшив их до двух измерений с помощью UMAP.

Эти результаты могут быть использованы для разработки инструмента, в котором пользователи «перетаскивают» свой банк сэмплов, а приложение автоматически генерирует отображение в 2D-пространстве, позволяя музыканту быстро прослушивать похожие по звучанию сэмплы!

Мы также нашли несколько очень трогательных карт…