python 中的波形库:2 个通道和 2 个样本宽度

wave library in python: 2 channels and sample width of 2

我正在尝试将 .wav 文件转换为 numpy 数组。我使用 python 中的 wave 库使用 readframes() 将 .wav 文件转换为字节对象,然后使用 np.frombuffer().

将字节对象转换为 numpy 数组

我的 .wav 文件具有以下属性:

通道数:2 样品宽度:2 帧率:44100 帧数:4692480 压缩类型:NONE 压缩类型(人类可读的名称):未压缩

当我将它转换为 np 数组并检查形状时,我得到的形状为 18769920,是预期值 (4692480) 的 4 倍。我怀疑这是因为通道数(2)和样本宽度(2)。

我在下面包含了我的代码:

wave_read = wave.open('sample_jazz.wav', mode='rb')
frames = wave_read.readframes(wave_read.getnframes())
sound_arr = np.frombuffer(frames, dtype=np.uint8)

以下是问题(它们彼此非常相关)。

我最终使用了scipy.io.wavfile,使用起来非常方便。