【问题标题】:PCA applied to MFCC for feeding a GMM classifier (sklearn library)PCA 应用于 MFCC 以提供 GMM 分类器(sklearn 库)
【发布时间】:2016-02-06 12:16:38
【问题描述】:

我面临一个(可能很简单)问题,我必须使用 PCA 降低特征向量的维数。所有这一切的重点是创建一个分类器来预测由音素组成的句子。我用人们发音的几个小时的句子训练我的模型(句子只有 10 个),每个句子都有一个由一组音素组成的标签(见下文)。

到目前为止,我所做的如下:

import mdp
from sklearn import mixture
from features import mdcc

def extract_mfcc():
    X_train = []
    directory = test_audio_folder

    # Iterate through each .wav file and extract the mfcc
    for audio_file in glob.glob(directory):
        (rate, sig) = wav.read(audio_file)
        mfcc_feat = mfcc(sig, rate)

        X_train.append(mfcc_feat)
    return np.array(X_train)

def extract_labels():
    Y_train = []

    # here I have all the labels - each label is a sentence composed by a set of phonemes
    with open(labels_files) as f:
        for line in f:  # Ex: line = AH0 P IY1 S AH0 V K EY1 K
            Y_train.append(line)
        return np.array(Y_train)

def main():
   __X_train = extract_mfcc()
   Y_train = extract_labels()

   # Now, according to every paper I read, I need to reduce the dimensionality of my mfcc vector before to feed my gaussian mixture model

   X_test = []
   for feat in __X_train:
       pca = mdp.pca(feat)
       X_test.append(pca)

   n_classes = 10 # I'm trying to predict only 10 sentences (each sentence is composed by the phonemes described above)
   gmm_classifier = mixture.GMM(n_components=n_classes, covariance_type='full')
   gmm_classifier.fit(X_train)  # error here!reason: each "pca" that I appended before in X_train has a different shape (same number of columns though)

如何降低维度,同时让我提取的每个 PCA 具有相同的形状?

我还尝试了一个新的东西:在 for 循环中调用 gmm_classifier.fit(...),我在其中获得 PCA 向量(请参见下面的代码)。 fit() 函数有效,但我不确定我是否真的正确训练了 GMM。

n_classes = 10
gmm_classifier = mixture.GMM(n_components=n_classes, covariance_type='full')

X_test = []
for feat in __X_train:
    pca = mdp.pca(feat)
    gmm_classifier.fit(pca) # in this way it works, but I'm not sure if it actually model is trained correctly

非常感谢

【问题讨论】:

  • 不应该先对整个数据进行 PCA 分析,然后用新的简化数据训练 GMM 分类器吗?

标签: python classification pca mfcc


【解决方案1】:

关于您最后的评论/问题: gmm_classifier.fit(pca) # 以这种方式工作,但我不确定它是否真的模型训练正确 每当你调用它时,分类器都会忘记之前的信息,只接受最后的数据训练。尝试将专长附加到循环中,然后进行拟合。

【讨论】:

    猜你喜欢
    • 2014-01-02
    • 1970-01-01
    • 2021-05-08
    • 2014-04-03
    • 2013-03-04
    • 2015-12-27
    • 2015-02-13
    • 2016-04-16
    • 2017-04-09
    相关资源
    最近更新 更多