1

我想要完成的基本上如下:

  1. 打开一个文件,根据它的持续时间确定我需要多少“样本”
  2. 将文件分成 x 个样本;确定每个样本的(平均)功率电平/幅度。
  3. 使用这些样本值,继续绘制代表音频的波形(也许遵循这些指南

我花了大约三天时间,仔细搜索在线论坛、书籍和 API,但无济于事。我被困在最关键的一步 -> 确定音频块(缓冲区)的功率水平。

在阅读了大部分即将出版的Core Audio 书籍之后,我已经对 AudioQueues、Audio Units 以及在某种程度上 - OpenAL 的低级环境感到满意。但是,我看到的所有示例和解释(在本书和网络上的其他地方)都涉及在播放或录制音频文件时(即实时)确定功率电平值。

然而,我的目的是快速有效地确定磁盘上给定文件的这些值,而无需实时回放。任何关于我需要查看哪些库、功能的指导将不胜感激。

谢谢。

4

2 回答 2

1

有几种方法可以实现这一目标。您可以将整个文件读入内存,然后应用分析。或者读取文件的块并使用 AudioFile.h 中的 AudioFileReadPackets(...) 获取每个块的平均级别。

于 2011-08-07T13:38:18.387 回答
0

你卡在哪一部分?我还没有玩过读取或写入文件,所以其他人可以在这方面帮助你。但就实际处理音频流而言,您将需要使用加速框架。这包含用于获取所需数据的功能。为了获得功率水平,我不确定您是否需要先对信号进行 FFT。

如果你这样做,我已经写了一个冗长的答案Using the Apple FFT and Accelerate Framework 关于如何使用加速框架进行 FFT。

我记得查看了函数列表——有一些函数可以找到信号中的峰值和平均功率。您可能希望将音频信号作为一堆浮点数读取,以便使用这些功能。

于 2011-08-07T13:54:03.973 回答