TarsosDSP是一个用于音频处理的Java库,这个库包含多个声音频率探测算法,同样包含Goertzel DTMF算法、时间拉伸算法、滤波器等等。
这篇文章通过一个简单的例子在Android上使用TarsosDSP来探测声音的频率。
首先新建一个Android项目,并且在布局上安置一个TextView来显示音高信息。
在开始项目前,需要先申请录音权限。
现在,新建一个AudioDispatcher
对象,这个对象采用“默认麦克风”作为信息来源:
AudioDispatcher dispatcher =
AudioDispatcherFactory.fromDefaultMicrophone(22050,1024,0);
之后,新建一个PitchDetectionHandler
对象,以处理得到的音高:
PitchDetectionHandler pdh = new PitchDetectionHandler() {
@Override
public void handlePitch(PitchDetectionResult res, AudioEvent e){
final float pitchInHz = res.getPitch();
runOnUiThread(new Runnable() {
@Override
public void run() {
processPitch(pitchInHz);
}
});
}
};
在这个例子中,使用processPitch()
函数处理得到的音高,本例子中此函数只是将频率值显示出来,-1代表没有探测到频率。
现在,新建一个AudioProcessor
对象并将其添加到AudioDispatcher
对象中:
AudioProcessor pitchProcessor = new PitchProcessor(PitchProcessor.PitchEstimationAlgorithm.FFT_YIN, 22050, 1024, pdh);
dispatcher.addAudioProcessor(pitchProcessor);
最后,让AudioDispatcher
对象跑起来吧:
Thread audioThread = new Thread(dispatcher, "Audio Thread");
audioThread.start();
程序的效果图如下:

网友评论