1

我正在使用 Novocaine 进行频率检测 - 它工作正常。我非常欣赏 Novocaine 框架,因为它性能卓越且易于使用。

无论如何,只有一个问题:从 iPhone/iPad 麦克风捕获声音,我想禁用扬声器输出以防止声反馈(噪音)。我怎样才能做到这一点?到目前为止,我一直在徒劳地尝试更改音频输出路线。任何想法都受到高度赞赏!

当然,我发现独立于 Novocaine 框架,我可以禁用硬件声音 - 但是当我这样做时,用户会得到一种可能会让用户烦恼的工具提示(“声音禁用”)。我更喜欢在用户点击“捕获声音”按钮时暂时禁用声音而不注意它。

4

1 回答 1

1

解决方案很简单,我几乎是偶然发现的:

在输出块中

[audioManager setOutputBlock:^(float *data, UInt32 numFrames, UInt32 numChannels)
 { ... }

我只是将输出数据设置为零 - 在分析(使用 FFT 或卷积或互相关或其他)数据之后:

// silence the sound in order to disable sound feedback
     for(int i=0; i<numFrames; i++) {
         data[i] = 0.0;
     }

而已!

于 2015-04-12T16:01:21.897 回答