java - TarsosDSP 拍手检测

标签 java android tarsosdsp

我决定尝试为 android studio 开发并设计了一个应用程序,它可以监听拍手声然后执行某种 Action 。我的问题在于使用 TarsosDSP。

我想将 Listener 类作为 IntentService 运行,这样我就可以锁定我的手机,它仍然可以监听。但是,我在设置 AudioDispatcherTarsosDSPAudioInputStream 时遇到问题。

到目前为止,这是 onHandleIntent:

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 对象。 The documentation说这是一个接口(interface),但我不知道它是如何工作的。我是 Android Studio 和 java 的 super 新手,但有一年的 C++ 经验,因为它是我专业的一部分。

最佳答案

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

因此您可以使用此方法来初始化音频调度程序实例并向其添加任何可用的处理器。在你的情况下 PercussionOnsetDetector

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

关于java - TarsosDSP 拍手检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36971839/

相关文章:

android - 适用于 Android 的 TARSOS DSP : retrieving SpectralPeaks

java - 如何禁用 Spring Data REST 存储库的默认公开?

Android Studio,如何删除带有引用的文件夹?

android - 如何在android中创建多个状态栏通知

java - 如何从 TarsosDSP AudioDispatcher 获取 PCM 16 位数据?

audio - .wav文件中的TarsosDSP音高检测。结果频率总是小于一半

java - 如何使用 apache poi 开始循环中的特定单元格?

java - 在Android中的Canvas上绘制圆外的位图(箭头)

java - 检查二维数组是否包含此字段或者它是否未定义

java - 有效地制作图书馆项目的副本