Рассчитайте разницу между 2-х временными интервалами DSP - PullRequest
1 голос
/ 26 октября 2011

Это может быть широкий ответ, но я хотел бы увидеть ответы и обсудить эту тему с пользователями SO.

Пока что я предполагаю, что аудиофайл (WAV) имеет частоту дискретизации, которая может быть 44000 или 48000(я видел большинство этих 2), и из этого мы можем определить, что одна секунда в файл (секунда 00:00:01) имеет ровно 44000 целочисленных значений, что означает, что здесь у нас есть Int[], так что если аудиоДлительность файла составляет 5 секунд, он имеет 5 * 44000 целых чисел (или 5 сэмплов).

Итак, мой вопрос, как мы можем вычислить разницу (или сходство) контента между двумя временными промежутками, такими как Audio1.wav иAudio2.wav в 00:00:01 с той же частотой дискретизации.

Ответы [ 2 ]

1 голос
/ 26 октября 2011

Один из способов сделать это - повторно сэмплировать сигнал с 44100 Гц до 48000 Гц, чтобы оба сигнала имели одинаковую частоту дискретизации, и выполнить взаимную корреляцию. Форма взаимной корреляции может быть мерой сходства. Вы можете посмотреть на высоту пика или соотношение энергии в пике к общей энергии.

Обратите внимание, что когда сигнал повторяется, вы получите несколько пиков взаимной корреляции.

1 голос
/ 26 октября 2011

В ваших рассуждениях есть пара предположений: 1. Файл представляет собой необработанные несжатые (в формате PCM) данные. 2. Существует только один канал (моно).

Лучше начать с чтения некоторых форматных описаний и примеров реализации , а затем искать некоторые алгоритмы сравнения звука ( 1 , 2 , 3 ).

Связано Q: Сравните две спектрограммы, чтобы найти смещение, где они соответствуют алгоритму

...