Python pydub访问mp3文件中的采样率(Hz)和音频信号
刚刚发现了这个有趣的python包pydub,它可以将任何音频文件转换为mp3、wav等 就我所阅读的文件而言,流程如下:Python pydub访问mp3文件中的采样率(Hz)和音频信号,python,audio,mp3,wav,pydub,Python,Audio,Mp3,Wav,Pydub,刚刚发现了这个有趣的python包pydub,它可以将任何音频文件转换为mp3、wav等 就我所阅读的文件而言,流程如下: 使用from_mp3()读取mp3音频文件 使用export()创建wav文件 只是好奇是否有一种方法可以直接从mp3文件访问采样率和音频信号(假设是单声道的,则为一维阵列),而无需将其转换为wav文件。我正在处理数千个音频文件,将它们全部转换为wav文件可能会很昂贵。如果您对文件的实际音频内容不感兴趣,您可以使用pydub.utils.mediainfo(): 它使用av
只是好奇是否有一种方法可以直接从mp3文件访问采样率和音频信号(假设是单声道的,则为一维阵列),而无需将其转换为wav文件。我正在处理数千个音频文件,将它们全部转换为wav文件可能会很昂贵。如果您对文件的实际音频内容不感兴趣,您可以使用
pydub.utils.mediainfo()
:
它使用avlib的avprobe
实用程序,并返回各种信息。我建议试一试:)
应该比使用音频片段打开每个mp3要快得多。除了采样率和识别文件是单声道还是立体声之外,我还想以数组的形式获取音频内容。我该怎么做?@bnopaul如果不解码mp3,就无法访问音频数据–您必须使用
AudioSegment.from_mp3(…)
来获取音频数据。原始数据是AudioSegment
实例的一个属性,如my_audio_segment.\u data
在我的例子中,audio.\u data返回一个由空字符组成的长字符串“/x00”这是一个bytestring-大多数音频以大量零开始(开始时静音)-如果您想要一个数字数组,您可以非常轻松地转换它(以下是我在EQ过滤器中执行此操作的示例:)
>>> from pydub.utils import mediainfo
>>> info = mediainfo("/path/to/file.mp3")
>>> print info['sample_rate']
44100
>>> print info['channels']
1