📄 gongzhen.m
字号:
%共振峰
close all;
clc;
PV=[235 180 664 463];
m_gui_win_h=figure('Position',PV,...
'Resize','off',...
'Numbertitle','off',...%'color',BACK_COLOR,...
'Name','共振峰频率');
set(m_gui_win_h,'MenuBar','none');
uicontrol('Style','frame',...
'Position',[5 5 180 455],...
'Callback',[]);
uicontrol('Style','pushbutton',...
'Position',[10 400 165 30],...
'FontSize',10.0,...
'String','载入语音',...
'Callback','loadsp');
m_gui_pb_speechegg_h=uicontrol('Style','pushbutton',...
'Position',[10 350 165 30],...
'FontSize',10.0,...
'String','各帧振幅能量 ',...
'Callback','zhenfu');
m_gui_pb_formant_h=uicontrol('Style','pushbutton',...
'Position',[10 300 165 30],...
'FontSize',10.0,...
'String','过零率',...
'Callback','guoling');
m_gui_pb_vocos_h=uicontrol('Style','pushbutton',...
'Position',[10 250 165 30],...
'FontSize',10.0,...
'String','基音周期',...
'Callback','jiyin');
m_gui_pb_time_h=uicontrol('Style','pushbutton',...
'Position',[10 200 165 30],...
'FontSize',10.0,...
'String','共振峰频率',...
'Callback','gongzhen');
m_gui_pb_vocalfold_h=uicontrol('Style','pushbutton',...
'Position',[10 150 165 30],...
'FontSize',10.0,...
'String','自相关函数',...
'Callback','zixiangguan');
m_gui_pb_formanttrk_h=uicontrol('Style','pushbutton',...
'Position',[10 100 165 30],...
'FontSize',10.0,...
'String','平均幅度差',...
'Callback','fuducha');
uicontrol('Style','pushbutton',...
'Position',[10 50 165 30],...
'FontSize',10.0,...
'String','返回',...
'Callback','main_can_shu_fen_xi');
ax1=axes('Position',[235 180 664 463]);
axes('Position',[.36 .1 .60 .77],'Box','on','Visible','on');
s=A;
fs=FS;
n=5;fc1=60;fc2=900;
[b,a]=butter(n,[fc1/(fs/2) fc2/(fs/2)]);
y=filter(b,a,s);
total=length(y);
for i=1:(total/160-3)
for j=1:640,
W(j)=0.54-0.46*cos(2*pi*(j-1)/640);
H(i,j)=y(j+(i-1)*160)*W(j);
end
end
[nrows,ncols]=size(H);
for i=1:nrows,
[a,g]=lpc(H(i,:),12);%p 取12
[Q,F]=freqz(1,a,256,16000);
C=abs(Q);
deltaf=8000/length(F);
n=length(C);
Z(i)=0;
for j=2:n-1,% 应用峰值检出法求共振峰。
if C(j+1)<=C(j) & C(j)>=C(j-1),
a=(C(j+1)+C(j-1))/2-C(j);
b=(C(j+1)-C(j-1))/2;
Z(i)=(j-b/(2*a))*deltaf;
break;
end
end
end
plot(Z);xlabel('语音帧数');ylabel('语音共振峰频率/hz');title('语音共振峰频率分析');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -