如何在 python 中逐块读取波形文件(与 numpy 数组兼容)?

How to read a wave file block by block in python (compatible with numpy array)?

我不想加载整个波形文件,而是想在 python 中逐块读取波形文件(与 numpy 数组兼容)。也就是说,一次只有一部分 wave 文件被加载到 numpy 数组中。我知道 scipy.io.wavfile.read(somefile) 和 scikits.audiolab.wavread(filename)。但他们不支持分块。加载整个波形文件。问题是当wave文件很大时,会占用大量内存。

试试 PySoundFile 怎么样? 根据 site:

声音文件也可以在短的、可选的重叠块中读取。例如,计算长文件每个块的信号电平:

import numpy as np
import soundfile as sf

rms = [np.sqrt(np.mean(block**2)) for block in
sf.blocks('myfile.wav', blocksize=1024, overlap=512)]

希望对您有所帮助。