问题 如何实时听麦克风输入和分析?


嗨,不幸的是,我无法弄清楚iPhone上的音频。我接近的最好的是AVAudioRecorder / Player类,我知道它们对音频处理并不好。

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

我试图尝试理解苹果“aurioTouch”的例子,但这对我来说太复杂了。

那么有人可以向我解释我应该如何解决这个问题吗?


8228
2017-11-21 17:06


起源



答案:


如果你想实时分析音频输入,它并不比苹果公司简单得多 带有源代码的aurioTouch iOS示例应用程序 (还有 一个镜像站点)。您可以更多地了解使用音频单元RemoteIO API进行录制,但您仍需要弄清楚DSP部分的实时分析。

音频队列API稍微简单一些,可以从麦克风获取原始PCM音频数据的输入缓冲区,但不是更简单,并且它具有更高的延迟。

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


11
2017-11-21 21:31



它确实变得更简单,我建议你使用 奴佛卡因 和 NVDSP (我是后者的作者) - bartolsthoorn
这个答案中的链接现在已经破了。 - Dave Mackintosh
我已经更新了链接 - Bobrovsky
@bartolsthoorn你会更新现代iOS和OSX的代码???它看起来像一个惊人的项目,但我不能用它与iOS 9 :( - Will Brickner
@WillBrickner这些天我不是真正进入iOS,但具体是什么不相容? NVDSP是一个非常小的项目,所以我想更新不应该太多,但我现在的时间非常短。 - bartolsthoorn


答案:


如果你想实时分析音频输入,它并不比苹果公司简单得多 带有源代码的aurioTouch iOS示例应用程序 (还有 一个镜像站点)。您可以更多地了解使用音频单元RemoteIO API进行录制,但您仍需要弄清楚DSP部分的实时分析。

音频队列API稍微简单一些,可以从麦克风获取原始PCM音频数据的输入缓冲区,但不是更简单,并且它具有更高的延迟。

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


11
2017-11-21 21:31



它确实变得更简单,我建议你使用 奴佛卡因 和 NVDSP (我是后者的作者) - bartolsthoorn
这个答案中的链接现在已经破了。 - Dave Mackintosh
我已经更新了链接 - Bobrovsky
@bartolsthoorn你会更新现代iOS和OSX的代码???它看起来像一个惊人的项目,但我不能用它与iOS 9 :( - Will Brickner
@WillBrickner这些天我不是真正进入iOS,但具体是什么不相容? NVDSP是一个非常小的项目,所以我想更新不应该太多,但我现在的时间非常短。 - bartolsthoorn


如果您想进行任何实时音频处理,AVAudioPlayer / Recorder类将不会带您到那里。音频工具箱和音频单元框架是可行的方法。检查 这里 对于Apple的音频编程指南,看看哪个框架适合您的需要。相信我,这些低级别的东西并不容易,而且记录很少。 CocoaDev有一些 教程 在哪里可以找到示例代码。此外,还有一个音频DSP库 狄拉克 我最近发现了节奏和音调操纵。我没有仔细研究过,但你可能会发现它很有用。


2
2017-11-21 19:23





如果你想要的只是操作系统处理量最少的样本,你可能需要Audio Queue API;看到 音频队列服务编程指南

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


1
2017-11-21 18:03