Кепстральный анализ для определения высоты звука

Я ищу, чтобы извлечь высоту звука из звукового сигнала.

Кто-то из IRC только что объяснил мне, как это достигается двойным БПФ. В частности:

  1. возьмите БПФ
  2. возьмите логарифм квадрата абсолютного значения (можно сделать с помощью таблицы поиска)
  3. возьмите другое БПФ
  4. возьмите абсолютное значение

Я пытаюсь это сделать с помощью vDSP

I не могу понять, как я раньше не сталкивался с этой техникой. Я много охотился и задавал вопросы; стоит несколько недель. Более того, я не могу понять, почему я не подумал об этом.

Я пытаюсь достичь этого с помощью библиотеки vDSP. Похоже, что у него есть функции для обработки всех этих задач.

Однако меня интересует точность конечного результата.

Я ранее использовал метод, который просматривает элементы разрешения по частоте одного БПФ на предмет локальные максимумы. Когда он встречает одного, он использует хитрый прием (изменение фазы с момента последнего БПФ) для более точного размещения фактического пика в ячейке.

Я беспокоюсь, что эта точность будет потеряна при использовании этого метода, который я представляю здесь.

Я предполагаю, что эту технику можно использовать после второго БПФ, чтобы точно получить фундаментальные значения. Но похоже, что информация на шаге 2 потеряна.

Поскольку это потенциально сложный процесс, может ли кто-нибудь с некоторым опытом просто просмотреть то, что я делаю, и проверить его на работоспособность?

Кроме того, я Я слышал, что есть альтернативная техника, включающая подгонку квадратичной матрицы к соседним интервалам. Это сопоставимая точность? Если так, я бы предпочел его, поскольку он не включает запоминание фаз бункера.

Итак, вопросы:

  • имеет ли этот подход смысл? Можно ли это улучшить?
  • I ' Меня немного беспокоит компонент "квадрат журнала"; похоже, для этого есть функция vDSP: vDSP_vdbcon. Однако нет никаких указаний на то, что он предварительно вычисляет таблицу журнала - я предполагаю, что это не так, поскольку функция FFT требует явного вызова функции предварительного вычисления и передачи в нее. А эта функция не работает.
  • Есть ли опасность улавливания гармоник?
  • есть ли какой-нибудь хитрый способ заставить vDSP вытягивать максимумы, сначала самые большие?
  • Может ли кто-нибудь указать мне на какие-нибудь исследования или литературу по этой технике?

  • главный вопрос: достаточно ли она точна? Можно ли повысить точность? Эксперт только что сказал мне, что НЕОБХОДИМА точность недостаточной. Это конец строки?

Pi

PS Я ТАК раздражаюсь, когда хочу создать теги, но не могу. : | Я предложил сопровождающим, чтобы ТАК отслеживали попытки тегов, но я уверен, что меня проигнорировали. Нам нужны теги для vDSP, фреймворка ускорения, кепстрального анализа

30
задан RBarryYoung 11 June 2018 в 21:39
поделиться