📅  最后修改于: 2023-12-03 14:46:18.683000             🧑  作者: Mango
WAV 是常用的音频文件格式之一,很多情况下我们需要读取该格式文件的元数据,比如音频时长、采样率、声道数等等。下面介绍如何使用 Python 读取 WAV 文件的元数据。
wave
库!pip install wave
import wave
# 打开 WAV 文件
with wave.open('audio.wav', 'r') as f:
# 读取文件属性
file_params = f.getparams()
# 读取音频数据
frames = f.readframes(file_params[3])
这一步中,我们使用 wave
库的 open
方法打开 WAV 文件,并读取文件属性(file_params
)和音频数据(frames
)。
# 解析文件属性
nchannels, sampwidth, framerate, nframes = file_params[:4]
文件属性中包含四个字段:声道数、每个采样位数(字节数)、采样率、总采样点数。我们利用序列解包语法将这些字段值分别赋给变量 nchannels
、sampwidth
、framerate
、nframes
。
# 计算音频时长
duration = nframes / float(framerate)
音频时长等于总采样点数除以采样率,单位是秒。
# 打印元数据
print("声道数: ", nchannels)
print("采样位数(字节数): ", sampwidth)
print("采样率: ", framerate)
print("总采样点数: ", nframes)
print("音频时长: ", duration, "秒")
至此,我们已经成功读取 WAV 文件的元数据,其中 print
语句输出了这些元数据的值。
import wave
# 打开 WAV 文件
with wave.open('audio.wav', 'r') as f:
# 读取文件属性
file_params = f.getparams()
# 读取音频数据
frames = f.readframes(file_params[3])
# 解析文件属性
nchannels, sampwidth, framerate, nframes = file_params[:4]
# 计算音频时长
duration = nframes / float(framerate)
# 打印元数据
print("声道数: ", nchannels)
print("采样位数(字节数): ", sampwidth)
print("采样率: ", framerate)
print("总采样点数: ", nframes)
print("音频时长: ", duration, "秒")
该代码示例会输出如下结果:
声道数: 2
采样位数(字节数): 2
采样率: 44100
总采样点数: 123456
音频时长: 2.8 秒
Python 中的 wave
库提供了读取 WAV 文件元数据的方法,通过上述代码示例,我们学习了如何读取 WAV 文件的声道数、采样位数、采样率、总采样点数和音频时长,这些元数据可以帮助我们更好地理解和处理音频数据。