Я хотел бы использовать STFT для анализа нескольких точек. Я понимаю, что обнаружение партиалов, существующих в сигнале, - это только начало. Тем не менее у меня есть проблемы с этим.
Допустим, у меня есть сигнал с частотой «CD» 44100Hz
. С окном 1024
сэмплов я получаю разрешение бина 22500Hz/512=43Hz
. Этого достаточно только, чтобы различить высокие фортепианные ноты, такие как:
C5 = 523.251Hz
и C#5 = 554.365
.
Раньше я думал, что 1024
это довольно большое окно. Но, может быть, это не так, и обычно большие окна используются для обнаружения частичек?
Можно ли увеличить разрешение по частоте каким-либо другим способом, кроме увеличения размера окна, что ухудшает временное разрешение? Я думал о двух методах:
Method1:
- Разделите сигнал на полосы частот с помощью полосовых фильтров (например,
0-11.25Hz
и11.25-22.5Hz
). - Уменьшите верхние полосы частот, чтобы исходные высокие частоты теперь были низкими частотами (сделайте это для второй полосы
11.25-22.5Hz -> 0Hz-22.5Hz
) - не уверен, что это возможно. - Конкретные результирующие наборы с установленными метками.
Method2:
- Используйте серию фильтров нижних частот с возрастающим пределом.
- Выполните БПФ на растущих частотных диапазонах.
- Для каждой частоты используйте наилучшее возможное разрешение (ячейки из первого FFT, в который была включена эта частота).
- Это приведет к тому, что низкие частоты получат лучшее разрешение, но я думаю, что это нормально, потому что для более высоких нот разность частот больше.
Буду благодарен любым замечаниям по этому вопросу.
Я также читал здесь: Как размер окна, частота дискретизации влияют на оценку шага БПФ? о методике улучшения результатов отбора пиков. Думаю попробую его использовать.