快速音频波形可视化

时间:2016-07-07 22:10:25

标签: ios swift audio

这是一个两部分问题:

使用AVAudioRecorder可以让波形实时响应传入的音频,类似于激活iphone上的siri时发生的情况。也许使用averagePowerForChannel

另外,有没有办法收集录音的音频样本来渲染波形?

我知道存在novocaine,但我希望不使用框架。

1 个答案:

答案 0 :(得分:1)

单独使用AVAudioRecorder似乎不可能。

另一种方法是使用AVCaptureSessionAVCaptureAudioDataOutput来提供对原始音频缓冲区的访问,从中可以读取波形。

大多数处理都在委托中完成:

func captureOutput(AVCaptureOutput!, didOutputSampleBuffer: CMSampleBuffer!, from: AVCaptureConnection!)

您可能需要实施某种限制以仅处理每个第N个样本,以便您的可视化代码不会干扰音频。

AVCaptureSession相比,

AVAudioRecorder更为简陋 - 例如,它不提供任何录音设备,因此如果您还想录制音频,则需要使用{AVAssetWriter 1}}保存样本。

这个SO问题显示了如何访问样本缓冲区。它使用AVAssetReader加载文件,但委托与用于实时处理的委托完全相同: Reading audio samples via AVAssetReader