2

我在语音盒 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代码来计算大量混合物的GMM,例如512或2048?

谢谢。

4

1 回答 1

6

你想用它来处理语音吗?如果是,最好的方法是使用 MSR Identity Toolkit。此工具包由 Omid Sadjadi 博士作为 Microsoft 研究员编写。他指导我如何使用它。(你也需要语音盒)。这是一个示例代码片段,您可以使用它从 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 毫秒的跳帧率输出帧级决策(0 表示静音,1 表示语音)。

从数据库中提取特征后,您可以按照 Identity Toolbox 提供的 gmm_ubm_demo 中的过程来训练 UBM 模型。

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

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

这很容易,你可以用普通的电脑来做。

问候 Mohammad Karaminejad karaminejad@gmail.com

于 2014-03-10T18:18:16.973 回答