資源簡(jiǎn)介
基音周期的matlab程序
內(nèi)容:
1、增加語音幀的長(zhǎng)度 L>2M(基音幀);
2、利用必要的前處理技術(shù):前置濾波器或削波處理;
代碼片段和文件信息
%function?zhouqi=jiyinzhouqi(‘haha.wav‘)
%幀長(zhǎng)和幀位移是重要的參數(shù),位移是幀長(zhǎng)的0~1/2
%zhouqi基音周期以毫秒為單位表示
[signalfs]=wavread(‘test2(228hz).wav‘);%用于得到聲音文件的數(shù)據(jù)和采樣率
shift=0.01;%每次移動(dòng)10毫秒
shift=round(fs*shift);???%幀移
n1=fix(fs*0.01)+1;?????%分析起點(diǎn)0.01ms幀長(zhǎng)30ms
n2=fix(fs*0.03)+1;
shift_count=fix((length(signal)-n1)/shift);
value?=zeros(1shift_count);?%存放每次移位后的幀的基音周期
for?ii=1:shift_count????????%分析次數(shù)
???if?n2 ?????data=signal(n1:n2);???%加窗,提取一幀數(shù)據(jù)
?????N=n2-n1+1;?????????%每一幀的長(zhǎng)度
?????R=zeros(1N);????????????????
?????for?k=1:N-1??????????%求自相關(guān)序列
???????for?jj=1:N-k
?????????R(k)=R(k)+data(jj)*data(jj+k);
???????end
?????end
????value(ii)=find_maxn(R);?%調(diào)用基音周期分析函數(shù),求最大值所對(duì)應(yīng)的位置,即基音周期
?????n1=n1+shift;?????????%移動(dòng)幀,計(jì)算下一幀的基音周期??
?????n2=n2+shift;
???end
end
%figure(3)
%plo
評(píng)論
共有 條評(píng)論