⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jiyinjiance20070407.m

📁 1. 对给定语料估计其基音周期。 要求用MATLAB语言实现有关基音检测算法
💻 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 + -