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

程序的效果图如下:

TarsosDSP探测声音频率
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,625评论 25 709
  • 灰蒙的天 不停的雨 漫长的路 寻觅的心 园中静的澈 屋中闹的快 一个人 或享难得的静 或怕一时的孤 老树根旁 总有...
    乐四月阅读 235评论 1 1
  • 问:对WEB标准以及W3C的理解与认识? 答:标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率、使用外链css...
    LuckyJin阅读 3,075评论 0 11
  • 小丑 欢迎来到马戏团,请看精彩的表演。 把我会的全部在此处施展。一种可笑的表演。 你看不到面具下的我在哭泣, 你不...
    生来彷徨ii阅读 213评论 0 1
  • 喝了两天罗总的能量鸡汤,学习和培训还是需要的,状态有了明显了的变化,我认为状态的变化主要体现在自我管理和自我激励方...
    素10阅读 221评论 0 2

友情链接更多精彩内容