我正在尝试使用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线程上运行。