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