Если вы используете хэши для сравнения двух наборов данных, в идеале они должны иметь одинаковый вход каждый раз, чтобы получить абсолютно одинаковый вывод (если только вы чудесным образом не выбрали два столкновения с разными входами, что привело к одному выходу ). Если вы хотите сравнить два файла MP3, хэшируя весь файл, тогда два набора данных песни могут быть абсолютно одинаковыми, но, поскольку ID3 хранится внутри файла, несоответствия могут привести к тому, что файлы окажутся совершенно разными. Поскольку вы используете хеш, вы не заметите, что, возможно, 99% из двух файлов совпадают, поскольку выходные данные будут слишком разными.
Если вы действительно хотите использовать для этого хеш, вам следует хэшировать только звуковые данные, исключая любые теги, которые могут быть прикреплены к файлу. Это не рекомендуется, если, например, музыка копируется с компакт-дисков, а один и тот же компакт-диск копируется два раза, результаты могут кодироваться / сжиматься по-разному в зависимости от параметров копирования.
Лучшей (но гораздо более сложной) альтернативой была бы попытка сравнить несжатые значения аудиоданных. С небольшим методом проб и ошибок с известными входами можно привести достойный алгоритм. Делать это идеально будет очень сложно (если вообще возможно), но если вы получите что-то с точностью более 50%, это будет лучше, чем делать это вручную.
Обратите внимание, что даже алгоритм, который может определить, близки ли две песни (скажем, одна и та же песня, скопированная под разными параметрами), должен быть более сложным, чем стоило бы сказать, если живая версия похожа на студийную. , Если вы можете сделать это, здесь можно заработать!
И возвращаясь к первоначальной идее о том, как быстро определить, являются ли они дубликатами. Хеш будет намного быстрее, но намного менее точным, чем любой алгоритм с этой целью. Это скорость против точности и сложности.