如何使用TarsosDSP提高音高检测的速度?

时间:2019-06-06 15:44:31

标签: java android performance

我正在尝试使用TarsosDSP的音频分配器来获取麦克风输入的音高,它可以工作,但是直到将其输入麦克风后大约半秒钟才发现音高。我可以做些什么来尝试加快速度吗?我不需要输入高质量的音频或将其写入任何地方,只需要音调即可。

我已经尝试完全按照TarsosDSP示例代码中所示使用音频分配器,并且还尝试使用AudioRecord和TarsosDSP的Yin类来手动检测音高。两者都有相当大的延迟。

方法1:

String timeStamp = new SimpleDateFormat("M/d/yyyy&HH:mm").format(Calendar.getInstance().getTime());

方法2:

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

        PitchDetectionHandler pdh = new PitchDetectionHandler() {
            @Override
            public void handlePitch(PitchDetectionResult result, AudioEvent e) {
                final float pitchInHz = result.getPitch();

                if (pitchInHz > 0) {

                    System.out.println(pitchInHz);

                }

            }

        };

        AudioProcessor p = new PitchProcessor(PitchProcessor.PitchEstimationAlgorithm.FFT_YIN, 22050, 1024, pdh);
        dispatcher.addAudioProcessor(p);
        new Thread(dispatcher, "Audio Dispatcher").start()

我尝试过更改一些数字,但从未成功使它更快地显示音调。

这两个都不在UI线程上运行。

0 个答案:

没有答案