嗨,不幸的是,我无法弄清iPhone上的音频。我接近的最好的是AVAudioRecorder / Player类,我知道它们对音频处理并不好。
所以我想知道是否有人能够向我解释如何以1024个样本的块来“聆听”iPhone的麦克风输入,分析样本并做些事情。并继续这样,直到我的应用程序终止或告诉它停止。我不打算保存任何数据,我想要的是实时分析数据并实时处理数据。
我试图尝试理解苹果“aurioTouch”的例子,但这对我来说太复杂了。
那么有人可以向我解释我应该如何解决这个问题吗?
答案 0 :(得分:12)
如果您想实时分析音频输入,它不会比Apple的aurioTouch iOS sample app with source code(还有a mirror site)简单得多。您可以更多地了解使用音频单元RemoteIO API进行录制,但您仍需要弄清楚DSP部分的实时分析。
音频队列API稍微简单一些,可以从麦克风获取原始PCM音频数据的输入缓冲区,但不是更简单,而且延迟时间更长。
稍后添加:此处还有一个版本的aurioTouch转换为Swift:https://github.com/ooper-shlab/aurioTouch2.0-Swift
答案 1 :(得分:2)
如果您想进行任何实时音频处理,AVAudioPlayer / Recorder类将不会带您到那里。音频工具箱和音频单元框架是可行的方法。查看here以获取Apple的音频编程指南,了解哪个框架适合您的需要。相信我,这些低级别的东西并不容易,而且记录很少。 CocoaDev有一些tutorials,您可以在其中找到示例代码。此外,还有一个音频DSP库DIRAC我最近发现了速度和音调操作。我没有多看,但你可能会发现它很有用。
答案 2 :(得分:1)
如果你想要的只是操作系统处理量最少的样本,你可能需要音频队列API;见Audio Queue Services Programming Guide。
AVAudioRecorder专为录制文件而设计,AudioUnit更适用于“可插拔”音频处理(在Mac方面,AU实际上非常酷)。