我一直想玩音频解析已有一段时间了,但是我还没有真正能够找到想要做的正确的库。
我基本上只是想解析声音文件,并在歌曲播放过程中的某些时间(例如,每10毫秒左右)获取振幅/频率和其他相关信息,因此我可以对数据进行图表处理,例如歌曲的速度大大提高以及它真的很大声。
我已经看过OpenAL了很多,但是它看起来不像它提供的这种功能,除了我没有足够的运气去寻找从哪里开始。如果有人这样做或使用可以做到这一点的库,将不胜感激。谢谢!
最佳答案
对于解析和解码音频文件,我使用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是一个出色的可视化工具,由于它是开源的,因此您可以在其中构建自己的测试。
祝好运!
关于c++ - 按时间间隔分析音频数据的属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7357136/