📄 jiyinjiance20070407.m
字号:
clear,clc
% 1. 对给定语料估计其基音周期。
% 要求用MATLAB或C语言实现有关基音检测算法,并给出检测结果。
%
% 2. 实验语料:MaoYiSheng.raw
% 发音:“茅以升”;时长0.9s;采样率:8kHz;量化精度为16bits/sample;数据格式 LSB,MSB
% 分析帧长:20ms(160样点)
% 总帧数:45 45*160=7200
% 3. 两周内将算法描述、源程序、结果及其分析通过E-MAIL发送到 wangjing@bit.edu.cn
N=160;
fid = fopen('MaoYiSheng.raw', 'r');
% Y1= fread(fid);
Y = fread(fid,'short');
figure(1),
% subplot(4,1,1),
plot(Y);
title('原始谱');
xlabel('采样点个数');
grid;
L=length(Y);
LL=length(Y)/N;
% energy
Em=zeros(1,(LL-1)*160);
for ii=1:(LL-1)*160
temp=Y(ii:ii+160-1);
temp=temp.*hamming(160);
Em(ii)=sum(temp.*temp);
end
figure(2),
% subplot(4,1,2)
jj=[1:(LL-1)*160];
plot(jj,Em);
title('短时能量');
xlabel('采样点个数');
ylabel('E');
grid,
length(Y);
for j=1:89
% j=50;
y=Y(((j-1)*80+1):(j+1)*80);
x=y.*boxcar(160);
% R=zeros(1,160);
% for k=1:160
% for n=1:160-k
% R(k)=R(k)+x(n)*x(n+k);
% end
% end
r=zeros(1,160);
for k=1:160
for n=1:160-k
r(k)=r(k)+x(n)*x(n+k);
end
end
% figure(3),
% subplot(4,1,3);
% j=1:160;
% plot((j-1)*80:(j+1)*80-1,R);
% title('浊音自相关');
% xlabel('滞后点个数k');
% ylabel('相关R');
% grid;
r=r(21:160);
[Z,I]=max(r);
R(j)=I+21;
end
figure(3),
% subplot(4,1,3);
plot(1:80:89*80,R);
title('周期图');
xlabel('语音采样点');
ylabel('周期长度');
grid;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -