Если вы хотите сравнить файлы MP3, созданные в одном и том же MP3, но по-разному помеченные метаданными, было бы просто сравнить реальные аудиоданные.Поскольку он возник из той же кодировки MP3, вы должны быть в состоянии сравнить байты.Вы должны были бы сравнить все байты.Достаточно сэмплировать всего несколько, чтобы получить уникальный ключ, который статистически почти невозможно найти в другой песне.
Если файлы были созданы разными кодировщиками, вам придется извлечь несколько «нечетких»"Особенности ключей от данных и сравнить эти ключи.В спешке я, вероятно, построю алгоритм, подобный следующему:
- Декодирование аудио в импульсно-кодовую модуляцию (волну) со стандартной скоростью передачи битов.
- Поиск фиксированного числа запускаемых функцийточки с использованием некоторого алгоритма динамического определения местоположения.Например, найдите 10 самых высоких пиков волны, упорядоченных от начала волны или просто равномерно распределенных по волне (хотя было бы неплохо динамически зафиксировать первую и последнюю позиции, поскольку разные кодировки могут не начинаться и заканчиваться в одной и той же точке.).Улучшение будет состоять в том, чтобы выбирать характерные точки в позициях в волне, которые вряд ли будут слишком повторяющимися.
- Извлечение набора одномерных скаляров функциональных клавиш из характерных точек.Например, для каждого признака нормализуйте следующие значения n-выборки и посчитайте количество пересечений нуля, отношение пика к среднему, среднее расстояние пересечения нуля, энергию сигнала.Цель состоит в том, чтобы извлечь надежные функции, которые являются относительно уникальными, но при этом остаются характерными, даже если к сигналу добавляется шум и искажения.Очевидно, что это можно улучшить почти бесконечно.
- Сравните извлеченные функциональные ключи двух файлов с использованием некоторого измерения точности (например, 9 из 10 извлеченных функциональных возможностей должны совпадать по крайней мере на 99% на 4 из 5их извлеченные функциональные ключи).
Преимущество подхода извлечения функций состоит в том, что вы можете создать базу данных функций для всех ваших mp3-файлов и для одного файла задать вопрос: Какие другие медиа-файлыимеют точно или почти точно такую же функцию, как этот.Поиск признаков может быть реализован очень эффективно с помощью R * -деревьев или аналогичных, которые могут быть использованы для быстрого измерения расстояния между n-мерными наборами признаков.
Вышеупомянутая методика по сути является вариантом того, чтоиспользуется в алгоритмах поиска изображений, таких как SIFT, который, вероятно, является основой такого приложения, как Photosynth и Google Goggles.При поиске изображения вы фильтруете изображение на предмет хороших точек-кандидатов для относительно уникальных объектов (таких как углы фигур), затем вы нормализуете область вокруг этого объекта, чтобы получить нормализованный цвет, интенсивность, масштаб и направление объектов.Наконец, вы извлекаете элементы и ищите в n-мерной базе данных признаков других изображений и проверяете, что найденные объекты в других изображениях геометрически расположены по тому же шаблону, что и в вашем поисковом изображении.Техника поиска аудио будет такой же, только проще, поскольку звук одномерный.