1
你好,stackoverflow用户,
目前我面临以下问题,我有一个函数来打开一个.wav文件,它返回采样率,长度和样本。我已经尝试过它将小文件,它的工作完美,现在我正试图加载1GB的WAV文件,它返回我“MemoryError被用户代码未处理”窗口。 这里是我的功能:打开1GB波形文件导致内存错误
def OpenWavFile(fileName):
waveFile = wave.open(fileName, 'r')
sampFreq = waveFile.getframerate()
length = waveFile.getnframes()
byteList = np.fromstring(waveFile.readframes(length), dtype = np.int16)
return sampFreq, length, byteList
我与断点尝试过了,我注意到,长度变量的值是472289280,在int
范围内最适合自己的。我已经在这个位置dtype = np.int16
尝试过这个功能,有不同的类型。
numpy有没有限制?或者问题在哪里?
我的笔记本电脑的内存大小是8Gb。
您是否尝试过的语法'开放的(文件名,“R” )作为wavefile:...'? –
你有没有发现异常并检查了它? https://docs.python.org/2/library/exceptions.html#exceptions.MemoryError – Attie
你如何在内部存储音频样本?如果它们不是以原始二进制格式存储的,则可以大大增加使用的成员数量。 – pcarter