pydub 从 mp3 文件访问采样率 (Hz) 和音频信号
pydub accessing the sampling rate(Hz) and the audio signal from an mp3 file
刚发现这个有趣的 python 包 pydub,它可以将任何音频文件转换为 mp3、wav 等
据我阅读其文档,其过程如下:
- 使用 from_mp3()
读取 mp3 音频文件
- 使用 export() 创建一个 wav 文件。
只是好奇是否有一种方法可以直接从 mp3 文件访问采样率和音频信号(一维数组,假设它是单声道)而不将其转换为 wav 文件。我正在处理数千个音频文件,将它们全部转换为 wav 文件可能会很昂贵。
如果您对文件的实际音频内容不感兴趣,您可以使用 pydub.utils.mediainfo()
:
>>> from pydub.utils import mediainfo
>>> info = mediainfo("/path/to/file.mp3")
>>> print info['sample_rate']
44100
>>> print info['channels']
1
这使用了 avlib 的 avprobe
实用程序和 returns 各种信息。我建议试一试 :)
应该比使用 AudioSegment.from_mp3(…)
打开每个 mp3 快 多
frame_rate表示sample_rate,所以可以像下面这样得到;
from pydub import AudioSegment
filename = "hoge.wav"
myaudio = AudioSegment.from_file(filename)
print(myaudio.frame_rate)
刚发现这个有趣的 python 包 pydub,它可以将任何音频文件转换为 mp3、wav 等
据我阅读其文档,其过程如下:
- 使用 from_mp3() 读取 mp3 音频文件
- 使用 export() 创建一个 wav 文件。
只是好奇是否有一种方法可以直接从 mp3 文件访问采样率和音频信号(一维数组,假设它是单声道)而不将其转换为 wav 文件。我正在处理数千个音频文件,将它们全部转换为 wav 文件可能会很昂贵。
如果您对文件的实际音频内容不感兴趣,您可以使用 pydub.utils.mediainfo()
:
>>> from pydub.utils import mediainfo
>>> info = mediainfo("/path/to/file.mp3")
>>> print info['sample_rate']
44100
>>> print info['channels']
1
这使用了 avlib 的 avprobe
实用程序和 returns 各种信息。我建议试一试 :)
应该比使用 AudioSegment.from_mp3(…)
frame_rate表示sample_rate,所以可以像下面这样得到;
from pydub import AudioSegment
filename = "hoge.wav"
myaudio = AudioSegment.from_file(filename)
print(myaudio.frame_rate)