Как уже отмечали другие, сравнение MP3-файлов с помощью просмотра двоичного содержимого файлов не будет работать.
Я написал что-то вроде этого на Java, когда учился в университете на мой последний год обучения. Я был бы более чем счастлив выслать вам исходный код. Он имел дело с относительным сходством: «песня X больше похожа на песню Y, чем на песню Z», а не соответствует, но это может быть шагом в правильном направлении.
И пожалуйста, что бы вы ни делали, не пытайтесь делать это на PHP. Алгоритм, который я использовал, требовал, чтобы я вычислил (если я правильно помню - я работал над этим около 3 лет назад) 30 матриц 30х30 для каждого проанализированного MP3. Каждой песне требовалось около 30 секунд, чтобы обработать набор матриц на моем неуклюжем старом компьютере (я уверен, что мой новый ПК мог выполнить работу значительно быстрее). Когда у меня были эти матрицы для n песен, второй шаг вычислял различия между каждой парой песен, а третий шаг уменьшал эти различия до m-мерного пространства. Каждый из этих 3-х этапов требует достаточного количества лошадиных сил, и PHP определенно не подходит для этой работы.
Для PHP может работать внешний интерфейс - в итоге я запустил веб-приложение с поддержкой запросов, написанное на Ruby on Rails, где у меня был простой бэкэнд, в котором координаты каждой песни сохранялись в m-мерном пространстве (я случайно выбрать m = 6) - для конкретной песни или фрагмента X вы можете затем вычислить песни на определенном «расстоянии» от X.
NB. Я, вероятно, должен отметить, что весь код, который я написал, был в основном оберткой вокруг библиотек, которые написали другие - которые были сделаны некоторыми умными людьми в университете в Австрии - эти библиотеки взяли две песни и сгенерировали матрицы - все, что я делал, это вычислял расстояния и отобразить расстояния множества песен в м-мерном пространстве. Хотел бы я быть достаточно умным, чтобы сделать первый бит тоже!