Частота обнаружения ниже 40 Гц с использованием TarsosDSP java android - PullRequest
1 голос
/ 03 февраля 2020

Я создаю мобильное приложение Android, где я пытаюсь определить высоту тона, используя TarsosDSP . Который работал отлично, только если он больше, чем 43 Гц. Но у меня есть требование, чтобы оно работало с частотой 40 Гц. Когда я играю звук, он даже не дает результатов ниже 43. Это , где вы можете создать мелодию онлайн с нужной частотой. вот код.

void connectsAudioDispatchertoMicrophone() {

  AudioDispatcher dispatcher = AudioDispatcherFactory.fromDefaultMicrophone(22050, 1024, 0);

  PitchDetectionHandler pdh = new PitchDetectionHandler() {
     @Override
     public void handlePitch(final PitchDetectionResult result, AudioEvent e) {
        final float pitchInHz = result.getPitch();
        runOnUiThread(new Runnable() {
           @Override 
           public void run() {
              if (pitchInHz > 1)  
                 Log.d(TAG, "pitchInHz: " + pitchInHz);

           }
        });
     }
  };
  AudioProcessor p = new PitchProcessor(PitchProcessor.PitchEstimationAlgorithm.FFT_YIN,
          22050,
          1024,
          pdh);
  dispatcher.addAudioProcessor(p);

  thread = new Thread(dispatcher, "Audio Dispatcher");
  thread.start();
}

1 Ответ

2 голосов
/ 04 февраля 2020

Это звучит как ограничение БПФ, которое Тарсос использует внутри. БПФ разбивают обнаруженные звуки на одну из нескольких частотных «корзин». Центральная частота каждого бина является функцией:

  • Частота дискретизации и:
  • Ширина (в выборках) БПФ.

Для частоты дискретизации 22050 Гц с БПФ шириной 1024:

Fmin = 22050/1024 * 2 = 43,066 Гц

(Fmin - центральная частота второго наименьшего «мусорного ведра». Очевидно, что это самая низкая частота, которую алгоритм может обнаружить.)

Чтобы понизить Fmin, A.) уменьшить частоту дискретизации, или B.) увеличить ширину БПФ:

Fmin = 16000/1024 * 2 = 31,25 Гц

Fmin = 22050/2048 * 2 = 21,53 Гц

Обязательно придерживайтесь до степеней 2 для ширины БПФ и утвержденных действительных настроек для частоты дискретизации.

...