Есть ли способ программно сравнить два звуковых файла, чтобы определить, идентичны они или почти идентичны? Это не mp3 файлы и не имеют ID3 или других метаданных, а простые wav файлы. Сравнение значений контрольной суммы может не работать, поскольку они не могут быть полностью идентичными.
Сравнение звуковых файлов, если они не полностью идентичны
Ответ 1
В статье статьи по акустическому отпечатку пальца упоминается ряд продуктов, в том числе opensource libfooid. В основном вы смотрите на частоту, беря грубые уровни над относительно небольшим количеством групп (скажем, 32), чтобы дать вам строку, которая представляет что-то вроде 25 мс звука, делая это для всего файла, а затем делает fuzzing сравнение этих строк для разных файлов. Это довольно сложно, но нужно делать - сравнение фактических образцов не приведет к вам в любом месте, так как простое изменение объема на несколько процентов выкинет весь матч.
Ответ 2
Процесс сравнения набора звуков для сходства называется Content Based Audio Indexing, Retrieval и Fingerprinting в области компьютерных наук.
Один из способов сделать это:
1) Запустите несколько бит обработки сигнала в каждом звуковом файле, чтобы извлечь функции, такие как шаг во времени, частотный спектр, автокорреляция, динамический диапазон, переходные процессы и т.д.
2) Поместите все функции для каждого аудиофайла в многомерный массив и дамп каждого многомерного массива в базу данных
3) Используйте методы оптимизации (например, градиентный спуск), чтобы найти наилучшее соответствие для данного аудиофайла в вашей базе данных многомерных данных.
Трюк с тем, чтобы сделать эту работу хорошо, какие функции
Есть несколько проектов, которые делают такие вещи, включая MusicBrainz и EchoNest.
Echonest имеет один из простейших API, которые я видел в этом пространстве. Очень легко начать.
P.S. Нет, я не работаю для Echonest, и не знаю никого, кто там работает.
Ответ 3
Одна вещь, которую вы могли бы попробовать, дала бы вам довольно приличный отпечаток файла, принимает преобразование Фурье и рассматривает распределение различных частот, присутствующих в файле. По-прежнему очень возможно сделать два очень разных звуковых файла, которые имеют одно и то же преобразование Фурье, но это несколько маловероятно, если ваши файлы поступают из неподуманного источника...
Ответ 4
Вы можете сравнить два файла WAV с образцом по выборке и рассчитать среднюю разницу в каждой выборке. Чтобы ускорить процесс, вы можете использовать один и тот же метод, но сравнить каждый 10-й образец или каждый 100-й образец и получить по существу одно и то же значение (два файла, которые не совпадают или даже близки, будут иметь среднюю разницу по каждой выборке).