Как я потратил более 5-ти лет и сделал сервис поиска похожей музыки
Приветствую! Эта история о новом сервисе Twelody, который с помощью искусственного ителлекта помогает искать похожую музыку.
Как появилась идея
В начале 2016 года мне пришлось уволиться с работы и встал вопрос чем я буду заниматься дальше, мне уже было 30 лет и я хотел найти наконец-то дело своей жизни. Выбирать долго не пришлось, так как я очень люблю музыку и в свободное время часто зависаю за её поиском и прослушиванием, я понял, мне не хватает адекватного музыкального поисковика. Музыки в наше время становится всё больше и больше, а вот времени на поиски всё меньше. К тому же часть ресурсов, где я брал новую музыку закрылось и в реальности на тот момент оставался только VK с их своебразными рекомендациями. А мне хотелось сделать сервис, который бы анализировал звук и подбирал похожую музыку по заданной.
С чем пришлось столкнуться
Я ничего не знал по теме, кроме того, что у меня есть неоконченное музыкальное образование и я кое что знаю в программировании. Но в тот момент у меня был настолько большой энтузиазм, что я всё же начал изучать тему. Первым делом я попытался добраться до чисел (значений амплитуды), с этой проблемой мне удалось справиться в короткие сроки, но вот что делать с числами дальше я так и не смог понять. Я пытался определять ноты по самым громким всплескам, это получалось, но что делать с нотами дальше я не знал, ведь иногда они были то в одной октаве, то в другой. Сравнивать их между собой не имело никакого смысла, да я и не знал чем их можно сравнить. Промучавшись пару месяцев я отложил разработку и решил отдохнуть, иногда отложить проблему - это хороший способ её решить, так получилось и у меня.
Иногда отложить проблему - это хороший способ её решить.
Спасательный круг
Через некоторое время я узнал о существовании нейронных сетей, в тот момент они только набирали популярность и первый мой урок по ним оказался впечатляющим. Я понял, что вот оно, что я искал, я могу подавать данные и указывать к чему они относятся. Я стал разбираться как сделать свою нейронную сеть, изучал примеры, приобрёл и прочёл две книги и вроде бы даже нашёл статью с успешной реализацией того, чего я хочу достичь. В этой статье парень сравнивал похожие товары по изображению и у него получалось. Но найти инструмент это отлично, другое этим инструментом воспользоваться. А чтобы воспользоваться необходимо было к чему-то привязаться и тут началось самое интересное.
Изучить всю музыку, серьёзно?
Музыка настолько разнообразна, что сперва я не знал как её можно классифицировать, обилие музыкальных терминов пугает, да и многие из них не могут описать однозначно музыкальную композицию, но всё-таки я понял мне нужен жанр. Ведь только жанр способен вместить в себя всю полноту характеристики музыкальной композиции. В крайнем случае, например, тональности можно добавить потом. Что ж мне предстояло познакомиться со всеми музыкальными жанрами представленными в мировой музыкальной индустрии и по данным Википедии их насчитывается в районе тысячи. Меня ждала кропотливая работа, с которой я думал не справлюсь. Но спустя три года я собрал внушительную коллекцию музыки, с помощью которой и обучал нейронную сеть.
Опять проблемы
Первые попытки обучить нейронную сеть и воспользоваться трюками, которые я узнал показали, что это работает, но работает не точно, на каких-то примерах сеть показывала впечатляющие результаты, а на некоторых она путалась и жанр не соответствовал ожидаемому. Я стал разбираться, пересмотрел архитектуру, провёл десяток разных тестов, но это особо не помогало, единственное я заметил каждый раз результаты отличались и я понял, что каждый параметр в нейронной сети играет важную роль. Эксперименты продолжились и только спустя год я смог найти ту комбинацию, которая и пошла в продакшн. За это время было проведено почти сотня тестов и мне уже хотелось выложить не одну, а несколько параллельных версий, но нынешняя архитектура превзошла их все и я остановился на ней.
Проект сейчас
Пока я настраивал нейронную сеть актуальность музыки, которая у меня была в коллекции немного устарела, но я не мог себе позволить ждать ещё и решил выпустить альфа версию проекта, чтобы пока я пополняю коллекцию и дообучаю нейронную сеть пользователи уже сегодня могли пользоваться ресурсом. Ведь новая музыка это в первую очередь та, которую ещё не слышал, а как показали тесты сеть с этим справляется уже неплохо и впереди на подходе будет ещё более совершенный алгоритм. В нынешней реализации ещё есть путаница с жанрами, но не настолько критичная как была раньше. Всё же мне удалось воплотить свою мечту в реальность и это то, чем мне нравится заниматься на постоянной основе. И самое главное это приносит пользу другим.
С запуском проекта возникла ситуация, что сайт нужно финансировать и рекламировать, и я благодарен создателям VC за возможность рассказать людям о моём сервисе. Буду признателен, если напишите какие впечатления произвёл на Вас мой сайт и помог ли он в Ваших поисках.
Адрес сайта: https://twelody.com