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