www.pudn.com > DHMM_MATLAB.rar > exp6.m


%	by lkk@mails.tsinghua.edu.cn 
function exp6(cut_n,load_mat) 
%	输入: 
%		cut_n				是否去掉静音部分,0表示不去除静音部分,1表示去除静音部分 
%		load_mat			是否读入参数配置,1表示不读入参数配置, 0表示读入参数配置 
%   输出: 
%       无输出,显示识别结果,别保存为result.mat 
sort_number = 64; 
 
%	读入数据 
%	data				是480行n列矩阵,包含所有训练数据的加窗分帧后数据 
%	divid_line          是1行101列矩阵,divid_line(1)=0,第2 -- 101 列记录data中100个训练样本的初始下标 
%	test_data			是480行n列矩阵,包含所有测试数据的加窗分帧后数据 
%	test_divid          是1行101列矩阵,divid_line(1)=0,第2 -- 101	列记录data中100个测试样本的初始下标 
% 
if load_mat == 1 
    fprintf('Read_In_Train_Data\n'); 
    [data,divid_line,test_data,test_divid] = Read_In_Data(cut_n); 
    save('save\Save_Read_In_Data','data','divid_line','test_data','test_divid'); 
else 
    load('save\Save_Read_In_Data'); 
end 
 
%	计算lpcc 
%	characters          是14行n列的训练特征矩阵 
%   test_characters     是14行n列的测试特征矩阵 
% 
fprintf('My_Lpcc\n'); 
if	load_mat == 1 
	[characters] = My_Lpcc(data); 
	[test_characters] = My_Lpcc(test_data); 
	save('save\Save_My_Lpcc','characters','test_characters'); 
else 
	load('save\Save_My_Lpcc.mat'); 
end 
 
 
%	聚类 
%   characters_classify     是1行n列向量,记录训练数据每一帧的归类 
%   test_classify           是1行n列向量,记录测试数据每一帧的归类 
% 
fprintf('classify\n'); 
if load_mat == 1 
	[characters_classify,test_classify] = classify(characters,test_characters,sort_number); 
	save('save\Save_classify','characters_classify','test_classify'); 
else 
	load('save\Save_classify.mat'); 
end 
 
 
%	训练 
%   A       1行10列的cell矩阵,其中每一个元素是5行 5列的矩阵,记录每个数字声音模型的状态转移概率矩阵 
%   B       1行10列的cell矩阵,其中每一个元素是5行64列的矩阵,记录每个数字声音模型的B矩阵 
% 
fprintf('training\n');	 
if load_mat == 1 
	[A,B] = DHMM_Train(characters_classify,divid_line,sort_number); 
	save('save\Save_DHMM_Train','A','B'); 
else  
	load('save\Save_DHMM_Train'); 
end 
 
%	测试 
%   result 是2行30列矩阵,每一列记录测试样本和识别结果 
% 
fprintf('testing\n'); 
[result] = DHMM_Test(A,B,test_classify,test_divid);	 
save('save\Save_DHMM_Test','result'); 
 
end