美文网首页我爱编程程序员
在Android上使用TarsosDSP探测声音频率

在Android上使用TarsosDSP探测声音频率

作者: 学习编程王同学 | 来源:发表于2018-04-28 09:07 被阅读208次

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();

程序的效果图如下:

TarsosDSP探测声音频率

相关文章

网友评论

    本文标题:在Android上使用TarsosDSP探测声音频率

    本文链接:https://www.haomeiwen.com/subject/ikbwlftx.html