很多高斯混合模型的MATLAB代码

时间:2014-03-07 02:34:35

标签: matlab probability gaussian speaker mixture-model

我在语音盒MATLAB工具中应用了gaussmix函数来计算GMM。但是,当我为512 GMM组件运行代码时,代码会给我错误。

No_of_Clusters = 512;
No_of_Iterations = 10;
[m_ubm1,v_ubm1,w_ubm1]=gaussmix(feature,[],No_of_Iterations,No_of_Clusters);

Error using  * 
Inner matrix dimensions must agree.

Error in gaussmix (line 256)
pk=px*wt;                       % pk(k,1) effective number of data points for each mixture (could be    zero due to underflow)

我需要1024或2048混合物用于通用背景模型(UBM)构造。任何人都可以给我matlab代码来计算大量混合物(如512或2048)的GMM吗?

感谢。

1 个答案:

答案 0 :(得分:6)

你想用它进行语音处理吗? 如果是,最好的方法是使用MSR Identity Toolkit。该工具包由Omid Sadjadi博士担任微软研究员。他指导我如何使用它。(你也需要Voicebox)。 下面是一个示例代码片段,您可以使用它从wav文件中的语音文件中提取MFCC(假设采样率为16 kHz):

addpath('path_to_voicebox');
addpath('path_to_identity_toolbox');
[s, fs] = wavread(speechFilename);
fL = 100.0/fs; 
fH = 8000.0/fs; 
fRate = 0.010 * fs; 
fSize = 0.025 * fs; 
nChan = 27; 
nCeps = 12; 
premcoef = 0.97;
s = rm_dc_n_dither(s, fs); 
s = filter([1 -premcoef], 1, s); 
mfc = melcepst(s, fs, '0dD', nCeps, nChan, fSize, fRate, fL, fH);
mfc = cmvn(mfc', true);
writehtk(featureFilename, mfc', 100000, 9);

上述代码从预先强调的语音信号中提取39维MFCC,然后均值和方差对特征进行归一化,最后以HTK格式将它们写入磁盘。请注意,这只是一个示例代码,您可以根据需要/资源修改此代码。 “rm_dc_n_dither”和“cmvn”这两个函数来自Identity Toolbox。 Voicebox和Identity Toolbox都应该在MatLab路径中(参见上面代码的前两行)。对于语音活动检测(VAD),您可以使用Voicebox中的“vadsohn”功能,以10 ms帧跳跃率输出帧级决策(0表示静音,1表示语音)。

从数据库中提取功能后,您可以按照Identity Toolbox提供的gmm_ubm_demo中的步骤来训练UBM模型。

如果您想在TIMIT上复制我们的演示结果,您可以从以下地址下载列表文件(不包括在工具箱中):

http://www.utdallas.edu/~sadjadi/lists.tar.gz

使用普通电脑很容易做到。

此致     穆罕默德卡拉米内贾德     karaminejad@gmail.com

相关问题