【发布时间】:2018-11-09 09:23:46
【问题描述】:
我已经实现了Yin Algorithm 来检测音高。
我的问题是差分函数的性能(方程式 6)
差分函数:
static std::vector<double> difference(const std::vector<double> &data)
{
int index, tau;
double delta;
int yin_buffer_size = signed(data.size() / 2);
std::vector<double> yin_buffer(yin_buffer_size, 0.0);
for (tau = 1; tau < yin_buffer_size; tau++) {
for (index = 0; index < yin_buffer_size; index++) {
delta = data[index] - data[index + tau];
yin_buffer[tau] += delta * delta;
}
}
return yin_buffer;
}
其中data 包含特定窗口大小的音频数据。
如您所见,随着数据大小(窗口大小)的增加,此函数会变慢。
如果有更快的差分函数的替代方法,请告诉我。我想朝着正确的方向前进。
我是信号处理的新手,非常感谢您的帮助。
【问题讨论】:
-
可能是信号处理的问题。
标签: c++ algorithm audio signal-processing audio-processing