首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TarsosDSP Clap检测

TarsosDSP Clap检测
EN

Stack Overflow用户
提问于 2016-05-01 20:55:12
回答 2查看 2.3K关注 0票数 3

我决定尝试为android工作室开发,并设计了一个应用程序,可以听一声掌声,然后执行某种动作。我的问题在于使用TarsosDSP。

我想将Listener类作为一个IntentService运行,这样我就可以锁定我的手机,并且它仍然在监听。然而,我在设置AudioDispatcherTarsosDSPAudioInputStream时遇到了困难。

到目前为止,onHandleIntent是这样的:

代码语言:javascript
复制
protected void onHandleIntent(Intent Intent) {
        AudioDispatcher mDispatcher = new AudioDispatcher(TarsosDSPAudioInputStream, SAMPLE_RATE, BUFFER_OVERLAP);
        double threshold = 8;
        double sensitivity = 20;

        PercussionOnsetDetector mPercussionDetector = new PercussionOnsetDetector(22050, 1024,
                new OnsetHandler() {

                    @Override
                    public void handleOnset(double time, double salience) {
                        Log.d(TAG, "Clap detected!");
                    }
                }, sensitivity, threshold);

        mDispatcher.addAudioProcessor(mPercussionDetector);
        new Thread(mDispatcher).start();
    }

我想更具体地说,我不确定该如何定义TarsosDSPAudioInputStream对象。文献资料说这是一个接口,但我不知道它是如何工作的。我是Android和java的超级新手,但我对C++有一年的经验,因为这是我专业的一部分。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-01 21:46:07

TarsosDSP已经为android提供了一个实现。他们有一个AudioDispatcherFactory类和fromDefaultMicrophone(.)方法。

因此,您可以使用此方法初始化音频dispatcher实例,并向其添加任何可用的处理器。在你的例子中,PercussionOnsetDetector

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

    double threshold = 8;
    double sensitivity = 20;

    PercussionOnsetDetector mPercussionDetector = new PercussionOnsetDetector(22050, 1024,
            new OnsetHandler() {

                @Override
                public void handleOnset(double time, double salience) {
                    Log.d(TAG, "Clap detected!");
                }
            }, sensitivity, threshold);

    mDispatcher.addAudioProcessor(mPercussionDetector);
    new Thread(mDispatcher,"Audio Dispatcher").start();
票数 3
EN

Stack Overflow用户

发布于 2022-06-17 21:29:37

接受的答案是正确的,但是它没有检测到

代码语言:javascript
复制
threshold = 8 

对我来说。下面的代码很好地检测到了clap:

代码语言:javascript
复制
 final AudioDispatcher fromDefaultMicrophone = AudioDispatcherFactory.fromDefaultMicrophone(22050, 1024, 0);
        double threshold = 6; // lower it a bit
        double sensitivity = 20;

        PercussionOnsetDetector mPercussionDetector = new PercussionOnsetDetector(22050, 1024,
                new OnsetHandler() {

                    @Override
                    public void handleOnset(double time, double salience) {
                        Log.d(TAG, "Clap detected!");
                        startAlarm();
                    }
                }, sensitivity, threshold);

        fromDefaultMicrophone.addAudioProcessor(mPercussionDetector);
        new Thread(fromDefaultMicrophone,"Audio Dispatcher").start();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36971839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档