自相关函数法基音检测matlab程序
AudioFilename = 'shiyan1.wav';
FrameShift = 0.012; %(s)
FrameLength = 0.024; %(s)
[ Signal, fs ] = wavread( AudioFilename );
%signal=signal+0.5*randn(size(signal));
FrameShift = round( fs * FrameShift ); %帧移
FrameLength = round( fs * FrameLength ); %帧长
FrameHead = 1; %
FrameEnd = FrameLength; %
FrameNum = floor( ( ( length( Signal ) - FrameEnd ) ) ./ FrameShift ) + 1;
for ii = 1 : ( FrameNum - 2 )%分析次数
DataTemp = Signal( FrameHead : FrameEnd + FrameLength );
d1 = zeros( 1, FrameLength ); %
% DataTemp = DataTemp .* hamming(N);
for k = 1 : FrameShift
for jj = 1 : FrameLength
d1( k ) = d1( k ) + abs( DataTemp( jj ) - DataTemp( jj + k ) );
end
end
d1 = d1 / N;
% value(ii)=find_minn(R);
%
FrameHead = FrameHead + FrameShift; %
FrameEnd = FrameEnd + FrameShift;
end
figure( 1 )
plot( d1 );
grid;