以时间间隔分析属性的音频数据

Posted

技术标签:

【中文标题】以时间间隔分析属性的音频数据【英文标题】:Analysing audio data for attributes at time intervals 【发布时间】:2011-09-09 04:23:36 【问题描述】:

我一直想玩音频解析有一段时间了,但我真的无法找到适合我想要做的事情的库。

我基本上只是想解析一个声音文件并在歌曲的特定时间(比如每 10 毫秒左右)获取振幅/频率和其他相关信息,以便我可以绘制数据,例如歌曲加速的地方很多,它变得非常响亮。

我已经看过很多 OpenAL,但它看起来并没有提供这种能力,除了我没有找到从哪里开始的运气。如果有人这样做或使用了可以做到这一点的库,那么我们将不胜感激。谢谢!

【问题讨论】:

注意:这个问题将在关于信号处理的讲座中结束。我不给,我没有资格。 @Chris 你是什么意思? 您询问将数字(量化)音频源转换为有意义的东西(例如找到歌曲加速的位置),这本身就是一个完整的研究领域。 @Chris 啊,好吧,我想我知道这是怎么回事了。所以它在很大程度上是解析一个表示 Hz 值的二进制数据流或一些东西来找到隐含的数据,如频率和幅度? 请注意,现在有一个 信号处理 StackExchange 站点,可能会更好地提出这个问题:dsp.stackexchange.com 【参考方案1】:

对于解析和解码音频文件,我使用libsndfile 获得了不错的结果,它在 Windows/OSX/Linux 上运行并且是开源的(LGPL 许可)。该库不支持 mp3(作者希望避免许可问题),但它确实支持 FLAC 和 Ogg/Vorbis。

如果使用封闭源代码库对您来说不是问题,那么一个有趣的选项可能是来自 Apple 的 Quicktime SDK。此 SDK 适用于 OSX 和 Windows,注册开发人员免费(您也可以免费注册为 Apple 开发人员)。使用 QT SDK,您可以解析 Quicktime Player 支持的所有文件格式,包括 .mp3。 SDK 让您可以访问 QuickTime 安装的所有编解码器,因此您可以读取 .mp3 文件并将它们即时解码为 PCM。请注意,要使用此 SDK,您必须安装免费的 QuickTime Player。

至于信号处理库,老实说,我不能推荐任何,因为我已经编写了自己的函数(用于语音识别,如果你好奇的话)。 this page 中列出了一些看起来很有趣的开源项目。

我建议您从简单开始,例如分析幅度数据,这些数据可以从 PCM 样本中轻松获得,而无需进行任何处理。能够可视化数据非常有用,我发现Audacity 是一个出色的可视化工具,而且由于它是开源的,您可以在其中构建自己的测试。

祝你好运!

【讨论】:

以上是关于以时间间隔分析属性的音频数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 5 中使用 AV 音频播放器在特定时间间隔内快进或快退音频(如歌曲)?

如何获取音频块以在核心音频或 AVFoundation 中进行分析

音频帧大小计算

使用 Swift 分析录制的音频文件以将语音转换为文本

Android不从间隔播放html5音频

C ++中的Linux音频捕获