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

时间:2015-08-17 18:13:08

标签: python numpy scipy scikits

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

1 个答案:

答案 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)]

我希望这会有所帮助。