我将音频信号分为20ms框架,并重叠10ms。结果,我有500帧。我已经计算了每个帧的MFCC系数。我想使用K-均值算法对每个帧进行矢量量化。
i每个框架具有16个MFCC系数(矢量长度:16)。现在K-均需要2个向量来形成群集图(一个沿x,一个沿y沿x),但是我只有一个向量(每帧16个MFCC系数)。
那么我该如何进行呢?我是否将相邻帧并将K-均值应用于相邻的帧?
现在,k-均需要2个矢量来形成群集图(沿x,一个沿y)
这不是真的,kmeans算法可以集群任意数量的向量。
那么我该如何进行呢?我是否将相邻帧并将K均值应用于相邻的帧?
您有500个向量,您将其应用于所有媒介。
对于例如,在MATLAB中,输入向量X必须为Kmean函数的尺寸2xm矩阵;
没有这样的要求
我选择哪些向量在k均值中形成簇?如何将KMeans应用于每个向量?
再次,您将所有向量如文档中所示。
[idx,C] = kmeans(X,num_clusters);
x是500x13的矩阵。
看到了一堆教程后,通常I/P是两个数据集(X1,X2),对于2-D KMeans空间。
如果您是关于上述文档,则X1和X2是群集的示例。还有一个集群x3。
在MFCC的情况下,我的疑问应该是我的x1,x2?
例如,将有与音素相对应的簇。如果您有20个音素,则在20个质谱上聚类,每个质谱将与音素相对应。如果您有足够的数据,也可以将256个质心聚类,那么群集将对应于语音中的抽象共同特征值。
我在这里看到两种可能性:1)您想量化MFCC功能(将功能分开为强度,中和小的振幅组)。在这种情况下,您需要每帧运行并插入功能向量,因为每个功能都是K-均值算法的一个点。如果您绝对必须(并且不)有一个MX2输入向量,则只需在每个功能中添加1个(mfccs = [mfccs,ones(size(mfccs,1),1),1)];)
2)您想找到彼此相似的框架组。在这种情况下,Kmeans算法的每个"点"都是单个帧的所有MFCC功能。这就是尼古拉所说的。
欢呼,Dan