读取音频文件,执行过滤器(即混响),然后在 iOS 上写入不播放的音频文件

Read audio file, perform filters (i.e. reverb), and then write audio file without playback on iOS

我正在开发一个应用程序,该应用程序需要 运行 对文件进行一些基本的音频过滤器(例如规范化和混响)。这个想法是获取一个现有的音频文件,添加过滤器,然后将数据写入一个新文件。至关重要的是,这必须在没有任何播放的情况下完成并且应该很快(即在 60 秒的音频文件上我应该能够在一秒钟内添加混响)。

我看过几个解决方案,例如 The Amazing Audio Engine 和 AudioBox,但这些解决方案似乎都依赖于您实时播放任何音频而不是将其写入文件。

有没有人有例子,或者能给我指出正确的方向,简单地获取一个文件并应用一个基本的音频过滤器而不用听它。我确定我一定在某处遗漏了一些简单的东西,但我的搜索没有找到任何结果。

一般来说,步骤是:

  1. 像这样设置 AUGraph - AudioFilePlayer -> Reverb/Limiter/EQ/etc。 -> 通用输出
  2. 打开输入文件并将其安排在 AudioFilePlayer 上。
  3. 创建一个输出文件并在 GenericOutput 单元上重复调用 AudioUnitRender,将渲染缓冲区写入输出文件。

我不确定这个速度,但应该可以接受。

this thread 中有一个离线渲染的综合示例,涵盖了设置和渲染过程。