我不想加载整个wave文件,而是想在python中逐块读取wave文件(与numpy数组兼容)。也就是说,一次只将一部分波形文件加载到numpy数组中。我知道scipy.io.wavfile.read(somefile)和scikits.audiolab.wavread(filename)。但他们不支持blockwise。已加载整个wavefile。问题是当波形文件非常大时,会使用大量内存。
答案 0 :(得分:0)
尝试使用PySoundFile怎么样? 根据{{3}}:
声音文件也可以简单读取,可选择重叠的块。例如,这会计算长文件的每个块的信号级别:
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)]
我希望这会有所帮助。