检测麦克风中的打击并做一些事情

Posted

技术标签:

【中文标题】检测麦克风中的打击并做一些事情【英文标题】:Detect blow in Mic and do something 【发布时间】:2010-04-11 19:07:33 【问题描述】:

我找到了这个tutorial,它很好,但对我不起作用!

这里是代码:

- (void)listenForBlow:(NSTimer *)timer 
    [recorder updateMeters];

    const double ALPHA = 0.05;
    double peakPowerForChannel = pow(10, (0.05 * [recorder peakPowerForChannel:0]));
    lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults;

    if (lowPassResults > 0.95)
        NSLog(@"Mic blow detected");
 //change the background color e.g !

在控制台中显示这样的 nslog 结果(没有任何保龄球!):

2010-04-11 23:32:27.935 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:27.965 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:27.995 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.026 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.055 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.086 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.115 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.145 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.175 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.205 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.236 MicBlow[2358:207] Mic blow detected

我改变了这个值:

 if (lowPassResults < 0.95)

if (lowPassResults > 0.95)

所以它似乎工作!但不会改变任何东西,如果我再次输入背景更改代码,我的代码更改背景但没有任何保龄球! 有什么问题?

【问题讨论】:

“再次,如果我将背景更改代码放入,我的代码更改背景但没有任何保龄球”这没有任何意义。 它在模拟器中工作但在手机中不工作??有什么设置吗?? 【参考方案1】:

我也在使用它,它对我有用。您只需使用该值即可将其与lowPassResults 进行比较。这是我的代码:

- (void)levelTimerCallback:(NSTimer *)timer [记录仪更新仪表]; 常量双 ALPHA = 0.05; double peakPowerForChannel = pow(10, (0.05 * [recorder peakPowerForChannel:0])); lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults; //NSLog(@"%f", lowPassResults); 如果(lowPassResults > 0.55) NSLog(@"检测到麦克风打击");

【讨论】:

不,它不工作@ender。请你指导我。同样的问题来了。不吹就改变背景颜色

以上是关于检测麦克风中的打击并做一些事情的主要内容,如果未能解决你的问题,请参考以下文章

如何实时收听麦克风输入并进行分析?

Android 获取 AudioRecord 麦克风音量大小并做选择性发送

检测麦克风是不是打开

使用 node.js 检测麦克风的音频频率

如何在.net中检测麦克风的声音

使用 Python 在 Windows 上检测系统声音