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