Как получить частоту с помощью БПФ? Какая правильная процедура и коды?
Определение высоты звука с помощью БПФ для трубы
Ответы (5)
Обнаружение высоты звука обычно включает измерение интервала между гармониками в спектре мощности. Спектр мощности получается из БПФ путем взятия величины первых N / 2 бинов (sqrt (re ^ 2 + im ^ 2)). Однако существуют более сложные методы определения высоты тона, такие как кепстральный анализ, в котором мы берем БПФ журнала спектра мощности, чтобы определить периодичность спектральных пиков.
Стабильная нота музыкального инструмента - это периодический сигнал, и наш друг Фурье (вторая буква «F» в «БПФ») говорит нам, что любой периодический сигнал может быть построен путем добавления набора синусоидальных волн (обычно с разными амплитудами и частотами). , и фазы). Основная - это самая низкая частотная составляющая, соответствующая высоте тона; остальные компоненты являются обертонами и кратны основной частоте. Относительное сочетание основного тона и обертонов определяет тембр или характер инструмента. Кларнет и труба, играющие в унисон, звучат «гармонично», потому что имеют одну и ту же основную частоту, однако их можно идентифицировать индивидуально из-за разного тембра (смесь обертонов).
Для вашей проблемы вы можете сэмплировать трубу в течение временного окна, вычислить БПФ (которое разлагает последовательность выборок на составляющие ее цифровые частоты), а затем утверждать, что высота тона - это частота ячейки с наибольшей величиной. При желании это можно было бы тривиально квантовать до ближайшего музыкального полушага, например ми-бемоль. (Ищите БПФ в Википедии, если вы не понимаете взаимосвязь между частотой дискретизации и результирующими элементами разрешения по частоте, или если вы не понимаете ущерб от слишком низкой частоты дискретизации.) Это, вероятно, удовлетворит ваши потребности, потому что фундаментальные компонент обычно имеет большую энергию, чем любой другой компонент. Чем длиннее окно, тем выше точность высоты тона, поскольку центры бинов станут ближе друг к другу по частоте. Однако, если окно настолько длинное, что труба заметно меняет свою высоту в течение всего окна, тогда эффективность техники значительно снизится.
DansTuner - мой проект с открытым исходным кодом для решения этой проблемы. На самом деле я трубач. Он имеет код определения высоты тона, взятый из Audacity.
ia добавил этих org.apache.commons. math.transform.FastFourierTransforme в проект, и он отлично работает
Здесь представлена короткая статья в блоге о непараметрических методах оценки PSD (спектральная плотность мощности) вместе с некоторыми более подробными ссылками. Это может помочь вам начать оценку PSD, а затем найти шаг.
trumpet
.. - person skaffman   schedule 11.02.2010