前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Android上使用TarsosDSP探测声音频率

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

作者头像
mwangblog
发布2018-07-04 11:27:19
2.1K0
发布2018-07-04 11:27:19
举报
文章被收录于专栏:mwangblog

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

TarsosDSP是一个用于音频处理的Java库,这个库包含多个声音频率探测算法,同样包含Goertzel DTMF算法、时间拉伸算法、滤波器等等。

这篇文章通过一个简单的例子在Android上使用TarsosDSP来探测声音的频率。

首先新建一个Android项目,并且在布局上安置一个TextView来显示音高信息。

在开始项目前,需要先申请录音权限。

现在,新建一个AudioDispatcher对象,这个对象采用“默认麦克风”作为信息来源:

代码语言:javascript
复制
AudioDispatcher dispatcher =
                AudioDispatcherFactory.fromDefaultMicrophone(22050,1024,0);

之后,新建一个PitchDetectionHandler对象,以处理得到的音高:

代码语言:javascript
复制
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对象中:

代码语言:javascript
复制
AudioProcessor pitchProcessor = new PitchProcessor(PitchProcessor.PitchEstimationAlgorithm.FFT_YIN, 22050, 1024, pdh);dispatcher.addAudioProcessor(pitchProcessor);

最后,让AudioDispatcher对象跑起来吧:

代码语言:javascript
复制
Thread audioThread = new Thread(dispatcher, "Audio Thread");audioThread.start();

程序的效果图如下:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 mwangblog 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在Android上使用TarsosDSP探测声音频率
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档