Комментарии 43
Прочитал вашу предыдущую статью по ссылке, но так и не понял, как же с помощью вашей программы можно искать музыку, похожую на ту, что у меня уже есть.
+4
Что конкретно нужно развернуть подробнее?
Положим, у вас 10 тысяч песен в коллекции.
Вы запускаете обработку всех песен и помещение результатов в базу данных.
Затем вы выбираете одну песню, нажимаете кнопку «Найти» и получаете плейлист, отсортированный по убыванию похожести на образец.
Если речь не об этом, то поясните в чём?
Положим, у вас 10 тысяч песен в коллекции.
Вы запускаете обработку всех песен и помещение результатов в базу данных.
Затем вы выбираете одну песню, нажимаете кнопку «Найти» и получаете плейлист, отсортированный по убыванию похожести на образец.
Если речь не об этом, то поясните в чём?
0
Какие красивые графики на параллельных координатах получаются! Еще бы осмыслить, что они значат (широту разброса треков по анализируемым параметрам?).
Проект очень интересный.
Проект очень интересный.
+4
Обновил путь поиска музыки, но прежде чем его прописать программа начала сканировать всё что внутри этой папки. Короче хард повис :)
0
Какова причина 20%? В тексте статьи не заметил.
К поддерживаемым форматом еще alac было бы приятно добавить.
Способ: github
К поддерживаемым форматом еще alac было бы приятно добавить.
Способ: github
+2
Причина 20% ошибок при составлении плейлиста? Это значение среднее, и от жанра к жанру оно может колебаться в обе стороны.
Её порождает, конечно же, несовершенство алгоритма статистической обработки — основная компонента программы, которую я планирую развивать дальше.
Её порождает, конечно же, несовершенство алгоритма статистической обработки — основная компонента программы, которую я планирую развивать дальше.
0
Люто плюсую за гитхаб.
Решит все Ваши проблемы по аспектам с 0-го по 5-ый, и с GUI тоже.
Если найдёте желающих помогать с Вашим кодом.
UPD: глянул предыдущий пост и обнаружил github.com/johnnybuggy/holo
нынче я в непонятках…
Решит все Ваши проблемы по аспектам с 0-го по 5-ый, и с GUI тоже.
Если найдёте желающих помогать с Вашим кодом.
UPD: глянул предыдущий пост и обнаружил github.com/johnnybuggy/holo
нынче я в непонятках…
0
Коллега, рекомендую почитать работы вот этих ребят www.mtg.upf.edu/
Конкретно вот эту публикацию mtg.upf.edu/system/files/publications/bogdanov_IPM2012.pdf
Автор вроде как уже защитился, так что информация вполне себе полезная должна быть.
Для возможности рекомендаций стоит добавить отправку «сэмплов» на сервер и их каталогизировать, использую мета-данные из публичных баз (last.fm, freebase etc.), не знаю правда как к этому отнесутся правообладатели, но тем не менее. Отправлять пользователя к его же музыке это не очень полезно.
Проблема content-based систем (а иначе вашу и не назовёшь) в том, что рекомендации будут очень сильно похожи на то, что слушает человек. Хотя, в случае экспериментальных или смешанных жанров вы можете получить вовсе бредовые вещи. Взять к примеру кусок какого-нибудь djent трека и часть его будет похожа на что-то инструментальное, часть на электронное. Тут как «повезёт» с куском. Для устранения проблемы обычно используются гибридные системы, куда вам и советую копать.
Я сейчас пытаюсь зайти несколько с другой стороны, использовать семантическую сеть для алгоритма рекомендаций (в качестве информационной базы используются всё те же публичные БД). Пока всё на зачаточной стадии (первый семестр докторантуры), но в направление верю :)
Конкретно вот эту публикацию mtg.upf.edu/system/files/publications/bogdanov_IPM2012.pdf
Автор вроде как уже защитился, так что информация вполне себе полезная должна быть.
Для возможности рекомендаций стоит добавить отправку «сэмплов» на сервер и их каталогизировать, использую мета-данные из публичных баз (last.fm, freebase etc.), не знаю правда как к этому отнесутся правообладатели, но тем не менее. Отправлять пользователя к его же музыке это не очень полезно.
Проблема content-based систем (а иначе вашу и не назовёшь) в том, что рекомендации будут очень сильно похожи на то, что слушает человек. Хотя, в случае экспериментальных или смешанных жанров вы можете получить вовсе бредовые вещи. Взять к примеру кусок какого-нибудь djent трека и часть его будет похожа на что-то инструментальное, часть на электронное. Тут как «повезёт» с куском. Для устранения проблемы обычно используются гибридные системы, куда вам и советую копать.
Я сейчас пытаюсь зайти несколько с другой стороны, использовать семантическую сеть для алгоритма рекомендаций (в качестве информационной базы используются всё те же публичные БД). Пока всё на зачаточной стадии (первый семестр докторантуры), но в направление верю :)
+11
Как я понял по этой и предыдущей статье, цель автора — не найти новую музыку по предпочтениям, а собрать плейлист похожего из того, что уже есть, «под настроение».
Так что
> рекомендации будут очень сильно похожи на то, что слушает человек
это скорее фича.
Так что
> рекомендации будут очень сильно похожи на то, что слушает человек
это скорее фича.
+3
Да, судя по первой части статьи, то что они делают очень похоже на то что делаю я. Отличие, при беглом осмотре, в том что они пытаются притянуть к произвольному звуку привычные характеристики типа жанра, темпа, мелодичности, экспрессии и т.д. Я считаю это не совсем правильным, так как есть жанры где всё кроме ярлыка самого жанра, определить невозможно (Merzbow — Pulse Demon), но композиция тем не менее входит, пусть и на окраину общего звукового континуума, который можно наблюдать на моём скриншоте про Scatterplot собранной базы данных.
Насчёт попадание кусков из разных жанров в одном треке, для примера положим 40% металл, 60% мелодекламация голосом. Чаще всего это будет приводить к тому что в плейлисте будут находиться треки с такой же комбинацией — 40% металла и 60% декламации. Ну или с перекосом в ту или другую сторону, если точных совпадений найдено не будет.
Насчёт попадание кусков из разных жанров в одном треке, для примера положим 40% металл, 60% мелодекламация голосом. Чаще всего это будет приводить к тому что в плейлисте будут находиться треки с такой же комбинацией — 40% металла и 60% декламации. Ну или с перекосом в ту или другую сторону, если точных совпадений найдено не будет.
+1
Отличие, при беглом осмотре, в том что они пытаются притянуть к произвольному звуку привычные характеристики типа жанра, темпа, мелодичности, экспрессии и т.д. Я считаю это не совсем правильным, так как есть жанры где всё кроме ярлыка самого жанра, определить невозможно (Merzbow — Pulse Demon), но композиция тем не менее входит, пусть и на окраину общего звукового континуума, который можно наблюдать на моём скриншоте про Scatterplot собранной базы данных.
«Притягивание» характеристик делается как раз для того, чтобы «разбавить» рекомендации и очередная попытка привести такую субъективную область к чему-то формальному. На словах типа «мне кажется» науку не сделаешь. Другой человек просто не сможет этим адекватно воспользоваться как базой. Да, я тоже не очень разделяю их методику, но на абстрактные проценты тоже полагаться нельзя.
Послушав трек, что вы привели, я был полностью солидарен с last.fm в плане тегов. Noise/experimental/industrial. Даже описание исполнителя об этом говорит. И на сигнале вы должны будете увидеть характерный график для шума по идее.
Насчёт попадание кусков из разных жанров в одном треке, для примера положим 40% металл, 60% мелодекламация голосом. Чаще всего это будет приводить к тому что в плейлисте будут находиться треки с такой же комбинацией — 40% металла и 60% декламации. Ну или с перекосом в ту или другую сторону, если точных совпадений найдено не будет.
Вы анализируете не весь трек, разве нет?
Музыка субъективна и в качестве анализа качества рекомендаций вы всё равно будете использовать людей. Может стоит на них и ориентироваться, а не на машинный процент?
Используйте всю выборку пользователя и на основе неё сделайте статистический вывод о процентном соотношении треков определённого вида (ок, вам не нравится слово «жанр») у пользователя. Дальше из глобальной БД сэмплов можно выбирать похожие треки и в таком же процентном отношении отдавать их пользователю.
+1
Используйте всю выборку пользователя и на основе неё сделайте статистический вывод о процентном соотношении треков определённого вида (ок, вам не нравится слово «жанр») у пользователя. Дальше из глобальной БД сэмплов можно выбирать похожие треки и в таком же процентном отношении отдавать их пользователю.
Изначальная цель стоит не совсем так.
Довольно часто среди знакомых и на околомузыкальных форумах я слышу «О, а посоветуйте ещё что-нибудь в духе XXX?». В таком случае мы скармливаем наиболее характерные комозиции XXX в качестве образца, на выходе получаем список похожих вещей. У меня это отлично работает почти для всех вариаций рок-музыки.
0
Мне кажется идея сама по себе великолепна, смущают вот эти ваши «Центроиды» — спектрограммы специально выбранных фрагментов звука.
Правильно ли я понимаю, что это сделано для простоты и по идее надо сравнивать фрагменты «каждый с каждым»?
Как насчет сложных композиций? Что если 20% фрагмент попал на нехарактерный участок?
Правильно ли я понимаю, что это сделано для простоты и по идее надо сравнивать фрагменты «каждый с каждым»?
Как насчет сложных композиций? Что если 20% фрагмент попал на нехарактерный участок?
0
У меня возникла задача отсортировать свою коллекцию по темпу композиций (в основном для «режимов» ходьбы, бега и занятий прочим спортом) в ударах в минуту. Коллекция большая, из файлов разных форматов, местами ogg или ape+cue, много композиций с переменным ритмом.
Как я понял из статьи (а понял я плохо :( ), подобной возможности в программе нет. Планируется? И если нет, то вы случайно не знаете, какая софтина мне может помочь?
И по статье: не могли бы вы для наглядности добавить какой-нибудь составленный программой плейлист похожих на заданную более-менее широко известных композиций?
Как я понял из статьи (а понял я плохо :( ), подобной возможности в программе нет. Планируется? И если нет, то вы случайно не знаете, какая софтина мне может помочь?
И по статье: не могли бы вы для наглядности добавить какой-нибудь составленный программой плейлист похожих на заданную более-менее широко известных композиций?
+1
Пробежал глазами статью два раза, но так и не понял, какую именно полезную информацию можно извлечь из музыки при помощи сабжа.
Понял только, что она строит забавные визуализации, построенные, по сути, с использованием mp3'шек в качестве random seed.
Понял только, что она строит забавные визуализации, построенные, по сути, с использованием mp3'шек в качестве random seed.
0
Из звука каждого из файлов извлекаются количественные features, и затем визуализируются разными способами. Где вы там увидели random seed я, честно говоря, не понял.
0
Я имел в виду, что эти ваши features совершенно ничего не говорят пользователю. Это просто seed для построения причудливых графиков.
0
А если например два чёрно-белых изображения сравниваются по гистограммам, то значения гистограммы вы тоже назовёте сидом рандома? По-моему это некорректно.
0
Гистограмма несет человеку полезную информацию. Фотограф, например, может оценить, насколько кадр получился светлый или темный, не полагаясь на цветопередачу убогого экранчика фотоаппарата, который к тому же слепнет на солнце.
А вот если на гистограмму наложить еще десяток других графиков, каждый из которых по отдельности что-то значит (хотя не факт, что пользователю есть хоть какой-то толк от каждого из них), да так, что нельзя отличить, какая линия какому показателю соответствует — получится ерунда.
Для человека это — произведение спорного искусства, а не средство анализа, как вы заявляете в заголовке статьи.
Для машины — может, она и сможет находить похожие изображения по каким-то формальным критериям, но что толку? Для человека важно содержательное сходство, а критерии типа «отношение средней плотности зеленого цвета в строке к количеству строк» (я утрирую, конечно) будет ставить в один ряд изображения, совершенно нерелевантные с точки зрения человека.
PS Дискуссия напомнила, как в South Park S15E4 мерялись пиписьками. Каждый придумывал свою формулу так, чтобы характеристики именно его члена дали наибольший результат. Какого-то математического или физического смысла эти формулы, конечно, не содержали.
А вот если на гистограмму наложить еще десяток других графиков, каждый из которых по отдельности что-то значит (хотя не факт, что пользователю есть хоть какой-то толк от каждого из них), да так, что нельзя отличить, какая линия какому показателю соответствует — получится ерунда.
Для человека это — произведение спорного искусства, а не средство анализа, как вы заявляете в заголовке статьи.
Для машины — может, она и сможет находить похожие изображения по каким-то формальным критериям, но что толку? Для человека важно содержательное сходство, а критерии типа «отношение средней плотности зеленого цвета в строке к количеству строк» (я утрирую, конечно) будет ставить в один ряд изображения, совершенно нерелевантные с точки зрения человека.
PS Дискуссия напомнила, как в South Park S15E4 мерялись пиписьками. Каждый придумывал свою формулу так, чтобы характеристики именно его члена дали наибольший результат. Какого-то математического или физического смысла эти формулы, конечно, не содержали.
0
А в чем преимущество устранения учителя, если конечная цель — это выработка вкуса единственного пользователя этой программы? Почему бы не сделать какой-нибудь плагин, ненавязчиво слушающий вместе с пользователем его плей-лист и настраивающий свою нейронную сеть на основании собранных вами семплов, а потом уже кластеризующий весь остальной непрослушанный объем музыки? Если эти субъективные мнения, выраженные в нейронных сетях, слить в облако, то можно получить и некое подобие объективной кластеризации.
0
Дело как раз в том что я не пытаюсь подстроиться под вкус слушателя. Точнее как, я беспристрастно пытаюсь найти что-то похожее на то что подано в качестве образца.
0
Я вот уже давно не слушаю mp3 с компа-потому что реально надоедает одно и тоже слушать по 10 раз. Я перешел на online станции, и неплохо бы было, чтобы Вашу программу можно было напускать на потокове вещание с тем чтобы она давала рекомендации к тому что слушать.
0
На Coursera сейчас начался курс Introduction to Recommender Systems — посмотрите, возможно, вам был бы полезен.
+1
Экспериментирую) Подсунул программе AC/DC — Highway to hell.
Среди топ10 соответствий оказались 3 песни КиШ.
Много думал оО
Среди топ10 соответствий оказались 3 песни КиШ.
Много думал оО
0
Всё зависит от того какой объём библиотеки вы обработали и какие жанры она охватывает.
Затем, нужно абстрагироваться от названий групп и слушать только звук.
И наконец, если в библиотеке нет ничего похожего по звучанию, то программа предлагает просто ближайшие композиции. Я бы мог задать пороговое значение, различия выше которого не допускались бы, но тогда могут возникать ситуации что похожих песен и нет.
Затем, нужно абстрагироваться от названий групп и слушать только звук.
И наконец, если в библиотеке нет ничего похожего по звучанию, то программа предлагает просто ближайшие композиции. Я бы мог задать пороговое значение, различия выше которого не допускались бы, но тогда могут возникать ситуации что похожих песен и нет.
0
Анализировались аналогичные решения от Apple, Google, Pandora Radio, Last.fm. Во всех случаях поиск ведётся по метаданным, что как минимум неспортивно, а как максимум, субьективно и подвержено мнениям живых оценщиков.
В отличие от них, HOLO пока является беспристрастным рецензентом и рекомендателем, системой «без учителя».
Во-первых, из приведенных только Pandora является чисто expert-based RS. А вот Last.fm насколько мне известно, коллаборативная (ну на самом деле гибридная, скорее всего).
Во-вторых, content-based рекомендательные системы могут давать неплохое разнообразие и приятно удивить пользователя (diversity и serendipity), но они очень и очень сильно подвержены, скажем так, «упячкам». То есть периодически вы будете рекомендовать что-то очень и очень странное. Почитайте ocelma.net/MusicRecommendationBook/index.html, там много интересного, в том числе и такого рода исследования.
В-третьих, вам как информация к размышлению: генерация плейлистов очень и очень сильно отличается от просто генерации списка похожих. То есть удовлетворение пользователя зависит во многом от того, в каком порядке ему одни и те же треки играть. В этом направлении есть много исследований и даже софта (для создания плейлистов радиостанций).
А вообще, это классный проект, вы большой молодец, что смогли в одиночку создать такую систему. Плюс идея интересная — ведь вы анализируете коллекцию пользователя! Удачи вам, я верю, что ваш продукт найдет свою нишу.
Рекомендательные системы затягивают, очень интересная область. Сам не могу оторваться =) Правда, я больше в коллаборативной фильтрации работаю, в content-based ничего не смыслю. Надо наверстывать…
+1
Спасибо вам за дополнительную полезную информацию.
0
Во-вторых, content-based рекомендательные системы могут давать неплохое разнообразие и приятно удивить пользователя (diversity и serendipity), но они очень и очень сильно подвержены, скажем так, «упячкам». То есть периодически вы будете рекомендовать что-то очень и очень странное
При большом размере «аудитории» Collaborative filtering делает то же самое. При малом — проблема «холодного старта».
Но в любом случае 100% сейчас не даёт ничего. Впрочем, это скорее проблема людей, а не ПО :)
0
Анализировались аналогичные решения от Apple, Google, Pandora Radio, Last.fm. Во всех случаях поиск ведётся по метаданным
Есть еще Echo Nest. Насколько я знаю, у них как раз анализируется музыка.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Публикации
Изменить настройки темы
HOLO — Система анализа музыки — Версия 2