我有一个语音框架。当我计算 LP 残差时,我无法真正估计音高。我需要找到每一帧的音高周期。但是,当我使用频域和时域时,它们都不能正常工作。有人可以帮我吗?我需要它来查找基于音高跟踪的音高同步窗口
我的代码的结果就像
谢谢
MATLAB代码如下:
frame_length=0.03*fs;
frame=wave1((i-1)*frame_length+1:i*frame_length);
N=256;
Y1 = fft(frame,N);
f = 0 : fs / N : fs - 1 / N;
N1 = length(Y1);
%Y1(1) = [];
power1 = abs(Y1(1:floor(N1))).^2;
nyquist = 1/2;
freq1 = (1:floor(N1/2))/floor(N1/2)*nyquist;
[val loc]=max(power1);
pitch_priod = round(fs*(1./f(loc)));
或者
frame=wave1((i-1)*frame_length+1:i*frame_length);
min_pitch=floor(fs/600); % Pitch for men 50 to 300 Hz and for women 100 till 600 Hz
max_pitch=floor(fs/50);
y1=xcorr(frame);
y1=y1./(abs(max(y1)));
y2=y1(min_pitch:max_pitch);
[val loc]=max(y2);
pitch_priod=loc+min_pitch;