У меня была та же проблема, и решение для нее состояло в том, чтобы сопоставить два массива MFCC с использованием алгоритма Dynamic Time Warping .
После вычисления MFCC вы должны теперькаждый из ваших двух сигналов - массив, в котором каждый элемент содержит MFCC для кадра (массив массивов).Первым шагом будет вычисление «расстояний» между каждым одним элементом одного массива и каждым другим элементом, то есть расстояний между каждыми двумя наборами MFCC (для этого вы можете попробовать использовать евклидово расстояние ),
Это должно оставить вас с двумерным массивом (назовем его «dist»), где element (i, j) представляет расстояние между MFCC i-го кадра в первом сигнале и MFCCj-го кадра вашего второго сигнала.
К этому массиву теперь можно применить алгоритм DTW:
- dtw (1,1) = dist (1,1)
- dtw (i, j) = min (dtw (i-1, j-1), dtw (i-1, j), dtw (i, j-1)) + dist (i, j).
Значение, представляющее «разницу» между вашими двумя файлами, равно dtw (n, m), где n = nr.кадров в первом сигнале, m = nr.фреймов второго.
Для дальнейшего чтения, этот документ может дать вам общее представление о применении DTW к MFCC, а это представление алгоритма DTW можеттакже помогите.