我想使用自相关算法检测语音信号的基音频率。我有MATLAB代码,但结果错误。如果您能解决我的代码中的错误,将不胜感激。
[y,Fs]=audioread('Sample1.wav');
y=y(:,1);
auto_corr_y=xcorr(y);
subplot(2,1,1);plot(y)
subplot(2,1,2);plot(auto_corr_y)
[pks,locs] = findpeaks(auto_corr_y);
[mm,peak1_ind]=max(pks);
period=locs(peak1_ind+1)-locs(peak1_ind);
pitch_Hz=Fs/period
感谢您在此问题上的帮助。
最佳答案
似乎您的代码不起作用,因为Sample1.wav必须仅包含发声记录的短准周期部分。还要注意,音调频率不是随时间变化的常数,因此您的估算必须考虑到这一点。
如果只想估计频率,则可以从语音填充系统中采用RAPT方法(请参阅Windows的sfs_rapt.m包装器)。
关于matlab - 基于自相关算法的语音信号音高估计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48108494/