Применение K-средних к коэффициентам MFCC для ASR

Я разделил свой аудиосигнал на кадр 20 мс с перекрытием 10 мс. В итоге у меня 500 кадров. Я вычислил коэффициенты MFCC для каждого кадра. Я хочу выполнить векторное квантование для каждого кадра, используя алгоритм K-MEAN.

У меня 16 коэффициентов MFCC на кадр (длина вектора: 16). Теперь K-MEAN требует 2 вектора для формирования диаграммы кластеров (один по X, один по Y), однако у меня есть только один вектор (16 коэффициентов MFCC на кадр).

Итак, как мне продолжить? Могу ли я взять соседние кадры и применить K-среднее к соседним кадрам?


person Debayan Ghosh    schedule 11.03.2017    source источник


Ответы (2)


Теперь K-MEAN требует 2 вектора для формирования диаграммы кластеров (один по X, один по Y).

Это неправда, алгоритм kmeans может кластеризовать произвольное количество векторов.

Итак, как мне продолжить? Могу ли я взять соседние кадры и применить K-mean К СЛЕДУЮЩИМ КАДРАМ?

У вас есть 500 векторов, вы применяете kmeans для всех из них.

Например, в MATLAB входной вектор X должен иметь матрицу размерности 2xM для функции kmean;

Нет такого требования

Какие векторы выбрать для формирования кластеров в K-MEAN? КАК ПРИМЕНИТЬ kmeans К каждому вектору?

Опять же, вы берете все векторы, как в документации.

     [idx,C] = kmeans(X,num_clusters);

X - матрица размером 500x13.

Посмотрев кучу руководств, обычно i / p - это два набора данных (X1, X2) для двухмерного пространства Kmeans.

Если вы относитесь к документации выше, x1 и x2 являются примерами кластеров. Также есть кластер х3.

Сомневаюсь, что в случае с MFCC какими должны быть мои X1, X2?

Например, будут кластеры, соответствующие фонемам. Если у вас есть 20 фонем, вы группируете 20 центроидов, и каждая из них будет соответствовать фонеме. Вы также можете кластеризовать 256 центроидов, если у вас достаточно данных, тогда кластеры будут соответствовать значениям абстрактных общих функций в речи.

person Nikolay Shmyrev    schedule 11.03.2017
comment
Прошу прощения, если мои сомнения звучат немного абсурдно. Мое главное сомнение заключается в том, КАК мне применить K-MEAN к имеющимся у меня коэффициентам 13X500 MFCC. Например, в MATLAB входной вектор X должен иметь матрицу размерности 2xM для функции kmean; Какие векторы выбрать для формирования кластеров в K-MEAN? КАК ПРИМЕНИТЬ kmeans К каждому вектору? Я был бы очень признателен, если бы вы нашли время, чтобы объяснить такое элементарное сомнение. Большое спасибо! - person Debayan Ghosh; 12.03.2017
comment
Посмотрев кучу руководств, обычно i / p - это два набора данных (X1, X2) для двухмерного пространства Kmeans. Сомневаюсь, что в случае с MFCC какими должны быть мои X1, X2? - person Debayan Ghosh; 12.03.2017
comment
Я ответил в ответ - person Nikolay Shmyrev; 12.03.2017
comment
Большое спасибо! Это мне очень помогло! - person Debayan Ghosh; 13.03.2017

Есть две возможности, которые я вижу здесь: 1) вы хотите квантовать свои функции mfcc (например, разделите функции на группы амплитуд: сильные, средние и малые). В этом случае вы хотите запускать для каждого кадра и вставлять вектор функций, поскольку каждая функция является единственной точкой для алгоритма k-средних. Если вам абсолютно необходимо (а у вас нет) входной вектор mx2, просто добавьте 1 к каждой функции (MFCCs = [MFCCS, ones (size (MFCCs, 1), 1)];)

2) Вы хотите найти группы кадров, которые похожи друг на друга. В этом случае каждая из ваших «точек» для алгоритма kmeans - это все функции MFCC для одного кадра. Об этом и говорит Николай.

Привет, Дэн

person Dan Erez    schedule 04.11.2017