This project is intended to discover posssible appoaches to estimate audio similarity.
Проект ставит следующую цель: научить нейронную сеть определять "схожесть" музыкальных фрагментов. Пример: если вам предложат прослушать происзведение Бетховена "К Элизе" в классическом исполнении, сыгранное на акустическй гитаре, сксофоне и в рок обработке, то человек без труда скажет, что это одна и та же мелодия. Так же должна ответить и нейронная сеть.
-
Подготовка датасета. Датасе был собран вручную и включает в себя следующий набор фрагментов компазиций (продложительностью 20 секунд). Каждая композиция представлена примерно в 20-50 вариантах:
-
Агументация Для генерализации и получения более усточивого решения применялаь следующая агументация к исходному источнику сиганала:
- случайное изменение скорости воспроизведения
- случайное "подмешивание" к сигналу сэмпла из библиотеки естественных шумов
- комбинация двух техник
- Преобразование данных для входа в нейронную сеть. Преобразование данных представляет собой:
- формирование моно сигнала
- стандартизация длительности до 20-ти секунд (обрезка или дополнение нулями)
- преобразование в Mel Spectrogram (так же был использован вариант построение 3-х спектрограмм с разными значениеми window и hop)
- приведение к логарифмической шкале
- Архитектрура нейронной сети
- сеть построена на базе Wide Residual Network
- на выходе сети формируется embedding размерности 2
-
Функция ошибки Поскольку решаемая задача отличается от классической задачи классификации, то использовалаь специализиррованная loss-функция Triple Margin Loss из библитеки Pytorch Metric Learning.
-
Оптимизатор Использовался как стохастический градиентный спуск, так и Adam
-
Процесс обучения TBD