在我开始一个小项目之前,我正在寻找关于mp3格式的一些一般性建议,以确保我没有疯狂追逐.
我对mp3格式内部的理解很少.理想情况下,我正在寻找一个可以抽象出这些细节的库.我更喜欢使用Python(但可以说服不然).
我想以一种相当简单的方式修改一组mp3文件.我对ID3标签不是很感兴趣,而是对音频本身感兴趣.我希望能够删除部分(例如,从第3分钟开始减少10秒),并插入部分(例如,将信用添加到结尾.)
我的理解是mp3格式是有损的,因此将其解码为(例如)PCM格式,进行修改,然后再将其编码为MP3将降低音频质量.(我很想听到我说错了.)
我猜想如果我保持mp3格式,将会有某种最小帧或数据包大小来处理,因此操作的粒度可能更粗糙.只要我在几秒钟内获得准确度,我就可以忍受.
我看过PyMedia,但它需要我迁移到PCM来处理数据.同样,LAME希望帮助我编码,但不能访问数据.我见过其他几个只处理ID3标签的库.
任何人都可以推荐一个Python MP3库吗?另外,你能不能理解我的假设,那就是去PCM和背部是坏的和可以避免的?
如果你想做低级别的事情,请使用pymad.它将MP3转换为样本数据的缓冲区.
如果你想要一些更高级别的东西,请使用Echo Nest Remix API(披露:我为我的dayjob写了部分内容).它包括一些例子.如果你看一下牛铃的例子(即MoreCowbell.dj),你会看到pymad的一个分支,让你一NumPy的阵列,而不是一个缓冲区.该数据类型可以更容易地切出部分并对它们进行数学运算.
我得到了三个高质量的答案,我感谢你们所有人(并为所有人提供了支持).我没有选择任何可接受的答案,因为每个都解决了一个方面,所以我想写一个总结.
你需要在MP3工作吗?
转码为PCM并返回MP3不太可能导致质量下降.
不要过早地优化音频质量; 用一个简单的原型测试它并听取它.
使用MP3
维基百科有MP3文件格式的摘要.
MP3帧很短(1152个样本,或者只有几毫秒),允许在该级别获得中等精度.
但是,维基百科警告说"帧不是独立的项目("字节库"),因此不能在任意帧边界上提取."
如果我真的想避免解码,现有的库不太可能有用.
在PCM工作
这个级别有几个库:
LAME(最新发布:2017年10月)
PyMedia(最新发布:2006年2月)
PyMad(仅限Linux?仅解码器?最新版本:2007年1月)
在更高层次上工作
Echo Nest Remix API (目前仅限Mac或Linux)是支持非常复杂操作的Web服务的API(例如,查找音乐节拍和节奏的位置等)
mp3DirectCut(仅限Windows)是一个显然执行我想要的操作的GUI,但是作为一个应用程序.它不是开源的.(我试图运行它,得到一个Access Denied安装程序错误,并没有跟进.一个GUI不适合我,因为我想在不断变化的文件库上重复运行这些操作.)
我的计划现在是从PyMedia开始,使用PCM.谢谢大家的帮助.