matlab - 基于自相关算法的语音信号音高估计

标签 matlab audio signal-processing pitch pitch-detection

我想使用自相关算法检测语音信号的基音频率。我有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/

相关文章:

matlab - 根据颜色分割图像中的像素 (Matlab)

带有 GrADS 脚本的 Matlab fprintf 函数

iOS:在特定时间播放音频文件并在特定持续时间后停止

android - NotificationCompat setSound(声音,STREAM_ALARM)不工作

html - HTML5音频控件在Android上不起作用

python - 将 1D 函数扩展到 3 个维度以进行数据窗口

matlab - 通过曲线旋转生成 3D 绘图

matlab - 在 Matlab 中读取和查看大 tiff

.net - 消除输入线路上的输出声音

python - scipy.signal.find_peaks_cwt 返回非峰值的附加点