音高估计通过语音信号自相关算法

24日视图(30天)
你好,
我想检测语音信号的基音频率使用自相关算法。我有一个MATLAB代码但是结果是错误的。我将感激如果你能在我的代码解决这个错误。
(y, Fs) = audioread (“Sample1.wav”);
y = y (: 1);
auto_corr_y = xcorr (y);
次要情节(2,1,1),情节(y)
次要情节(2,1,2),图(auto_corr_y)
(pks, loc) = findpeaks (auto_corr_y);
[毫米,peak1_ind] = max (pks);
时间= loc (peak1_ind + 1) loc (peak1_ind);
pitch_Hz = Fs /期
谢谢你的帮助在这个问题上。

答案(1)

马修•诺伊
马修•诺伊 2022年5月10日
你好
这是一个修改后的版本的代码。在样本自相关输出将主峰= M (x轴)和周围是对称的这个值。首先修改是保持autocor下半年向量,从样品开始= M;我们正在寻找下一个峰的间距值
(y, Fs) = audioread (“Sample1.wav”);
y = y (: 1);
auto_corr_y = xcorr (y);
M =长度(y);
% C = XCORR (A),是一个长度M向量,返回长度2 * M - 1
%自相关序列c第0延迟输出的相关性
%是中间的序列,在元素。
auto_corr_y = auto_corr_y (M: M + 100);%只保留下半年(从样品开始= M最大峰值输出)并显示+ 100个样本
auto_corr_x = 1:元素个数(auto_corr_y);
(pks, loc) = findpeaks (auto_corr_y);
次要情节(2,1,1),情节(y)
次要情节(2,1,2),图(auto_corr_x、auto_corr_y loc,,“博士”)
pitch_Hz = Fs / loc (1)
2的评论
马修•诺伊
马修•诺伊 2022年5月23日
你好
元素个数 介绍了最近
你可以替换它 长度 对年长的matlab版本。
(y, Fs) = audioread (“Sample1.wav”);
y = y (: 1);
auto_corr_y = xcorr (y);
M =长度(y);
% C = XCORR (A),是一个长度M向量,返回长度2 * M - 1
%自相关序列c第0延迟输出的相关性
%是中间的序列,在元素。
auto_corr_y = auto_corr_y (M: M + 100);%只保留下半年(从样品开始= M最大峰值输出)并显示+ 100个样本
auto_corr_x = 1:长度(auto_corr_y);
(pks, loc) = findpeaks (auto_corr_y);
次要情节(2,1,1),情节(y)
次要情节(2,1,2),图(auto_corr_x、auto_corr_y loc,,“博士”)
pitch_Hz = Fs / loc (1)

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!