Я реализовал Алгоритм Инь для определения высоты звука.
Моя проблема связана с производительностью разностной функции (уравнение 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
содержит аудиоданные для определенного размера окна.
Как видите, эта функция замедляется при увеличении данныхразмер (размер окна).
Пожалуйста, дайте мне знать, если есть альтернатива разностной функции, которая быстрее.Я хочу двигаться в правильном направлении.
Я новичок в обработке сигналов, Ваша помощь очень важна.