我决定尝试为 android studio 开发并设计了一个应用程序,它可以监听拍手声然后执行某种 Action 。我的问题在于使用 TarsosDSP。
我想将 Listener
类作为 IntentService
运行,这样我就可以锁定我的手机,它仍然可以监听。但是,我在设置 AudioDispatcher
和 TarsosDSPAudioInputStream
时遇到问题。
到目前为止,这是 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/