Невозможно получить правильное значение частоты на iphone

Я пытаюсь проанализировать алгоритмы определения частоты на платформе iOS. Поэтому я нашел несколько реализаций, использующих FFT и CoreAudio ( пример 1 и пример 2). Но в обоих случаях существует некоторая неточность в частоте:

  • (1) Для A4 (440 Гц) отображается 441,430664 Гц.
  • (1) Для C6 (1046,5 Гц) показано 1518,09082 Гц.
  • (2) Для A4 (440 Гц) отображается 440,72 Гц.
  • (2) Для C6 (1046,5 Гц) показано 1042,396606 Гц.

Почему это происходит и как избежать этой проблемы и более точно определить частоту?

1 ответ

Разрешение в частотной области обратно пропорционально количеству элементов FFT. Вам нужно либо:

  • увеличьте размер вашего БПФ, чтобы получить более точное разрешение
  • используйте величину смежных бинов, чтобы настроить оценку частоты
  • использовать альтернативный метод для оценки частоты, а не БПФ, например, параметрическая модель
Другие вопросы по тегам