代码如下:%初始化GMM_order = 10;train_path = './train'; test_path = './test';train_info = dir(train_path);n_speakers = length(train_info)-2;test_info = dir(strcat(test_path, '/*.wav'));% MFCC特征features = cell(1,n_speakers); for i=1:n_speakers tem_info = dir(strcat(train_info(2+i).folder, '/', train_info(2+i).name)); for j=1:length(tem_info) - 2 [voice_data, Fs] = audioread(strcat(tem_info(2 + j).folder, '/', tem_info(2 + j).name)); if j==1 mfcc_features = get_features(voice_data, Fs); else mfcc_features = [mfcc_features;get_features(voice_data, Fs)]; end features{i} = mfcc_features; endend%模型训练GMModels = cell(1, n_speakers);options = struct('MaxIter',{2000});epochs = 10;for i=1:n_speakers GMModels{i} = fitgmdist(features{i}, GMM_order,'SharedCov',true,'CovType','diagonal','Regularize',0.001,'Options',options);end%测试过程for i=1:length(test_info) [voice_data, Fs] = audioread(strcat(test_info(i).folder, '/', test_info(i).name)); mfcc_features = get_features(voice_data, Fs); [d1, log1] = posterior(GMModels{1}, mfcc_features); [d2, log2] = posterior(GMModels{2}, mfcc_features); if log1 < log2 fprintf(test_info(i).name);fprintf(' label: 1'); fprintf('\n'); else fprintf(test_info(i).name); fprintf(' label: 2'); fprintf('\n'); endend
出现的警告为
大概是数据的输入出现了问题 但是也不知道怎么解决 我的数据是train和test文件 里面包含了8个说话人 每个说话人说3次 一共24个音频 但是train中每次运行是对应的struct中都有2个空行
希望能解决bug并成功仿真出来