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

Posted

技术标签:

【中文标题】如何实时收听麦克风输入并进行分析?【英文标题】:How to listen to mic input and analyse in real time? 【发布时间】:2010-11-21 17:06:14 【问题描述】:

您好,很遗憾,我无法识别 iPhone 上的音频。我接近的最好的是 AVAudioRecorder/Player 类,我知道它们不适合音频处理。

所以我想知道是否有人能够向我解释如何以 1024 个样本块的形式“收听”iPhone 的麦克风输入,分析样本并做一些事情。就这样继续下去,直到我的应用程序终止或告诉它停止。我不想保存任何数据,我只想实时分析数据并实时处理数据。

我试图尝试理解苹果的“aurioTouch”示例,但它太复杂了,我无法理解。

那么有人可以向我解释我应该怎么做吗?

【问题讨论】:

【参考方案1】:

如果你想实时分析音频输入,它并没有比苹果的aurioTouch ios sample app with source code(还有a mirror site)简单很多。你可以在谷歌上搜索更多关于使用 Audio Unit RemoteIO API 进行录音的信息,但你仍然需要弄清楚实时分析 DSP 部分。

Audio Queue API 稍微简单一点,用于从麦克风获取原始 PCM 音频数据的输入缓冲区,但并不简单,而且延迟更高。

稍后补充:这里还有一个aurioTouch转换为Swift的版本:https://github.com/ooper-shlab/aurioTouch2.0-Swift

【讨论】:

确实比较简单,推荐你使用Novocaine和NVDSP(我是后者的作者) 此答案中的链接现在已损坏。 @bartolsthoorn 你会更新现代 iOS 和 OSX 的代码吗???它看起来像一个了不起的项目,但我不能在 iOS 9 上使用它:( @WillBrickner 这些天我并不是很喜欢 iOS,但是具体的不兼容是什么? NVDSP 是一个非常小的项目,所以我想更新工作应该不会太多,但我现在时间很紧。 我错了,我说的是诺卡因。因此,通过扩展,您的库可能也不再起作用了。【参考方案2】:

如果您想做任何实时音频处理,AVAudioPlayer/Recorder 类不会带您到那里。音频工具箱和音频单元框架是要走的路。查看here 获取苹果的音频编程指南,看看哪个框架适合您的需要。相信我,这些低级的东西并不容易,而且文档也很差。 CocoaDev 有一些tutorials,您可以在其中找到示例代码。此外,我最近发现了一个音频 DSP 库DIRAC,用于速度和音高操作。我没有深入研究它,但您可能会发现它很有用。

【讨论】:

【参考方案3】:

如果您想要的只是操作系统处理量最少的样本,您可能需要音频队列 API;见Audio Queue Services Programming Guide。

AVAudioRecorder 专为录制到文件而设计,而 AudioUnit 更适合“可插拔”音频处理(在 Mac 方面,AU Lab 实际上非常酷)。

【讨论】:

以上是关于如何实时收听麦克风输入并进行分析?的主要内容,如果未能解决你的问题,请参考以下文章

如何捕获麦克风缓冲区原始数据? [关闭]

如何使用openAL将实时音频输入从麦克风录制到文件中? (里面有C++代码)

处理来自移动麦克风的音频输入而不将其保存到文件中

接收麦克风输入和处理

如何在不录制的情况下在 Android 上对麦克风进行采样以获得实时幅度/电平?

如何在 MATLAB 中收听麦克风?