语音信号特征提取程序设计代码.docx
- 文档编号:2496953
- 上传时间:2022-10-30
- 格式:DOCX
- 页数:5
- 大小:13.57KB
语音信号特征提取程序设计代码.docx
《语音信号特征提取程序设计代码.docx》由会员分享,可在线阅读,更多相关《语音信号特征提取程序设计代码.docx(5页珍藏版)》请在冰豆网上搜索。
主程序:
%
fs=22050;%抽样频率
x=wavread('2.wav');
figure
(1);subplot(211);plot(x);
title('原始语音信号波形','fontsize',16,'fontweight','bold');
xlabel('样点数','fontsize',16,'fontweight','bold');
ylabel('幅值','fontsize',16,'fontweight','bold');gridon;
N=128;
n=0:
N-1;
y=fft(x);
mag=abs(y);
f=(0:
length(y)-1)'*fs/length(y);%进行对应的频率转换
figure
(1);subplot(212);plot(f,mag);
title('原始信号频谱图','fontsize',16,'fontweight','bold');
xlabel('频率(Hz)','fontsize',16,'fontweight','bold');
ylabel('幅值','fontsize',16,'fontweight','bold');gridon;
y=wavread('2.wav');
%预加重
figure();subplot(211);plot(x);
xlabel('样点数','fontsize',16,'fontweight','bold');
ylabel('原始波形(幅值)','fontsize',16,'fontweight','bold');
xx=double(y);
subplot(212);plot(xx);
xlabel('样点数','fontsize',16,'fontweight','bold');
ylabel('预加重波形(幅值)','fontsize',16,'fontweight','bold');
%对指定帧位置进行加窗处理
Q=y';
N=256;%窗长
Hamm=hamming(N);%加窗(汉明窗)
Rect=rectwin(N);%加窗(矩形窗)
frame=60;%需要处理的帧位置
M=Q(((frame-1)*(N/2)+1):
((frame-1)*(N/2)+N));
Frame=M.*Hamm';%加窗后的语音帧
frame=M.*Rect';
figure();subplot(211);plot(Frame);
ylabel('汉明窗','fontsize',16,'fontweight','bold');
subplot(212);plot(frame);
ylabel('矩形窗','fontsize',16,'fontweight','bold');
%语音信号分帧
figure();subplot(211);plot(y);
xlabel('样点数','fontsize',16,'fontweight','bold');
ylabel('原始','fontsize',16,'fontweight','bold');
y=enframe(y,256,80);
subplot(212);plot(y);xlabel('帧数','fontsize',16,'fontweight','bold');
ylabel('分帧','fontsize',16,'fontweight','bold');
%端点检测
[x1,x2]=vad(x);%调用函数vad实现
%浊音,取13270--13510个点
%短时自相关函数
temp=y(13271:
13510);
Rn1=zeros(1,240);
fornn=1:
240
forii=1:
240-nn
Rn1(nn)=Rn1(nn)+temp(ii)*temp(nn+ii);
end
end
figure(6);
subplot(211);jj=1:
240;plot(jj,Rn1,'b');title('浊音自相关函数','fontsize',16,'fontweight','bold');
xlabel('帧数','fontsize',16,'fontweight','bold');
ylabel('短时自相关函数','fontsize',16,'fontweight','bold');gridon;
%清音,取12120--12360个点
%短时自相关函数
temp=y(12121:
12360);
Rn2=zeros(1,240);
fornn=1:
240
forii=1:
240-nn
Rn2(nn)=Rn2(nn)+temp(ii)*temp(nn+ii);
end
end
figure(6);
subplot(212);jj=1:
240;plot(jj,Rn2,'b');
title('清音自相关函数','fontsize',16,'fontweight','bold');
xlabel('帧数','fontsize',16,'fontweight','bold');
ylabel('短时自相关函数','fontsize',16,'fontweight','bold');gridon;
分帧功能子程序:
functionf=enframe(x,win,inc)
%F=ENFRAME(X,LEN)splitsthevectorX(:
)upinto
%frames.EachframeisoflengthLENandoccupies
%onerowoftheoutputmatrix.ThelastfewframesofX
%willbeignoredifitslengthisnotdivisiblebyLEN.
%ItisanerrorifXisshorterthanLEN.
nx=length(x(:
));
nwin=length(win);
if(nwin==1)
len=win;
else
len=nwin;
end
if(nargin<3)
inc=len;
end
nf=fix((nx-len+inc)/inc);
f=zeros(nf,len);
indf=inc*(0:
(nf-1)).';
inds=(1:
len);
f(:
)=x(indf(:
ones(1,len))+inds(ones(nf,1),:
));
if(nwin>1)
w=win(:
)';
f=f.*w(ones(nf,1),:
);
End
选端点功能子程序:
function[x1,x2]=vad(x)
%[x]=audioread('1.wav');
%幅度归一化到[-1,1]
x=double(x);
x=x/max(abs(x));
%常数设置
FrameLen=240;
FrameInc=80;
amp1=10;
amp2=2;
zcr1=10;
zcr2=5;
maxsilence=8;%6*10ms=30ms
minlen=15;%15*10ms=150ms
status=0;
count=0;
silence=0;
%计算过零率
tmp1=enframe(x(1:
end-1),FrameLen,FrameInc);
tmp2=enframe(x(2:
end),FrameLen,FrameInc);
signs=(tmp1.*tmp2)<0;
diffs=(tmp1-tmp2)>0.02;
zcr=sum(signs.*diffs,2);
%计算短时能量
amp=sum(abs(enframe(filter([1-0.9375],1,x),FrameLen,FrameInc)),2);
%调整能量门限
amp1=min(amp1,max(amp)/4);
amp2=min(amp2,max(amp)/8);
%开始端点检测
x1=0;
x2=0;
forn=1:
length(zcr)
goto=0;
switchstatus
case{0,1}%0=静音,1=可能开始
ifamp(n)>amp1%确信进入语音段
x1=max(n-count-1,1);
status=2;
silence=0;
count=count+1;
elseifamp(n)>amp2|...%可能处于语音段
zcr(n)>zcr2
status=1;
count=count+1;
else%静音状态
status=0;
count=0;
end
case2,%2=语音段
ifamp(n)>amp2|...%保持在语音段
zcr(n)>zcr2
count=count+1;
else%语音将结束
silence=silence+1;
ifsilence count=count+1; elseifcount status=0; silence=0; count=0; else%语音结束 status=3; end end case3, break; end end count=count-silence/2; x2=x1+count-1; figure(); subplot(311) plot(x) axis([1length(x)-11]) ylabel('Speech'); line([x1*FrameIncx1*FrameInc],[-11],'Color','red'); line([x2*FrameIncx2*FrameInc],[-11],'Color',
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语音 信号 特征 提取 程序设计 代码