Подтвердить что ты не робот

Сравнение звуковых файлов, если они не полностью идентичны

Есть ли способ программно сравнить два звуковых файла, чтобы определить, идентичны они или почти идентичны? Это не mp3 файлы и не имеют ID3 или других метаданных, а простые wav файлы. Сравнение значений контрольной суммы может не работать, поскольку они не могут быть полностью идентичными.

4b9b3361

Ответ 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-й образец и получить по существу одно и то же значение (два файла, которые не совпадают или даже близки, будут иметь среднюю разницу по каждой выборке).