将 K-means 应用于 ASR 的 MFCC 系数
Posted
技术标签:
【中文标题】将 K-means 应用于 ASR 的 MFCC 系数【英文标题】:Applying K-means to MFCC Coefficients for ASR 【发布时间】:2017-08-01 23:32:55 【问题描述】:我已将我的音频信号划分为 20ms 帧,其中 10ms 重叠。结果我有500帧。我已经计算了每一帧的 MFCC 系数。我想使用 K-MEAN 算法对每一帧进行矢量量化。
我每帧有 16 个 MFCC 系数(矢量长度:16)。现在 K-MEAN 需要 2 个向量来形成聚类图(一个沿 X,一个沿 Y),但是我只有一个向量(每帧 16 个 MFCC 系数)。
那么我该如何进行呢?我是否采用相邻帧并将 K-mean 应用于相邻帧?
【问题讨论】:
【参考方案1】:现在 K-MEAN 需要 2 个向量来形成簇图(一个沿 X,一个沿 Y)
这不是真的,kmeans 算法可以聚类任意数量的向量。
那么我该如何进行呢?我是否采用相邻帧并将 K-mean 应用于相邻帧?
您有 500 个向量,对所有向量应用 kmeans。
例如,在 MATLAB 中,输入向量 X 必须是 kmean 函数的 2xM 维矩阵;
没有这个要求
我选择哪些向量来形成 K-MEAN 中的集群?如何将 kmeans 应用于每个向量?
再一次,你把所有的向量都当作documentation。
[idx,C] = kmeans(X,num_clusters);
X 是一个 500x13 的矩阵。
看了一堆教程后,通常 i/p 是二维 Kmeans 空间的两个数据集 (X1,X2)。
如果您关注上述文档,x1 和 x2 是集群的示例。还有一个集群x3。
我的疑问是在 MFCC 的情况下,我的 X1、X2 应该是什么?
例如会有音素对应的簇。如果你有 20 个音素,你会聚集在 20 个质心上,每个质心都对应于音素。如果你有足够的数据,你也可以在 256 个质心上进行聚类,然后聚类将对应于语音中抽象的共同特征值。
【讨论】:
如果我的怀疑听起来有点荒谬,我很抱歉。我的主要疑问是如何将 K-MEAN 应用于我拥有的 13X500 MFCC 系数。例如,在 MATLAB 中,输入向量 X 必须是 kmean 函数的 2xM 矩阵;我选择哪些向量来形成 K-MEAN 中的集群?如何将 kmeans 应用于每个向量?如果您能花时间解释这样一个基本的疑问,我将不胜感激。非常感谢! 看了一堆教程后,通常 i/p 是二维 Kmeans 空间的两个数据集 (X1,X2)。我的疑问是在 MFCC 的情况下,我的 X1、X2 应该是什么? 我在回答中回复了 非常感谢!这对我帮助很大!【参考方案2】:我在这里看到两种可能性: 1)您想量化您的 mfcc 特征(例如,将特征分成强、中和小幅度组)。在这种情况下,您希望每帧运行并插入特征向量,因为每个特征都是 k-means 算法的一个点。如果您绝对必须(并且您没有)有一个 mx2 输入向量,只需将 1 添加到每个特征( MFCCs = [MFCCS, one(size(MFCCs,1),1)]; )
2) 您想找到彼此相似的帧组。在这种情况下,kmeans 算法的每个“点”都是单个帧的所有 MFCC 特征。这就是尼古拉所说的。
干杯, 丹
【讨论】:
以上是关于将 K-means 应用于 ASR 的 MFCC 系数的主要内容,如果未能解决你的问题,请参考以下文章