Устройство mp3-файлов(и не только)
Для начала мне захотелось разобраться во внутреннем устройстве цифровой музыки, и, например, ее анализе.
Поясню ТЗ поконкретнее: нужно определить из плейлиста похожие песни/музыку(например, по жанру) без тэгов, а сугубо по файлу, то есть по музыке, звуковой дорожке.
Есть у кого-нибудь литература, или, может. библиотеки кто какие знает для низкоуровневой работы с цифровой музыкой?
Приложение будет писаться на C++.
тут.
Про структуру mp3 файла можно почитать на вики, да и в сети много информации, но с библиотекой это не особенно нужно.
Предупрежу, что для анализа на похожесть необходимо иметь знания в дифференциальной математике и быть знакомым с численными методами.
Можно ещё посмотреть на проект HOLO, он занимается тем же самым.
Для работы со звуком можно юзать bass, взять можно
Про структуру mp3 файла можно почитать на вики, да и в сети много информации, но с библиотекой это не особенно нужно.
Предупрежу, что для анализа на похожесть необходимо иметь знания в дифференциальной математике и быть знакомым с численными методами.
Можно ещё посмотреть на проект HOLO, он занимается тем же самым.
Цитата: CassandraDied
Для работы со звуком можно юзать bass, взять можно тут.
Про структуру mp3 файла можно почитать на вики, да и в сети много информации, но с библиотекой это не особенно нужно.
Предупрежу, что для анализа на похожесть необходимо иметь знания в дифференциальной математике и быть знакомым с численными методами.
Можно ещё посмотреть на проект HOLO, он занимается тем же самым.
Про структуру mp3 файла можно почитать на вики, да и в сети много информации, но с библиотекой это не особенно нужно.
Предупрежу, что для анализа на похожесть необходимо иметь знания в дифференциальной математике и быть знакомым с численными методами.
Можно ещё посмотреть на проект HOLO, он занимается тем же самым.
У меня достаточно хорошие знания во всей математике, которой учат программистов в университете (ЧМ, вычмат, вышка), собственно, я на это и рассчитывал, - что нужны знания, но все равно спасибо, что предупредили :)
Да структура mp3-файла самого-то - простая, она мне не интересно(как структура именно файла). А вот то, как устроен звук с ней, и все, что связано со звуком в этом файле и как его анализировать - вот это мне очень нужно.
HOLO только вчера на хабре почитал, но в посте так и не упомянули про похожесть конкретно, лишь как-то вскользь. Ну ладно, посмотрю этот HOLO поглубже, спасибо.
bass тоже посмотрю. Хотел его посмотреть, да название забыл :)
Если у вас еще есть что дополнить - смело жду, буду очень рад и благодарен.
Лично я не верю в возмжность реализации поставленной задачи на достойном уровне. Я не верю, что его смогут реализовать даже 10 программистов. И вычислительных мощностей будет достаточно очень не скоро. Тот же HOLO вчера минут тридцать сканировал только 4к файлов, потом ещё и обрабатывал кучу времени.
Есть какие-то предпосылки к тому, что удастся написать приложение, которое, учитывая многие из возможных нюансов, будет находить похоие треки? Может, есть ссылки на какие-то убер-алгоритмы, которые позволяют это сделать?
В качестве входного файла рассматривал wav, так как он содержит весьма естественные параметры (амплитуду сигнала, частоту дискретизации, скорость воспроизведения). Необходимо произвести разложение в ряд Фурье таблицу амплитуд (чтобы получить аналитическое представление музыки). Возможно, нормировать по максимальной амплитуде, а также по длине звуковой дорожки (чтобы не искажалась АЧХ).
Затем встает проблема распознавания, и сравнения графиков.
Например есть алгоритм кси-квадрат Колмогорова (по-моему). Согласно этому алгоритму вычисляется накапливаемая разница между интегралами от сравниваемых кривых. Чем меньше разница, тем больше схожесть.
Другой путь - выделить определенные гармоники и по их представленности в звуковом ряде классифицировать и сравнивать композиции.
Третий способ. Составить список композиций для каждого жанра. Построить для каждой композиции график АЧХ. Наложить графики АЧХ друг на друга для каждого жанра. Выделить область 90-95% перекрытия и запомнить ее. Затем строить график АЧХ для произвольного звукового рядя, сравнивать с эталонами и относить к тому жанру для которого было наибольшее совпадение.