【基音频率】基音matlab基音频率计算【含Matlab源码 1384期】

一、获取代码方式

获取代码方式1: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

获取代码方式2: 通过紫极神光博客主页开通CSDN会员,凭支付凭证,私信博主,可获得此代码。

获取代码方式3: 完整代码已上传我的资源:【基音频率】基音matlab基音频率计算【含Matlab源码 1384期】

备注:开通CSDN会员,仅只能免费获得1份代码(有效期为开通日起,三天内有效); 订阅紫极神光博客付费专栏,可免费获得2份代码(有效期为订阅日起,三天内有效);

二、部分源代码

a=audioread('sound.wav');
L=length(a);                         %测定语音的长度
m=max(a);
for i=1:L
a(i)=a(i)/m;                        %数据归一化
end

%找到归一化以后数据的最大值和最小值
m=max(a);                          %找到最大的正值
n=min(a);                           %找到最小的负值
%为保证幅度值与横坐标轴对称,采用计算公式是n+(m-n)/2,合并为(m+n)/2

for i=1:L;                           %数据中心下移 保持和横坐标轴对称
a(i)=a(i)-ht;
end
figure(1);                           %画第一幅图
subplot(2,1,1);                       %第一个子图
plot(a,'k');
%axis([0,1711,-1,1]);                   %确定横、纵坐标的范围
title('中心削波前语音波形');           %图标题
xlabel('样点数');                     %横坐标
ylabel('幅度');                     %纵坐标


for k=1:L ;                          %中心削波
    if a(k)>=th0
        a(k)=a(k)-th0;
    elseif a(k)<=(-th0);
        a(k)=a(k)+th0;
    else
        a(k)=0;
    end      
end
m=max(a);                 
for i=1:L;                        %中心削波函数幅度的归一化

end
subplot(2,1,2);                    %第二个子图
plot(a,'k');
%axis([0,1711,-1,1]);               %确定横、纵坐标的范围
title('中心削波后语音波形');       %图标题
xlabel('样点数');                 %横坐标
ylabel('幅度');                 %纵坐标
%fclose(fid);                      %关闭文件


b = a;
b1 = a((0.8*16000):(0.8*16000+2*0.02*16000));
%b1 = a((0.05*16000):(0.05*16000+2*0.02*16000));


N = zc;
for k = 1:N
    sum = 0;
    for m = 1:N;
        sum = sum + abs(b1(m)-b1(m+k-1));
        %sum = sum + b1(m)*b1(m+k-1);
    end
    A(k) = sum;
end


figure;
subplot 211;
plot(b1(1:(0.02*16000)));
subplot 212;
plot(A);
复制代码

三、运行结果

在这里插入图片描述 在这里插入图片描述

四、matlab版本及参考文献

1 matlab版本 2014a

2 参考文献 [1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,2019. [2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,2019.

猜你喜欢

转载自juejin.im/post/7017801156580048932