频率分析 - Novocaine 和麦克风播放:如何禁用扬声器输出?

Posted

技术标签:

【中文标题】频率分析 - Novocaine 和麦克风播放:如何禁用扬声器输出?【英文标题】:Frequency analysis - Novocaine and playthrough by mic: how to disable speaker output? 【发布时间】:2015-04-11 13:54:34 【问题描述】:

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

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

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

【问题讨论】:

【参考方案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;
     

就是这样!

【讨论】:

以上是关于频率分析 - Novocaine 和麦克风播放:如何禁用扬声器输出?的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS (Novocaine) 上播放和停止声音样本

频域分析的目的是啥

ios 音频单元 kAUVoiceIOProperty_DuckNonVoiceAudio 错误 -10879

如何防止iphone麦克风录制播放的声音?

播放纯声音(一个频率)并识别频率 C++

在 AudioKit 中过滤音频