sagidpy.m
来自「这是一个用于语音信号处理的工具箱」· M 代码 · 共 948 行 · 第 1/3 页
M
948 行
X23 = distance(P40_x,P40_y, P38_x,P38_y)*2.0;
D23 = ar2(P38_x,P38_y, P40_x,P40_y, J2_x,J2_y, D23, P39_x,P39_y);
XJ1 = distance(J2_x,J2_y, P40_x,P40_y)*2.0;
JD1 = ar2(P40_x,P40_y, J2_x,J2_y, J4_x,J4_y, JD1, J1_x,J1_y);
XJ2 = distance(J4_x,J4_y, J2_x,J2_y)*2.0;
JD2 = ar2(J2_x,J2_y, J4_x,J4_y, J6_x,J6_y, JD2, J3_x,J3_y);
XJ3 = distance(J6_x,J6_y, J4_x,J4_y)*2.0;
JD3 = ar2(J4_x,J4_y, J6_x,J6_y, J8_x,J8_y, JD3, J5_x,J5_y);
XJ4 = distance(J8_x,J8_y, J6_x,J6_y)*2.0;
JD4 = ar2(J6_x,J6_y, J8_x,J8_y, P42_x,P42_y, JD4, J7_x,J7_y);
X24 = distance(P42_x,P42_y, J8_x,J8_y)*2.0;
D24 = ar2(J8_x,J8_y, P42_x,P42_y, P92_x,P92_y, D24, M_x,M_y);
% AR23 */
X92 = distance(P92_x,P92_y, P42_x,P42_y)*2.0;
D92 = ar23(P42_x,P42_y, P92_x,P92_y, P44_x,P44_y, D92, P91_x,P91_y);
X25 = distance(P44_x,P44_y, P92_x,P92_y)*2.0;
D25 = ar23(P92_x,P92_y, P44_x,P44_y, P46_x,P46_y, D25, P43_x,P43_y);
X26 = distance(P46_x,P46_y, P44_x,P44_y)*2.0;
D26 = ar23(P44_x,P44_y, P46_x,P46_y, P48_x,P48_y, D26, P45_x,P45_y);
X27 = distance(P48_x,P48_y, P46_x,P46_y)*2.0;
D27 = ar23(P46_x,P46_y, P48_x,P48_y, P50_x,P50_y, D27, P47_x,P47_y);
X28 = distance(P50_x,P50_y, P48_x,P48_y)*2.0;
D28 = ar23(P48_x,P48_y, P50_x,P50_y, P52_x,P52_y, D28, P49_x,P49_y);
X29 = distance(P52_x,P52_y, P50_x,P50_y)*2.0;
D29 = ar23(P50_x,P50_y, P52_x,P52_y, P54_x,P54_y, D29, P51_x,P51_y);
X30 = distance(P54_x,P54_y, P52_x,P52_y)*2.0;
D30 = ar23(P52_x,P52_y, P54_x,P54_y, Z56_x,Z56_y, D30, P53_x,P53_y);
X31 = distance(Z56_x,Z56_y, P54_x,P54_y)*2.0;
D31 = ar23(P54_x,P54_y, Z56_x,Z56_y, Z58_x,Z58_y, D31, Z55_x,Z55_y);
X32 = distance(Z58_x,Z58_y, Z56_x,Z56_y)*2.0;
D32 = ar23(Z56_x,Z56_y, Z58_x,Z58_y, Z60_x,Z60_y, D32, Z57_x,Z57_y);
X33 = distance(Z60_x,Z60_y, Z58_x,Z58_y)*2.0;
D33 = ar23(Z58_x,Z58_y, Z60_x,Z60_y, N0_x,N0_y, D33, Z59_x,Z59_y);
% AR 4 */
X34 = distance(N0_x,N0_y, Z60_x,Z60_y)*2.0;
D34 = ar4(Z60_x,Z60_y, N0_x,N0_y, N2_x,N2_y, D34, N_x,N_y);
X35 = distance(N2_x,N2_y, N0_x,N0_y)*2.0;
D35 = ar4(N0_x,N0_y, N2_x,N2_y, N4_x,N4_y, D35, N1_x,N1_y);
X36 = distance(N4_x,N4_y, N2_x,N2_y)*2.0;
D36 = ar4(N2_x,N2_y, N4_x,N4_y, N6_x,N6_y, D36, N3_x,N3_y);
X37 = distance(N6_x,N6_y, N4_x,N4_y)*2.0;
D37 = ar4(N4_x,N4_y, N6_x,N6_y, N8_x,N8_y, D37, N5_x,N5_y);
X38 = distance(N8_x,N8_y, N6_x,N6_y)*2.0;
D38 = ar4(N6_x,N6_y, N8_x,N8_y, N10_x,N10_y, D38, N7_x,N7_y);
X39 = distance(N10_x,N10_y, N8_x,N8_y)*2.0;
D39 = ar4(N8_x,N8_y, N10_x,N10_y, N12_x,N12_y, D39, N9_x,N9_y);
X40 = distance(N12_x,N12_y, N10_x,N10_y)*2.0;
D40 = ar4(N10_x,N10_y, N12_x,N12_y, N14_x,N14_y, D40, N11_x,N11_y);
X41 = distance(N14_x,N14_y, N12_x,N12_y)*2.0;
D41 = ar4(N12_x,N12_y, N14_x,N14_y, P62_x,P62_y, D41, N13_x,N13_y);
% AR 5 */
X42 = distance(P62_x,P62_y, N14_x,N14_y)*2.0;
D42 = ar5(N14_x,N14_y, P62_x,P62_y, P64_x,P64_y, D42, L5_x,L5_y, L6_x,L6_y, L7_x,L7_y);
% area */
area=zeros(1,60);
leng=zeros(1,60);
area(1) = DD1;
area(2) = DD2;
area(3) = DD3;
area(4) = DD4;
area(5) = DD5;
area(6) = DD6;
area(7) = DD7;
area(8) = DD8;
area(9) = ND9;
area(10) = D5;
area(11) = D6;
area(12) = D7;
area(13) = D8;
area(14) = RD1;
area(15) = D9;
area(16) = AD9;
area(17) = D10;
area(18) = AD10;
area(19) = D11;
area(20) = RD2;
area(21) = D12;
area(22) = RD3;
area(23) = RD4;
area(24) = RD5;
area(25) = RD6;
area(26) = D13;
area(27) = D14;
area(28) = D15;
area(29) = D16;
area(30) = D17;
area(31) = D18;
area(32) = D19;
area(33) = D20;
area(34) = D21;
area(35) = D22;
area(36) = D23;
area(37) = JD1;
area(38) = JD2;
area(39) = JD3;
area(40) = JD4;
area(41) = D24;
area(42) = D92;
area(43) = D25;
area(44) = D26;
area(45) = D27;
area(46) = D28;
area(47) = D29;
area(48) = D30;
area(49) = D31;
area(50) = D32;
area(51) = D33;
area(52) = D34;
area(53) = D35;
area(54) = D36;
area(55) = D37;
area(56) = D38;
area(57) = D39;
area(58) = D40;
area(59) = D41;
area(60) = D42;
NT1A = 2.0*distance(Vs_x,Vs_y, V_x,V_y); % refer to Ding diss. P.82 */
% length */
leng(1) = XX1;
leng(2) = XX2;
leng(3) = XX3;
leng(4) = XX4;
leng(5) = XX5;
leng(6) = XX6;
leng(7) = XX7;
leng(8) = XX8;
leng(9) = XX9;
leng(10) = X5;
leng(11) = X6;
leng(12) = X7;
leng(13) = X8;
leng(14) = XR1;
leng(15) = X9;
leng(16) = AX9;
leng(17) = X10;
leng(18) = AX10;
leng(19) = X11;
leng(20) = XR2;
leng(21) = X12;
leng(22) = XR3;
leng(23) = XR4;
leng(24) = XR5;
leng(25) = XR6;
leng(26) = X13;
leng(27) = X14;
leng(28) = X15;
leng(29) = X16;
leng(30) = X17;
leng(31) = X18;
leng(32) = X19;
leng(33) = X20;
leng(34) = X21;
leng(35) = X22;
leng(36) = X23;
leng(37) = XJ1;
leng(38) = XJ2;
leng(39) = XJ3;
leng(40) = XJ4;
leng(41) = X24;
leng(42) = X92;
leng(43) = X25;
leng(44) = X26;
leng(45) = X27;
leng(46) = X28;
leng(47) = X29;
leng(48) = X30;
leng(49) = X31;
leng(50) = X32;
leng(51) = X33;
leng(52) = X34;
leng(53) = X35;
leng(54) = X36;
leng(55) = X37;
leng(56) = X38;
leng(57) = X39;
leng(58) = X40;
leng(59) = X41;
leng(60) = X42;
p1_x=5;
p1_y=6;
p2_x=3;
p2_y=9;
center_x=0;
center_y=0;
ox=4;
oy=3;
wid=3;
hei=4;
xrat=0.5;
yrat=0.5;
% First draw fix structure
figure(syn_win2_h);
clf;
subplot(1,3,2);
Wh_x = W_x;
Wh_y = H_y;
draw_lin(Wh_x, Wh_y, G2_x, G2_y, ox, oy, wid, hei, xrat, yrat);
hold;
draw_lin(G2_x, G2_y, G_x, G_y, ox, oy, wid, hei, xrat, yrat);
draw_lin(G_x, G_y, G1_x, G1_y, ox, oy, wid, hei, xrat, yrat);
draw_lin(H1_x,H1_y, H2_x, H2_y, ox, oy, wid, hei, xrat, yrat);
draw_lin(H2_x, H2_y, K_x, K_y, ox, oy, wid, hei, xrat, yrat);
% Draw lips
draw_lin(N_x,N_y, U_x,U_y, ox, oy, wid, hei, xrat, yrat);
draw_lin(JAW_x,JAW_y, PS_x,PS_y, ox, oy, wid, hei, xrat, yrat);
draw_lin(PS_x,PS_y, PF_x,PF_y, ox, oy, wid, hei, xrat, yrat);
draw_lin(U_x,U_y, L3_x,L3_y, ox, oy, wid, hei, xrat, yrat);
draw_lin(L3_x,L3_y, L5_x,L5_y, ox, oy, wid, hei, xrat, yrat);
draw_lin(JAW_x,JAW_y, L6_x,L6_y, ox, oy, wid, hei, xrat, yrat);
draw_lin(L6_x,L6_y, L7_x,L7_y, ox, oy, wid, hei, xrat, yrat);
% Draw hyoid
if (hy < 0.0)
draw_arc(PP_x,PP_y, H_x,H_y, pme_x,pme_y, ox, oy, wid, hei, xrat, yrat);
else
draw_arc(H_x,H_y, PP_x,PP_y, pme_x,pme_y, ox, oy, wid, hei, xrat, yrat);
end
draw_lin(DL_x,DL_y, PP_x,PP_y, ox, oy, wid, hei, xrat, yrat);
draw_lin(H_x,H_y, H1_x,H1_y, ox, oy, wid, hei, xrat, yrat);
draw_lin(W_x,W_y, Wh_x,Wh_y, ox, oy, wid, hei, xrat, yrat);
% Draw tonge body & tonge blade
draw_arc(N_x,N_y, M_x,M_y, cmn_x,cmn_y, ox, oy, wid, hei, xrat, yrat);
draw_arc(T_x,T_y, B_x,B_y, c1_x,c1_y, ox, oy, wid, hei, xrat, yrat);
draw_arc(PF_x,PF_y, T_x,T_y, c2_x,c2_y, ox, oy, wid, hei, xrat, yrat);
% Draw velum
draw_arc(M_x,M_y, V_x,V_y, cv_x,cv_y, ox, oy, wid, hei, xrat, yrat);
draw_lin(V_x,V_y, W_x,W_y, ox, oy, wid, hei, xrat, yrat);
draw_arc(B_x,B_y, DL_x,DL_y, tongc_x,tongc_y, ox, oy, wid, hei, xrat, yrat);
ss=sprintf('Midsagittal profile');
text(4.8,4.65,ss,'color',TEXT_COLOR,'FontSize',10);
hold;
axis([floor(ox+xrat*G2_x-1.0) ceil(ox+xrat*L3_x+1.0) 1 4.5]);
% axis([4.5 7.5 1 4.5]);
axis('off');
subplot(1,3,1);
% axis([0 20 0 12]);
length=zeros(1,60);
length(1) = leng(1);
for i = 2:60
length(i) = length(i-1) + leng(i);
end
plot(length,area,'color',TEXT_COLOR);
% axes('xcolor',TEXT_COLOR,'ycolor',TEXT_COLOR)
% axis([0 20 0 12],'color',TEXT_COLOR);
ss=sprintf('Vocal tract area (Glottis -> Lips)');
% text(-3,1.155*max(area),ss,'color',TEXT_COLOR,'FontSize',10);
% text(-3,1.1*max(area),ss,'color',TEXT_COLOR,'FontSize',10);
title('Vocal tract area (Glottis -> Lips)','color',TEXT_COLOR,'FontSize',10);
% xlabel('Glottis -> Lips','color',TEXT_COLOR);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fmm=formants(area,leng);
% fmt=zeros(4,1);
fmt(1,1)=form_tar(1);
fmt(1,2)=form_tar(2);
fmt(1,3)=form_tar(3);
fmt(1,4)=form_tar(4);
subplot(1,3,3);
axis('off');
ss=sprintf(' Formant Target Model');
text(0,1,ss,'color',TEXT_COLOR,'FontSize',10);
ss=sprintf(' F1');
text(0,4/5,ss,'color',TEXT_COLOR,'FontSize',10);
ss=sprintf('%6.1f',fmt(1));
text(0.465,4/5,ss,'color',TEXT_COLOR,'FontSize',10);
ss=sprintf('%6.1f',fmm(1));
text(0.80,4/5,ss,'color',TEXT_COLOR,'FontSize',10);
ss=sprintf(' F2');
text(0,3/5,ss,'color',TEXT_COLOR,'FontSize',10);
ss=sprintf('%6.1f',fmt(2));
text(0.465,3/5,ss,'color',TEXT_COLOR,'FontSize',10);
ss=sprintf('%6.1f',fmm(2));
text(0.80,3/5,ss,'color',TEXT_COLOR,'FontSize',10);
ss=sprintf(' F3');
text(0,2/5,ss,'color',TEXT_COLOR,'FontSize',10);
ss=sprintf('%6.1f',fmt(3));
text(0.465,2/5,ss,'color',TEXT_COLOR,'FontSize',10);
ss=sprintf('%6.1f',fmm(3));
text(0.80,2/5,ss,'color',TEXT_COLOR,'FontSize',10);
ss=sprintf(' F4');
text(0,1/5,ss,'color',TEXT_COLOR,'FontSize',10);
ss=sprintf('%6.1f',fmt(4));
text(0.465,1/5,ss,'color',TEXT_COLOR,'FontSize',10);
ss=sprintf('%6.1f',fmm(4));
text(0.80,1/5,ss,'color',TEXT_COLOR,'FontSize',10);
e1 = abs((fmt(1) - fmm(1))/fmt(1));
e2 = abs((fmt(2) - fmm(2))/fmt(2));
e3 = abs((fmt(3) - fmm(3))/fmt(3));
e4 = abs((fmt(4) - fmm(4))/fmt(4));
% err_erg5 = 30.0*e1 + 40.0*e2 + 20.0*e3 + 10.0*e4;
err_erg5 = 30.0*e1 + 30.0*e2 + 25.0*e3 + 15.0*e4;
ss=sprintf('Current frame: %4.0f%', currf);
text(-1.4,0,ss,'color',TEXT_COLOR,'FontSize',10);
ss=sprintf('Total # frames: %4.0f%', totfno);
text(-0.6,0,ss,'color',TEXT_COLOR,'FontSize',10);
ss=sprintf('Error : %8.4f%%', err_erg5);
text(0.4,0,ss,'color',TEXT_COLOR,'FontSize',10);
drawnow
griddpy(art_set,wh,hk1,g1k,syn_win2_h);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?