• 大小: 22KB
    文件类型: .zip
    金币: 2
    下载: 0 次
    发布日期: 2024-02-05
  • 语言: Matlab
  • 标签: MATLAB仿真  

资源简介

基于倒谱图判断浊音的基音周期MATLAB仿真 包含MATLAB代码和语音文件

资源截图

代码片段和文件信息

waveFile = ‘qinghua.wav ‘;
[y fs nbits] = wavread(waveFile);
time=(1:length(y))/fs;
frameSize=floor(40*fs/1000);     %帧长
startIndex=round(15000);         %起始序号
endIndex=startIndex+frameSize-1; %结束序号
frame = y(startIndex:endIndex);  %取出该帧
frameSize=length(frame);
frame2=frame.*hamming(length(frame));  % 加hamming窗
rwy = rceps(frame2);                   % 求倒谱
ylen=length(rwy);
cepstrum=rwy(1:ylen/2); %基音检测
LF=floor(fs/500);     %设置基音搜索的范围
HF=floor(fs/70);
cn=cepstrum(LF:HF);
[mx_cep ind]=max(cn); %设置门限,找到峰值位置
if mx_cep > 0.08 & ind >LF
    a= fs/(LF+ind);
else
    a=0;
end
figure(1);
plot(time y); title(waveFile); axis tight
ylim=get(gca ‘ylim‘);
line([time(startIndex) time(startIndex)] ylim ‘color‘ ‘r‘);
line([time(endIndex) time(endIndex)] ylim ‘color‘ ‘r‘);
title(‘语音波形‘);
figure(2);
subplot(211);
plot(frame);
title(‘取出帧的波形‘);
subplot(212);
plot(cepstrum);
title(‘倒谱图‘);
[xsr]=wavread(‘qinghua.wav‘);  
meen=mean(x);
x= x - meen;
updRate=floor(20*sr/1000);          %每20ms更新
fRate=floor(40*sr/1000);            %40ms一帧
n_samples=length(x);
nframes=floor(n_samples/updRate)-1; %帧数
k=1;
pitch=zeros(1nframes);
f0=zeros(1nframes);
LF=floor(sr/500);
HF=floor(sr/70);
m=1;
avgF0=0;
for t=1:nframes
        yin=x(k:k+fRate-1);
        cn1=rceps(yin);
        cn=cn1(LF:HF);
        [mx_cep ind]=max(cn);
        if mx_cep > 0.08 & ind >LF
           a= sr/(LF+ind);
        else
            a=0;
        end 
        f0(t)=a;
        if t>2 & nframes>3   %中值滤波对基音轨迹图进行平滑
           z=f0(t-2:t);
           md=median(z);
           pitch(t-2)=md;
           if md > 0
             avgF0=avgF0+md;
             m=m+1;
           end
        else
            if nframes<=3
            pitch(t)=a;
            avgF0=avgF0+a;
            m=m+1;
           end 
        end
     k=k+updRate;
end
figure(3)
subplot(211);
plot((1:length(x))/sr x);
ylabel(‘幅度‘);
xlabel(‘时间‘);
subplot(212);
xt=1:nframes;
xt=20*xt;
plot(xtpitch)
xlim([03]);
axis([xt(1) xt(nframes) 0 max(pitch)+50]);
ylabel(‘基音频率/HZ‘);
xlabel(‘时间‘);
 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-06-30 16:32  No.2\
     文件        2214  2014-06-30 16:37  No.2\pro_2.m
     文件       33120  2010-01-13 11:54  No.2\qinghua.wav

评论

共有 条评论