📜  python 读取 wav 元数据 - Python (1)

📅  最后修改于: 2023-12-03 14:46:18.683000             🧑  作者: Mango

Python 读取 wav 元数据

WAV 是常用的音频文件格式之一,很多情况下我们需要读取该格式文件的元数据,比如音频时长、采样率、声道数等等。下面介绍如何使用 Python 读取 WAV 文件的元数据。

步骤
  1. 安装 wave
!pip install wave
  1. 打开 WAV 文件
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)。

  1. 解析文件属性
# 解析文件属性
nchannels, sampwidth, framerate, nframes = file_params[:4]

文件属性中包含四个字段:声道数、每个采样位数(字节数)、采样率、总采样点数。我们利用序列解包语法将这些字段值分别赋给变量 nchannelssampwidthframeratenframes

  1. 计算音频时长
# 计算音频时长
duration = nframes / float(framerate)

音频时长等于总采样点数除以采样率,单位是秒。

  1. 打印元数据
# 打印元数据
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 文件的声道数、采样位数、采样率、总采样点数和音频时长,这些元数据可以帮助我们更好地理解和处理音频数据。