Я недавно задавал этот вопрос :
Я ищу алгоритм для определения высоты тона. один из ответов предполагал, что я использую начальное БПФ, чтобы получить базовую частотную характеристику, выяснить, какие частоты озвучиваются, и проследить за ней с помощью полосового фильтра в каждой интересующей области:
Немного продвинутый алгоритм может сделать что-то вроде этого:
- Приблизительно определить частоту основного тона (можно сделать с помощью DFT).
- Полосовой сигнал для фильтрации частоты основного тона.
- Подсчет количества выборок между двумя пиками в отфильтрованных сигналах.
Теперь я могу сделать первый шаг, хорошо (я кодирую для iOS, и у Apple есть платформа (ускоренная среда) для выполнения FFT и т. Д.
Я начал здесь здесь : но я вижу проблему: БПФ, который будет дифференцировать все возможные ноты, которые можно петь, потребует много сэмплов, и я не хочу выполнить слишком много ненужных вычислений, так как я нацеливаюсь на мобильное устройство.
Так что я пытаюсь обдумать этот ответ выше, но я не понимаю, как я могу применить концепцию полосового фильтра к коду.
Может кто-нибудь помочь?