clc; clear all; close all;
fs=8000;
Tw = 25; % analysis frame duration (ms) 帧长
Ts = 10; % analysis frame shift (ms) 帧移
alpha = 0.97; % preemphasis coefficient 语音增强
M = 20; % number of filterbank channels
C = 12; % number of cepstral coefficients MFCC个数
L = 22; % cepstral sine lifter parameter
LF = 300; % lower frequency limit (Hz)
HF = 3700; % upper frequency limit (Hz)
%训练用数据
[train_signals train_labels] = load_audio_from_folder('train');%读取语音文件、生成标签数据
%转MFCC参数
train_feature={};
for speech=train_signals
[ MFCCs, FBEs, frames ] = mfcc( speech{1}, fs, Tw, Ts, alpha, @hamming, [LF HF], M, C+1, L );
train_feature(end+1,1)={MFCCs};
end;
%测试用数据
[test_signals test_labels] = load_audio_from_folder('test');%读取语音文件、生成标签数据
%转MFCC参数
test_feature={};
for speech=test_signals
[ MFCCs, FBEs, frames ] = mfcc( speech{1}, fs, Tw, Ts, alpha, @hamming, [LF HF], M, C+1, L );
test_feature(end+1,1)={MFCCs};
end;
%% HMM模型建立和训练
d = C+1; %一个观察符号的维度
nstates = 5;%状态个数
nmix = 3; % 混合高斯分布个数
%训练apple的HMM
pi0=[1 0 0 0 0]; %初始状态概率
trans0=[1/2 1/2 0 0 0 ; %转移概率
0 1/2 1/2 0 0 ;
0 0 1/2 1/2 0 ;
0 0 0 1/2 1/2 ;
0 0 0 0 1 ];
models={};
[unique_train_labels, ~, indices] = unique(train_labels);%重复去掉,只取唯一值
for i = 1:length(unique_train_labels)
display(sprintf('modeling %s...', char(unique_train_labels(i))))
%发射概率初始值计算
stackedData = cell2mat(train_feature(indices == i)')';%训练用数据
mu = zeros(d, nmix);%均值
Sigma = zeros(d, d, nmix);%方差
for k = 1:nmix
XX = stackedData + randn(size(stackedData));
mu(:, k) = colvec(mean(XX));%所有训练数据的均值
Sigma(:, :, k) = cov(XX);%所有训练数据的方差
end
M = normalize(rand(nstates, nmix), 1);%混合高斯系数
emission = condMixGaussTiedCpdCreate(mu, Sigma, M);%发射状态描述结构体获得
%训练HMM
%verbose:是否打印信息
%nRandomRestarts:随机训练几次
%maxiter:最大迭代次数
%nmix:混合高斯个数
%pi0:HMM初始状态概率
%trans0:HMM初始转移概率
%emission0:初始发射状态描述
%piPrior:防止除数为0的情况出现 a/b=a+piPrior/b+piPrior 变成这种形式
%transPrior:防止除数为0的情况出现 a/b=a+piPrior/b+piPrior 变成这种形式
models(end+1,1) = {hmmFit(train_feature(indices == i), nstates, 'mixGaussTied', 'verbose', false, ...
'nRandomRestarts', 3, 'maxiter', 50, 'nmix', nmix,...
'pi0',pi0,'trans0',trans0,'emission0',emission, ...
'piPrior',pi0,'transPrior',trans0.*10)};
end;
%训练样本识别率计算
errorcount=0;
for j=1:length(train_feature)
p=zeros(length(unique_train_labels),1);
for i = 1:length(unique_train_labels)
p(i)=hmmLogprob(models{i}, train_feature(j));%计算概率值
end;
[~, i]=max(p);%取最大概率的模型作为识别
%display(sprintf('"%s" is recognized as "%s"', train_labels{j},char(unique_train_labels(i))))
if ~strcmp(train_labels{j},char(unique_train_labels(i)))
errorcount=errorcount+1;%错误累计
end;
end;
display(sprintf('train accuracy is %0.2f', (length(train_feature)-errorcount)*100/length(train_feature)));
%% 测试样本识别率计算
errorcount=0;
for j=1:length(test_feature)
p=zeros(length(unique_train_labels),1);
for i = 1:length(unique_train_labels)
p(i)=hmmLogprob(models{i}, test_feature(j));%计算概率值
end;
[~, i]=max(p);%取最大概率的模型作为识别
%display(sprintf('"%s" is recognized as "%s"', test_labels{j},char(unique_train_labels(i))))
if ~strcmp(test_labels{j},char(unique_train_labels(i)))
errorcount=errorcount+1;%错误累计
end;
end;
display(sprintf('test accuracy is %0.2f', (length(test_labels)-errorcount)*100/length(test_labels)));
没有合适的资源?快使用搜索试试~ 我知道了~
singleWord.rar_HMM_识别_词汇
共107个文件
wav:105个
m:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 79 浏览量
2022-07-15
13:07:52
上传
评论
收藏 695KB RAR 举报
温馨提示
利用matlab实现少量的词汇识别,包含了训练和识别的功能
资源详情
资源评论
资源推荐
收起资源包目录
singleWord.rar_HMM_识别_词汇 (107个子文件)
main.m 4KB
load_audio_from_folder.m 567B
orange11.wav 14KB
orange12.wav 13KB
orange10.wav 13KB
orange07.wav 13KB
orange15.wav 13KB
orange14.wav 12KB
orange13.wav 12KB
orange05.wav 12KB
orange01.wav 12KB
orange06.wav 12KB
orange09.wav 12KB
orange08.wav 12KB
orange04.wav 12KB
peach15.wav 12KB
orange02.wav 12KB
peach12.wav 11KB
peach08.wav 11KB
peach11.wav 11KB
orange03.wav 11KB
peach05.wav 11KB
peach06.wav 11KB
peach02.wav 11KB
peach04.wav 11KB
peach09.wav 10KB
peach13.wav 10KB
peach03.wav 10KB
peach14.wav 10KB
pineapple12.wav 10KB
peach07.wav 10KB
peach10.wav 10KB
pineapple13.wav 10KB
peach01.wav 10KB
pineapple06.wav 9KB
pineapple04.wav 9KB
pineapple14.wav 9KB
banana13.wav 9KB
banana14.wav 9KB
pineapple03.wav 9KB
pineapple02.wav 9KB
pineapple08.wav 9KB
pineapple01.wav 9KB
pineapple15.wav 9KB
pineapple10.wav 9KB
pineapple09.wav 9KB
pineapple07.wav 9KB
banana07.wav 9KB
pineapple11.wav 9KB
pineapple05.wav 9KB
banana06.wav 9KB
banana10.wav 9KB
banana15.wav 8KB
banana05.wav 8KB
banana11.wav 8KB
banana08.wav 8KB
banana12.wav 8KB
banana03.wav 8KB
lime05.wav 7KB
lime03.wav 7KB
lime01.wav 7KB
banana02.wav 7KB
lime04.wav 7KB
lime12.wav 7KB
banana09.wav 7KB
apple08.wav 7KB
kiwi15.wav 7KB
kiwi12.wav 7KB
banana04.wav 7KB
kiwi13.wav 7KB
lime09.wav 7KB
lime06.wav 7KB
lime14.wav 7KB
apple13.wav 7KB
apple11.wav 7KB
apple12.wav 7KB
lime11.wav 7KB
kiwi14.wav 7KB
lime07.wav 7KB
banana01.wav 7KB
apple10.wav 7KB
apple15.wav 7KB
kiwi07.wav 7KB
apple09.wav 7KB
kiwi11.wav 7KB
lime15.wav 7KB
kiwi01.wav 7KB
apple14.wav 7KB
lime02.wav 7KB
lime10.wav 7KB
apple02.wav 6KB
lime08.wav 6KB
apple05.wav 6KB
apple07.wav 6KB
kiwi08.wav 6KB
apple04.wav 6KB
kiwi10.wav 6KB
kiwi06.wav 6KB
kiwi03.wav 6KB
kiwi09.wav 6KB
共 107 条
- 1
- 2
钱亚锋
- 粉丝: 90
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0