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

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

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

程序的效果图如下:

原文发布于微信公众号 - mwangblog(mwangblog)

原文发表时间:2018-04-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Flutter入门到实战

最全的BAT大厂面试题整理

版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/c70989bd5f29

22320
来自专栏Phoenix的Android之旅

Dagger2 Android应用:@Component和@Module

这部分会介绍一下DI的主要概念,包括Component,Module,但不涉及和Android有关的具体代码。

15120
来自专栏芋道源码1024

重磅:JDK 11 正式发布!东半球第二全特性解读!

千呼万唤,JDK11于2018-09-25正式发布!你是不是和笔者一样还在使用JDK8呢?甚至有些开发者还在使用JDK7!没关系,让我们先一睹JDK11的风采。

15320
来自专栏机器学习实践二三事

Numpy使用1

Numpy介绍 NumPy is the fundamental package for scientific computing with Python. I...

21690
来自专栏王磊的博客

Sql Server常用时间段查询汇总

前言 本文对应Sql Server 中常用的时间查询的进行一些汇总,例如查询当天的、本周的、本月的、本季度的,某个时间段内的时间。 实例 实例(我的)表名:my...

44960
来自专栏上善若水

L003Linux和androidNDK之linux好玩的命令

你可能了解 ‘ls’ 命令,并经常使用它来查看文件夹的内容。但是,有些时候你可能会拼写成 ‘sl’ ,这时我们应该如何获得一些乐趣而不是看见“command n...

13830
来自专栏Java架构

最全的BAT大型互联网公司面试题整理

最近有很多网友都在求大厂面试题。正好我之前电脑里面有这方面的整理,于是就发上来分享给大家。

1.8K40
来自专栏智能大石头

最终版 Reflector v1.0 (+简单的反流程混淆)

(0415增加简单的反流程混淆功能,满足日常使用需要,不再更新,转向ILSpy,见12点后面) Reflector过期?这可不行!自己动手吧! 看雪上拿到Ref...

20950
来自专栏人人都是极客

GPU内存分级

在NVIDIA的GPU中,内存(GPU的内存)被分为了全局内存(Global memory)、本地内存(Local memory)、共享内存(Shared me...

1.2K40
来自专栏用户2442861的专栏

腾讯2014校园招聘技术类笔试题详解

http://blog.csdn.net/silangquan/article/details/19977839

36310

扫码关注云+社区

领取腾讯云代金券