資源簡介
基音周期的matlab程序
內容:
1、增加語音幀的長度 L>2M(基音幀);
2、利用必要的前處理技術:前置濾波器或削波處理;
代碼片段和文件信息
%function?zhouqi=jiyinzhouqi(‘haha.wav‘)
%幀長和幀位移是重要的參數,位移是幀長的0~1/2
%zhouqi基音周期以毫秒為單位表示
[signalfs]=wavread(‘test2(228hz).wav‘);%用于得到聲音文件的數據和采樣率
shift=0.01;%每次移動10毫秒
shift=round(fs*shift);???%幀移
n1=fix(fs*0.01)+1;?????%分析起點0.01ms幀長30ms
n2=fix(fs*0.03)+1;
shift_count=fix((length(signal)-n1)/shift);
value?=zeros(1shift_count);?%存放每次移位后的幀的基音周期
for?ii=1:shift_count????????%分析次數
???if?n2 ?????data=signal(n1:n2);???%加窗,提取一幀數據
?????N=n2-n1+1;?????????%每一幀的長度
?????R=zeros(1N);????????????????
?????for?k=1:N-1??????????%求自相關序列
???????for?jj=1:N-k
?????????R(k)=R(k)+data(jj)*data(jj+k);
???????end
?????end
????value(ii)=find_maxn(R);?%調用基音周期分析函數,求最大值所對應的位置,即基音周期
?????n1=n1+shift;?????????%移動幀,計算下一幀的基音周期??
?????n2=n2+shift;
???end
end
%figure(3)
%plo
- 上一篇:基于遺傳算法的TSP問題求解
- 下一篇:MATLAB怎樣從新浪財經獲取股票交易數據
評論
共有 條評論