資源簡介
matlab用自相關算法實現基音周期提取 。主要針對濁音部分的周期進行提取。從而可以得到基音頻率
代碼片段和文件信息
function?[periodperiod_freperiod_num]=pitch_period(yFsbits)
%filename?=‘zhuoyin.wav‘;
%[yFsbits]=wavread(filename);
%sound(w,fs,bits)播放w向量對應的聲音
lefty?=?y(:1);
wavesize=length(y);
%================fir濾波========================%
b?=[-0.0113????0.0242???-0.0222????0.0066????0.0201???-0.0274????0.0052????0.0346???-0.0475????0.0056...
0.0729???-0.1106????0.0059????0.5481????0.5481????0.0059???-0.1106????0.0729????0.0056???-0.0475...
0.0346????0.0052???-0.0274????0.0201????0.0066???-0.0222????0.0242???-0.0113];
[hw]=?freqz(b1882);
%?waveout1?=?filter(b1lefty);
waveoutYuJiaZhong=?filter([1??-0.9375]1lefty);
waveoutspeech?=?filter(b1lefty);
%====================基音周期濾波=======================%
%2Khz低通hamming
b?=[?0.0054????0.0074????0.0130????0.0221????0.0341????0.0481...
????0.0628????0.0764????0.0874????0.0947????0.0972????0.0947...
???0.0874????0.0764????0.0628????0.0481????0.0341????0.0221...
????0.0130????0.0074????0.0054];
waveoutpitch?=?filter(b1lefty);
%====================最大幅度=======================%
N=round(3*Fs/100)
between=floor(N/2);
frameNumber?=floor(wavesize/between)-1;
Tlefty=waveoutpitch?;
%?Axiaobo=zeros(wavesize1);
%?整個時域上的基音周期軌跡
pitch?=zeros(1frameNumber);
%?一幀中的自相關函數
R1=zeros(N1);
%顯示一幀自相關
for?ii=1:frameNumber
????????%
????????startPositon=(between)*(ii-1)+1;
????%??????startPositon=(between)*(ii-1)+1;?
??????
- 上一篇:用matlab研究光柵衍射
- 下一篇:matlab自相關除噪
評論
共有 條評論