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

📄 manvoice.m

📁 语音信号分析与处理及其MATLAB实现,语音信号处理
💻 M
字号:
clear;
[x,fs,NBITS]=wavread('voice.wav');
x=resample(x,8000,fs);figure(1);plot(x);title('重抽样后的信号');grid;
%figure(1);plot(x);grid;
figure(2);
specgram(x,512,8000,hamming(256),250);    %窄带语谱图
title('窄带语谱图');
figure(3);
specgram(x,128,8000,hamming(60),50);    %宽带语谱图
title('宽带语谱图');
frmlen=60;          %帧长
frmn=ceil((length(x)/frmlen));       %帧数
m=zeros(1,800);  %可能有冗余
x=cat(1,x,m');    %在x后补零以构成整数帧
y=zeros(1,2*frmn);  %向量y存每帧的操作结果
count=zeros(1,2*frmn);  %向量count存每帧的过零率
for i=1:2*frmn                      %帧长为60点,帧移为30点
    sqsum=0;
     for j=1:60       
          sqsum=sqsum+x(j+30*(i-1))^2;  %短时能量
         %sqsum=sqsum+abs(x(j+30*(i-1))); %短时幅度
         if (x(j+30*(i-1))*x(j+1+30*(i-1)))<0   %过零率
           count(i)=count(i)+1;
        end
     end
       y(i)=sqsum;    
end;
aaa=y.*count;   %短时能量除以短时过零率
figure(4);plot(y);title('短时能量');grid;
figure(5);plot(count);title('短时过零率');grid;
figure(6);plot(aaa);title('两种算法的结合');grid;
%以下为基音检测
for i=1:length(x)            %三电平削波
    if x(i)<-.2           %此门限值应该根据各人语音进行调整
        x(i)=-1;
    elseif x(i)>.2
        x(i)=1;
    else x(i)=0;
    end
end
for i=5000:5499              %窗口上下限应该根据各人语音进行调整,选取浊音周期性好的一段
    y(i-4999)=x(i);
end
for i=5000:5749
    yy(i-4999)=x(i);
end
sfrsum=zeros(1,251);
for k=0:250
    for m=1:500
        sfrsum(k+1)=sfrsum(k+1)+y(m)*yy(m+k);             %修正的短时自相关
    end
end
figure(7);plot(sfrsum);title('基音周期的检测自相关函数值');grid;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -