?? shibiesb.m
字號:
function [num sbjg]=shibiesb(file)
%識別原始的語音文件
%filename='D:\work\語音\1107\語音文件\t222';
filename=file;
[qs,zz,num]=readlab([filename '.lab']);
[d,fp,dt,tc,t]=readhtk([filename '.wav']);
pd=zeros(4,3000);%定義一個臨時的矩陣pd,用于存儲4個語音波形序列,序列長度不超過3000
%通過.lab和.wav文件將語音文件中的聲音信號讀入pd中
for i=1:4
qs1(i)=round(qs(i)/fp/10000000);
zz1(i)=round(zz(i)/fp/10000000);
cb(i)=zz1(i)-qs1(i)+1;
pd(i,1)=cb(i);
for j1=qs1(i):zz1(i)
pd(i,j1-qs1(i)+2)=d(j1);
end
end
%分別對4個數字進行識別
for sb=1:4
[ceps,freqresp,fb,fbrecon,freqrecon] = mfcc(pd(sb,2:pd(sb,1)), 8000, 160); %計算每個數字的mfcc參數
[a1 a2]=size(ceps);
if (a2>14)
datacell(:,:,sb)=ceps(:,1:15);%截取前13*15部分
%讀取0到9十個數字的HMM特征參數,并計算概率
for i=1:10
fid = fopen(['d:\shuzi' char(i+47) '.mat'],'r');
prior=fread(fid,6,'double');
prior=reshape(prior,6,1);
transmat=fread(fid,36,'double');
transmat=reshape(transmat,6,6);
mu=fread(fid,78,'double');
mu=reshape(mu,13,6);
Sigma=fread(fid,1014,'double');
Sigma=reshape(Sigma,13,13,6);
mixmat=fread(fid,6,'double');
mixmat=reshape(mixmat,6,1);
fclose(fid);
loglik(i) = mhmm_logprob(datacell(:,:,sb), prior, transmat, mu, Sigma, mixmat);%計算概率
end
%比較概率的大小,求出概率最大者
jieguo=loglik(1);
jg=1;
for i=1:10
if loglik(i)>jieguo
jieguo=loglik(i);
jg=i;
end
end
sbjg(sb)=jg-1;
else
sbjg(sb)=-1;
end
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -